diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..0b06fb59 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,19 @@ +coverage: + status: + patch: # 只检查变更部分的覆盖率 + default: + target: 85% # 变更代码的覆盖率目标 + threshold: 2% # 允许的浮动范围 + base: auto # 基于当前分支的覆盖率 + + # 忽略特定路径 + ignore: + - "tests/**/*" # 忽略所有测试目录 + - "**/__pycache__/**/*" # 忽略缓存文件 + - "**/__init__.py" # 忽略初始化文件 + +# 可选:调整报告显示 +comment: + layout: "reach, diff, flags, files" + behavior: default + require_changes: false diff --git a/.github/workflows/pr_stage_test.yml b/.github/workflows/pr_stage_test.yml index 826817fa..2ffb5035 100644 --- a/.github/workflows/pr_stage_test.yml +++ b/.github/workflows/pr_stage_test.yml @@ -24,11 +24,11 @@ jobs: pr_ut_test: runs-on: ubuntu-latest env: - LLM_WEB_KIT_CFG_PATH: ${{ github.workspace }}/llm_web_kit/pipeline/pipe_tpl/pipeline_html_tpl.jsonc + LLM_WEB_KIT_CFG_PATH: ${{ github.workspace }}/bench/config/ours_config.jsonc PYTHONPATH: $PYTHONPATH:${{ github.workspace }} strategy: matrix: - python-version: [3.10.15] + python-version: [3.10.16] steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/pr_ut_test_extra.yml b/.github/workflows/pr_ut_test_extra.yml new file mode 100644 index 00000000..95b1582c --- /dev/null +++ b/.github/workflows/pr_ut_test_extra.yml @@ -0,0 +1,47 @@ +name: pr_stage_ut_extra + +on: + pull_request: + paths: + - 'requirements/**' + - 'setup.py' + push: + branches: + - main + - dev + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + # 额外的 Python 版本测试,只在 requirements 目录有修改时运行 + pr_ut_test_extra: + runs-on: ubuntu-latest + env: + LLM_WEB_KIT_CFG_PATH: ${{ github.workspace }}/bench/config/ours_config.jsonc + PYTHONPATH: $PYTHONPATH:${{ github.workspace }} + strategy: + matrix: + python-version: [3.11.11, 3.12.8] + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Build llm_web_kit from source + run: | + pip install -e . + pip list | grep llm_web_kit + - name: Install unit tests dependencies + run: | + pip install -r requirements/runtime.txt + pip install -r requirements/dev.txt + - name: Run tests and collect coverage + run: pytest --cov --cov-report=xml -n auto ./tests/llm_web_kit + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore index 5d5d6972..f5183022 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ venv*/ envs/ slurm_logs/ +local_tests/ __pycache__ *.log @@ -45,3 +46,5 @@ output/ coverage.xml llm_web_kit.egg-info/* +.llm-web-kit.jsonc +.llm-web-kit-pageclassify.jsonc diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8727daa6..58a529da 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,11 +1,11 @@ -exclude: ^tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/ +exclude: ^tests/llm_web_kit/extractor/html/magic_html/assets/ repos: - repo: https://github.com/PyCQA/flake8 rev: 5.0.4 hooks: - id: flake8 - args: [ "--max-line-length=2200", "--ignore=E131,E125,W503,W504,E203,E231,E702" ] + args: [ "--max-line-length=2200", "--ignore=E131,E125,W503,W504,E203,E231,E702,E128" ] - repo: https://github.com/PyCQA/isort rev: 5.11.5 hooks: @@ -19,19 +19,19 @@ repos: # rev: v2.2.1 # hooks: # - id: codespell - # exclude: '^tests/.*/assets/' + # exclude: '^tests/.*/assets/|llm_web_kit/model/assets/.*' # args: ['--skip', '*.json'] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.3.0 hooks: - id: trailing-whitespace - exclude: '^tests/.*/assets/' + exclude: '^tests/.*/assets/|llm_web_kit/model/assets/.*' - id: check-yaml - id: end-of-file-fixer - exclude: '^tests/.*/assets/' + exclude: '^tests/.*/assets/|llm_web_kit/model/assets/.*' - id: requirements-txt-fixer - id: double-quote-string-fixer - exclude: '^tests/.*/assets/' + exclude: '^tests/.*/assets/|llm_web_kit/model/assets/.*' - id: check-merge-conflict - id: fix-encoding-pragma args: [ "--remove" ] @@ -46,7 +46,7 @@ repos: - mdformat-openmmlab - mdformat_frontmatter - linkify-it-py - exclude: '^tests/.*/assets/' + exclude: '^tests/.*/assets/|llm_web_kit/model/assets/.*' - repo: https://github.com/myint/docformatter rev: v1.3.1 hooks: diff --git a/README.md b/README.md index 53b1f449..cb24d1d2 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,26 @@ llm-web-kit is a python library that .. ## Quick Start +```python +from llm_web_kit.simple import extract_html_to_md +import traceback +from loguru import logger + +def extract(url:str, html:str) -> str: + try: + nlp_md = extract_html_to_md(url, html) + # or mm_nlp_md = extract_html_to_mm_md(url, html) + return nlp_md + except Exception as e: + logger.exception(e) + return None + +if __name__=="__main__": + url = "" + html = "" + markdown = extract(url, html) +``` + ## Usage # TODO diff --git a/bench/Bench.md b/bench/Bench.md index 522279e3..4788db6a 100644 --- a/bench/Bench.md +++ b/bench/Bench.md @@ -4,22 +4,65 @@ # 目录结构 +- `bench/config/data_config.jsonl`: 数据处理配置文件 +- `bench/config/ours_config.jsonc`: 提取器配置文件 +- `bench/eval/`: 不同评估工具的实现 +- `bench/common/`: 通用评估工具和指标计算 +- `bench/output/`: 评测结果输出目录 + 数据集:原始网页数据在`bench/data/origin`目录下,GT默认保存在`bench/data/groundtruth`目录下。 -评测结果:评测结果默认保存在`bench/output`目录下日期+随机数的文件夹中,如`20250212_113509_5bbf75c0`。 +评测结果:评测结果默认保存在`bench/output/{task_id}`目录下,其中`task_id`为UUID形式,如`5bbf7c8c-e8f2-11ef-a5a8-acde48001122`。 # 使用方法 +## 命令行参数 + +```bash +python bench/run.py [--input INPUT_PATH] [--output OUTPUT_PATH] [--tool {ours,magic_html,unstructured}] +``` + +参数说明: + +- `--input`: 指定HTML文件路径 +- `--output`: 指定输出结果保存路径 +- `--tool`: 选择使用的提取工具,可选值: + - `ours`: 使用本项目提供的提取工具(默认) + - `magic_html`: 使用magic_html工具进行评估 + - `unstructured`: 使用unstructured工具进行评估 + +## 运行示例 + +1. 使用默认提取器运行评估: + +```bash +python bench/run.py +``` + +2. 使用其他提取器进行对比: + +```bash +python bench/run.py --tool magic_html ``` -python run.py + +3. 指定输入和输出路径: + +```bash +python bench/run.py --input path/to/input.html --output path/to/output ``` # 评估报告及评估指标 每一个评测结果包含`summary.json`和`detail.json`两个文件,`summary.json`是整个评测集的汇总结果,`detail.json`是单个网页的详细结果。 +主要评估指标包括: + +- `type_acc`: 元素类型识别准确率 +- `content_acc`: 元素内容识别准确率 +- 各种元素类型的识别统计 + # 评估报告示例 -`summary.json`主要展示所有评测数据“评测指标”,“评测耗时”的整体和元素级别的结果: +`summary.json`主要展示所有评测数据"评测指标","评测耗时"的整体和元素级别的结果: ```json { @@ -52,7 +95,7 @@ python run.py } ``` -`detail.json`主要展示每个评测数据“评测指标”,“评测耗时”等元素级别的结果详情,方便分析哪一个网页的哪一个元素抽取效果不好: +`detail.json`主要展示每个评测数据"评测指标","评测耗时"等元素级别的结果详情,方便分析哪一个网页的哪一个元素抽取效果不好: ```json { @@ -96,6 +139,60 @@ python run.py } ``` +# 输出文件格式 + +评估结果将保存在指定的输出目录中,针对不同工具的输出格式如下: + +## `ours`工具输出 + +输出为JSONL格式,每行是一个JSON对象,包含以下字段: + +- `url`: 原始网页URL +- `content`: 提取的内容 +- `main_html`: 提取的主要HTML内容 +- `content_list`: 提取的内容列表 +- `html`: 原始HTML +- `statics`: 统计信息 + +## `magic_html`和`unstructured`工具输出 + +输出为JSONL格式,每行是一个JSON对象,包含以下字段: + +- `url`: 原始网页URL +- `content`: 提取的内容 +- `html`: 原始HTML + +# 故障排除 + +## 常见问题 + +1. 文件路径问题 + + 如果遇到文件路径相关错误,请检查: + + - 配置文件中的路径是否正确 + - 文件路径是否存在 + - 是否有足够的权限读写相关目录 + +2. 编码问题 + + 对于包含XML声明的HTML文件,系统会自动进行转换处理。如果遇到编码相关错误,可以: + + - 确保HTML文件使用UTF-8编码 + - 检查XML声明是否正确格式化 + +3. 结果输出问题 + + 若输出目录创建失败或结果无法写入: + + - 检查目标目录的写入权限 + - 确保磁盘空间足够 + # 如何新增评估数据 评测数据集会根据`pipeline`的功能迭代新增数据,如何快速构建新增数据的`groundtruth`按照下面方法: + +1. 准备原始HTML文件,放入`bench/data/origin`目录下 +2. 在`bench/config/data_config.jsonl`中添加新的测试数据条目 +3. 运行评估工具生成初步结果 +4. 人工审核并修正结果作为groundtruth,放入`bench/data/groundtruth`目录 diff --git a/bench/config/data_config.jsonl b/bench/config/data_config.jsonl new file mode 100644 index 00000000..bebb35a7 --- /dev/null +++ b/bench/config/data_config.jsonl @@ -0,0 +1,51 @@ +{"track_id": "code_1", "dataset_name": "eval_pipeline_suit", "url": "https://stackoverflow.com/questions/18327314/how-to-allow-http-content-within-an-iframe-on-a-https-site", "data_source_category": "HTML", "path":"data/origin/code_1.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_2", "dataset_name": "eval_pipeline_suit", "url": "https://www.rdocumentation.org/packages/sparklyr/versions/0.8.0/topics/ft_one_hot_encoder", "data_source_category": "HTML", "path":"data/origin/code_2.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_3", "dataset_name": "eval_pipeline_suit", "url": "https://uk.mathworks.com/help/fixedpoint/ug/single-precision-conversion-verification-best-practices.html", "data_source_category": "HTML", "path":"data/origin/code_3.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_4", "dataset_name": "eval_pipeline_suit", "url": "https://www.geeksforgeeks.org/using-ordereddict-python-check-order-characters-string/", "data_source_category": "HTML", "path":"data/origin/code_4.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_5", "dataset_name": "eval_pipeline_suit", "url": "https://source.android.com/reference/tradefed/com/android/tradefed/result/suite/XmlSuiteResultFormatter?hl=zh-cn", "data_source_category": "HTML", "path":"data/origin/code_5.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_6", "dataset_name": "eval_pipeline_suit", "url": "https://supermarket.chef.io/cookbooks/chef-arkserver/versions/0.1.0", "data_source_category": "HTML", "path":"data/origin/code_6.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_7", "dataset_name": "eval_pipeline_suit", "url": "https://www.educba.com/python-exception-handling/?source=leftnav", "data_source_category": "HTML", "path":"data/origin/code_7.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_8", "dataset_name": "eval_pipeline_suit", "url": "https://kodyaz.com/sap-abap/sqlscript-locate-string-function-sample-code.aspx", "data_source_category": "HTML", "path":"data/origin/code_8.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_9", "dataset_name": "eval_pipeline_suit", "url": "https://www.mrexcel.com/board/threads/defining-range-with-set-keyword.642167/", "data_source_category": "HTML", "path":"data/origin/code_9.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_10", "dataset_name": "eval_pipeline_suit", "url": "https://www.php.net/manual/tr/function.preg-grep.php", "data_source_category": "HTML", "path":"data/origin/code_10.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_11", "dataset_name": "eval_pipeline_suit", "url": "https://www.telerik.com/forums/radcombobox-selectedindexchanged-inside-advanced-edit-template", "data_source_category": "HTML", "path":"data/origin/code_11.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_12", "dataset_name": "eval_pipeline_suit", "url": "https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module", "data_source_category": "HTML", "path":"data/origin/code_12.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_13", "dataset_name": "eval_pipeline_suit", "url": "https://learn.microsoft.com/zh-cn/visualstudio/debugger/quickstart-debug-with-cplusplus?view=vs-2022", "data_source_category": "HTML", "path":"data/origin/code_13.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_14", "dataset_name": "eval_pipeline_suit", "url": "https://juejin.cn/post/6844903960826888206", "data_source_category": "HTML", "path":"data/origin/code_14.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_15", "dataset_name": "eval_pipeline_suit", "url": "https://blog.51cto.com/u_15214399/5880761", "data_source_category": "HTML", "path":"data/origin/code_15.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_16", "dataset_name": "eval_pipeline_suit", "url": "https://www.cnblogs.com/xu-tao/p/16324793.html", "data_source_category": "HTML", "path":"data/origin/code_16.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_17_csdn", "dataset_name": "eval_pipeline_suit", "url": "https://blog.csdn.net/moon_sky1999/article/details/52744845", "data_source_category": "HTML", "path":"data/origin/code_17_csdn.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_18_csdn", "dataset_name": "eval_pipeline_suit", "url": "https://wenku.csdn.net/answer/4e4a79149fc949aa9b2550c138ecce92#buttons", "data_source_category": "HTML", "path":"data/origin/code_18_csdn.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_19_codecademy", "dataset_name": "eval_pipeline_suit", "url": "https://www.codecademy.com/learn/learn-swift-arrays-sets-and-dictionaries/modules/learn-swift-arrays/cheatsheet", "data_source_category": "HTML", "path":"data/origin/code_19_codecademy.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "code_20_dev_to", "dataset_name": "eval_pipeline_suit", "url": "https://dev.to/radzion/building-a-react-guitar-scale-visualizer-interactive-pentatonic-patterns-3hi6", "data_source_category": "HTML", "path":"data/origin/code_20_dev_to.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "img_1", "dataset_name": "eval_pipeline_suit", "url": "http://15.demooo.pl/produkt/okulary-ochronne/", "data_source_category": "HTML", "path":"data/origin/img_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "img_2", "dataset_name": "eval_pipeline_suit", "url": "https://www.terrasoleil.com/collections/bestsellers/products/luna-soleil-tarot-deck", "data_source_category": "HTML", "path":"data/origin/img_2.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "img_3", "dataset_name": "eval_pipeline_suit", "url": "https://villarichic.com/collections/dresses/products/dont-hang-up-faux-suede-shirt-dress1?variant=45860191863029", "data_source_category": "HTML", "path":"data/origin/img_3.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "img_4", "dataset_name": "eval_pipeline_suit", "url": "https://orenburg.shtaketniki.ru/evroshtaketnik-uzkij.html", "data_source_category": "HTML", "path":"data/origin/img_4.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "img_5", "dataset_name": "eval_pipeline_suit", "url": "https://bukoda.gov.ua/npas/pro-nadannia-zghody-na-podil-zemelnoi-dilianky-derzhavnoi-vlasnosti-chernivetskomu-fakhovomu-koledzhu-tekhnolohii-ta-dyzainu", "data_source_category": "HTML", "path":"data/origin/img_5.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_katex_latex_1", "dataset_name": "eval_pipeline_suit", "url": "https://uniteasy.com/solver/cubicequation/x%5E3%2B2x%5E2%2B8x%2B1%3D0/", "data_source_category": "HTML", "path":"data/origin/math_katex_latex_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_katex_latex_2", "dataset_name": "eval_pipeline_suit", "url": "https://github.com/KaTeX/KaTeX/tree/main/contrib/mathtex-script-type", "data_source_category": "HTML", "path":"data/origin/math_katex_latex_2.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_katex_latex_3", "dataset_name": "eval_pipeline_suit", "url": "https://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/3332/1/bc/b/2027/1/", "data_source_category": "HTML", "path":"data/origin/math_katex_latex_3.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_asciimath_1", "dataset_name": "eval_pipeline_suit", "url": "https://www.wjagray.co.uk/maths/ASCIIMathTutorial.html", "data_source_category": "HTML", "path":"data/origin/math_mathjax_asciimath_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_1", "dataset_name": "eval_pipeline_suit", "url": "https://mathjax.github.io/MathJax-demos-web/tex-chtml.html", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_2", "dataset_name": "eval_pipeline_suit", "url": "https://mathjax.github.io/MathJax-demos-web/equation-numbers.html", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_2.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_3", "dataset_name": "eval_pipeline_suit", "url": "https://physics.stackexchange.com/questions/621479/how-to-interpret-charge-continuity-equation-for-conductors-that-obey-ohms-law", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_3.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_4", "dataset_name": "eval_pipeline_suit", "url": "https://math.stackexchange.com/questions/4082284/solving-for-vector-contained-in-a-diagonal-matrix", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_4.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_5", "dataset_name": "eval_pipeline_suit", "url": "https://math.stackexchange.com/questions/1561951/integral-over-conditional-pdf", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_5.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_6", "dataset_name": "eval_pipeline_suit", "url": "https://mathoverflow.net/questions/62764/a-natural-refinement-of-the-a-n-arrangement-is-to-consider-all-2n-1-hyperpl?rq=1", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_6.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_latex_7", "dataset_name": "eval_pipeline_suit", "url": "https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers", "data_source_category": "HTML", "path":"data/origin/math_mathjax_latex_7.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathjax_mathml_1", "dataset_name": "eval_pipeline_suit", "url": "https://mathjax.github.io/MathJax-demos-web/mml-chtml.html", "data_source_category": "HTML", "path":"data/origin/math_mathjax_mathml_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_none_latex_1", "dataset_name": "eval_pipeline_suit", "url": "https://geoenergymath.com/2017/03/04/the-chandler-wobble-challenge/", "data_source_category": "HTML", "path":"data/origin/math_none_latex_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_none_mathml_1", "dataset_name": "eval_pipeline_suit", "url": "https://en.m.wikipedia.org/wiki/Variance", "data_source_category": "HTML", "path":"data/origin/math_none_mathml_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_1", "dataset_name": "eval_pipeline_suit", "url": "https://physics.stackexchange.com/questions/10098/1-form-formulation-of-quantized-electromagnetism", "data_source_category": "HTML", "path":"data/origin/math_1.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathhelpforum_1", "dataset_name": "eval_pipeline_suit", "url": "https://mathhelpforum.com/t/integral-question.76128/", "data_source_category": "HTML", "path":"data/origin/math_mathhelpforum_1.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_mathhelpforum_2", "dataset_name": "eval_pipeline_suit", "url": "http://mathhelpforum.com/differential-geometry/82966-continuous-functions.html", "data_source_category": "HTML", "path":"data/origin/math_mathhelpforum_2.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_stackexchange_1", "dataset_name": "eval_pipeline_suit", "url": "https://math.stackexchange.com/questions/458323/is-8327-1-a-prime-number?answertab=active", "data_source_category": "HTML", "path":"data/origin/math_stackexchange_1.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_physicsforums_1", "dataset_name": "eval_pipeline_suit", "url": "https://www.physicsforums.com/threads/probability-theoretic-inequality.246150/", "data_source_category": "HTML", "path":"data/origin/math_physicsforums_1.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "math_physicsforums_2", "dataset_name": "eval_pipeline_suit", "url": "https://physicshelpforum.com/t/latex-upgrade-physics-forum-powered-by-mathjax-v3.17489/", "data_source_category": "HTML", "path":"data/origin/math_physicsforums_2.html", "file_bytes": 1000, "page_layout_type": "forum", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "table_1", "dataset_name": "eval_pipeline_suit", "url": "https://grondwerken-overzicht.nl/noordwolde/gwy", "data_source_category": "HTML", "path":"data/origin/table_1.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "table_2", "dataset_name": "eval_pipeline_suit", "url": "https://10bestreviewz.com/automotive/best-underbody-underglow-kits", "data_source_category": "HTML", "path":"data/origin/table_2.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "table_3", "dataset_name": "eval_pipeline_suit", "url": "https://cavaliers.co.uk/results/judges/Mrs%20S%20Hindle.htm", "data_source_category": "HTML", "path":"data/origin/table_3.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "table_4", "dataset_name": "eval_pipeline_suit", "url": "https://112sport.hcc.edu.tw/Module/Score/FinalsReport_List.php?LID=203", "data_source_category": "HTML", "path":"data/origin/table_4.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "artical_health_com", "dataset_name": "eval_pipeline_suit", "url": "https://www.health.com/fruits-high-in-magnesium-8787394", "data_source_category": "HTML", "path":"data/origin/artical_health_com.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} +{"track_id": "blog_plainspot", "dataset_name": "eval_pipeline_suit", "url": "http://plainblogaboutpolitics.blogspot.com/2011/12/acceptable.html?m=1", "data_source_category": "HTML", "path":"data/origin/blog_plainspot.html", "file_bytes": 1000, "page_layout_type": "article", "meta_info": {"input_datetime": "2025-03-17 15:00:00"}} diff --git a/bench/config/data_math_config.jsonl b/bench/config/data_math_config.jsonl new file mode 100644 index 00000000..00bb2a85 --- /dev/null +++ b/bench/config/data_math_config.jsonl @@ -0,0 +1,1900 @@ +{"track_id":"ee9a6725-c525-439e-a440-e9c3e4b5b3fa","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/154498/a-farmer-is-plotting-a-grid-over-a-section-of-farm-land-there-are-40-parall","data_source_category":"HTML","path":"data_math/clay6/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d9b8625-4896-4e30-a63e-4d61ceb3ee62","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/44676/find-out-the-points-on-the-line-joining-two-charges-q-and-3q-kept-at-a-dist","data_source_category":"HTML","path":"data_math/clay6/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bc275cf9-5ed0-417e-b85f-6c6855ca76a9","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9525/if-the-normal-to-the-curve-x-y-a-makes-an-angle-theta-with-the-x-axis-then-","data_source_category":"HTML","path":"data_math/clay6/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"abda0ff5-f6d8-4f90-88e7-ba22abc40b52","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/110799/helium-atom-is-two-times-heavier-than-hydrogen-molecule-at-298-k-the-averag","data_source_category":"HTML","path":"data_math/clay6/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c8db9edb-e14e-45d0-b113-8aa3c67b00c5","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9137/find-the-absolute-maximum-and-absolute-minimum-values-of-f-on-the-given-int?show=11886","data_source_category":"HTML","path":"data_math/clay6/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"30824781-fc79-4f6c-ba9c-f02d4b53776c","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9117/find-the-intervals-on-which-f-is-increasing-or-decreasing-f-x-sin-x-cos-x-i?show=11864","data_source_category":"HTML","path":"data_math/clay6/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c677d4b5-8a93-4f27-b7ec-ab1c9f6cbe26","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9143/find-the-local-maximum-and-minimum-values-of-the-following-2x-5x-4x-","data_source_category":"HTML","path":"data_math/clay6/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"42385161-c777-44c3-a926-e26f8a8b112f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/54419/how-many-edges-does-a-cuboidal-box-have-","data_source_category":"HTML","path":"data_math/clay6/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"014a49ec-0cfc-4c69-a8b9-1a9786f5425a","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/472/find-the-approximate-value-of-where-f-x-x-3-7x-2-15-","data_source_category":"HTML","path":"data_math/clay6/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c7c219b4-0d75-46a2-99bd-7e030aa53a9e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/125613/in-an-estimation-of-s-by-carius-method-0-2175g-of-compound-gave-0-5825g-of-","data_source_category":"HTML","path":"data_math/clay6/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aa1d723f-dc88-47ac-be1b-afedd793ecc7","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/65568/let-f-x-be-a-polynomial-of-degree-four-having-extreme-values-at-x-1-and-x-2","data_source_category":"HTML","path":"data_math/clay6/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e2dd360e-a99e-4b70-9e21-3c1636fdcb38","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/10077/if-a-random-variable-x-follows-poisson-distribution-such-that-e-x-30-then-t?show=40650","data_source_category":"HTML","path":"data_math/clay6/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b1f97948-ec88-4f3f-9ea5-004551b85515","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/153612/a-school-tornado-has-enough-food-to-last-20-children-for-6-days-if-24-child","data_source_category":"HTML","path":"data_math/clay6/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4e889242-352c-4be5-9f77-d8763d540ace","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/65576/if-m-is-the-a-m-of-two-distinct-real-number-l-and-n-l-n-1-and-g-1-g-2-and-g","data_source_category":"HTML","path":"data_math/clay6/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73580c67-9db8-4329-a044-b001263e1810","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/65744/sodium-metal-crystallizes-in-a-body-centered-cubic-lattice-with-a-unit-cell","data_source_category":"HTML","path":"data_math/clay6/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ec558f94-75a9-41eb-80e2-59a96d4bed99","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/39137/the-magnetic-field-of-earth-at-the-equator-is-approximately-4-times-10-t-th","data_source_category":"HTML","path":"data_math/clay6/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2e11839b-d80c-4056-9f90-4fd8345bcfaa","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/39481/if-equations-ax-bx-c-0-a-b-c-in-r-a-neq-0-and-2x-3x-4-0-have-a-common-root-","data_source_category":"HTML","path":"data_math/clay6/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4fd3bc6c-0bbf-4f03-a3d9-70a616393dfe","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/63369/the-value-of-sum-r-2-r-3-s-equal-to","data_source_category":"HTML","path":"data_math/clay6/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b941ef79-b1bf-4206-b415-1127bd070b86","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/jee-main-aipmt/jeemain%2Cphysics/class12/nucleii","data_source_category":"HTML","path":"data_math/clay6/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cdd68148-987f-41ed-87aa-1a0ccc28a499","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/questions/tnstate%2Cclass12/tnstate%2Cclass12%2Cch11","data_source_category":"HTML","path":"data_math/clay6/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ef4b9388-8284-40c3-9d08-562877863bc1","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/69093/determined-the-effective-focal-length-of-the-combination-of-two-lenses-of-f","data_source_category":"HTML","path":"data_math/clay6/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"24a25b88-a218-4161-b719-0977838de3fc","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/65830/as-an-electron-makes-a-transition-from-an-excited-state-to-the-ground-state","data_source_category":"HTML","path":"data_math/clay6/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"edccbb85-bbda-46a2-8260-931d03c96381","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7976/find-the-equations-of-the-plane-which-contains-the-two-lines-large-frac-fra","data_source_category":"HTML","path":"data_math/clay6/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fff74001-b9aa-4c31-951a-b1b5502815a5","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/120122/a-temporary-endocrine-gland-in-the-human-body-is-","data_source_category":"HTML","path":"data_math/clay6/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce1eb399-0229-472a-8c62-0bca7df68b20","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/50085/a-transmission-tower-at-a-particular-place-has-a-height-of-135m-a-what-is-i","data_source_category":"HTML","path":"data_math/clay6/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"29af0a55-d57e-4594-a03c-3231b182f09f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7991/find-the-distane-between-the-parallel-planes-x-y-3z-5-0-2x-2y-6z-7-0?show=10547","data_source_category":"HTML","path":"data_math/clay6/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a7e01636-2077-456d-9ea8-a2b1b7fa6bf1","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/122816/when-200-milliliters-of-a-gas-at-constant-pressure-is-heated-its-volume?show=122817","data_source_category":"HTML","path":"data_math/clay6/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11827f55-65bd-4efa-982a-666a2d27315e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/90979/a-dolphin-catches-its-prey-by","data_source_category":"HTML","path":"data_math/clay6/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f383c01-9e4b-427c-be9a-6e215d4159fb","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7938/find-the-length-of-the-perpendicular-frome-the-origin-to-the-plane-overrigh?show=10483","data_source_category":"HTML","path":"data_math/clay6/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b34301b7-2be9-44d5-aa91-b18c8bfcdd46","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/57262/the-radius-of-the-circle-passing-through-the-foli-of-the-ellipse-large-frac","data_source_category":"HTML","path":"data_math/clay6/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1ec3d1cf-f63d-4e91-9fac-eaf68362a893","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/90974/scurvy-is-caused-by-deficiency-of-which-of-these-?show=97361","data_source_category":"HTML","path":"data_math/clay6/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b35a9b79-b623-4f14-abfb-bccace96565f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/26965/an-electrical-charge-4-times10-c-is-placed-at-the-point-2-3-5-at-the-point-","data_source_category":"HTML","path":"data_math/clay6/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2bd6745c-8f8e-4638-be69-41a2c62ecfd4","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/172424/-chatquestion-10-15-alll-ll-4g-y-78-test-feedback-the-maximum-intensity-in-","data_source_category":"HTML","path":"data_math/clay6/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e846e80-8516-4b91-9974-208262842f3e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7969/derive-the-equation-of-the-plane-in-the-intercept-form-","data_source_category":"HTML","path":"data_math/clay6/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"46348bce-6547-40ef-8b74-d8dac21c747e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9124/prove-the-following-inequalities-log-1-x-x-for-all-x-0","data_source_category":"HTML","path":"data_math/clay6/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7e159d9f-b560-4f48-9fec-a595a943596c","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/39491/if-the-rolle-s-theorem-holds-for-the-function-f-x-2x-ax-bx-in-the-interval-","data_source_category":"HTML","path":"data_math/clay6/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a28f31ac-1bb1-480e-9c51-5a1e61f24c76","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/90132/excess-food-is-stored-in-the-form-of","data_source_category":"HTML","path":"data_math/clay6/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73aa342e-3d0a-4b49-992b-bf418bc4229d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/52503/-begin-text-text-text-end","data_source_category":"HTML","path":"data_math/clay6/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17f5fb97-e671-434c-a1cb-c3c905419cdd","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/8744/a-bag-has-4-red-and-5-black-balls-a-second-bag-has-3-red-and-7-black-balls-","data_source_category":"HTML","path":"data_math/clay6/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"33b1fe0c-e974-40cb-9335-2e766c2fd40b","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/78468/two-engines-pass-each-other-moving-in-opposite-directions-with-uniform-spee","data_source_category":"HTML","path":"data_math/clay6/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"65937074-4419-4d24-92a1-1b0753a186de","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/20072/valve-of-thebesius-is-present-in-the-heart-of-","data_source_category":"HTML","path":"data_math/clay6/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92cde1c7-219a-4c0a-a08a-6b4a3e92397c","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/8772/find-the-mean-and-variance-for-the-following-probability-density-functions-","data_source_category":"HTML","path":"data_math/clay6/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af1f618d-0621-4c75-a94e-15c33de39471","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/89959/what-is-not-true-about-air-","data_source_category":"HTML","path":"data_math/clay6/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"75830b5f-b023-4e79-8456-318edc62818d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/12191/the-smallest-positive-natural-number-n-such-that-n-is-divisible-by-990-is-","data_source_category":"HTML","path":"data_math/clay6/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2a71827b-89d7-4343-b21b-8246368a3efd","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/25839/at-what-separation-should-two-equal-charges-1-0-c-be-placed-so-that-the-for","data_source_category":"HTML","path":"data_math/clay6/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b95ad0ce-c030-4d2b-8991-372fcf92946d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/19982/the-scientific-name-of-the-lung-fluke-of-man-is-","data_source_category":"HTML","path":"data_math/clay6/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54ebbe2a-ac08-4e1d-9303-fde4f58441f1","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/116358/calculate-the-wavelength-and-energy-of-radiation-emitted-for-the-electronic?show=116359","data_source_category":"HTML","path":"data_math/clay6/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11ee8eca-1ba9-49aa-8404-956473c92755","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/74799/a-circular-coil-of-radius-8-0-cm-and-20-turns-rotates-about-its-vertical-di","data_source_category":"HTML","path":"data_math/clay6/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c6acdc01-9c32-4d95-9a78-f2b6a68654f0","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/89949/in-the-following-arrangement-shown-in-the-figure-the-bulb-will-not-glow-if-","data_source_category":"HTML","path":"data_math/clay6/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"605b435a-8017-4363-85b7-4d2270120834","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/questions/tnstate%2Cclass12/tnstate%2Cclass12%2Cch2","data_source_category":"HTML","path":"data_math/clay6/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11b24369-5e81-4f87-9f21-a8067e19cd5e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/15628/the-solution-of-x-y-1-large-frac-1","data_source_category":"HTML","path":"data_math/clay6/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2aaf51af-d201-482e-8f53-0838ca7d7a92","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/11078/for-any-complex-number-z-the-minimum-value-of-z-z-1-is-","data_source_category":"HTML","path":"data_math/clay6/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f784be56-640b-436b-b00b-1523cf714eff","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/65716/which-one-of-the-following-alkaline-earth-metal-sulphates-has-its-hydration","data_source_category":"HTML","path":"data_math/clay6/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"70cd3f27-d700-424d-8870-61d212cd90ed","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/117795/co-ordination-number-of-a-crystalline-solid-is?show=117796","data_source_category":"HTML","path":"data_math/clay6/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9e061cdd-4cad-4d68-a666-84967af6c547","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/871/if-a-line-has-the-direction-ratios-18-12-4-then-what-are-its-direction-cosi","data_source_category":"HTML","path":"data_math/clay6/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b27b586a-43f2-460b-a728-2c83b6563c67","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/90383/after-a-crop-has-reached-maturity-and-is-harvestable-how-long-it-will-stand","data_source_category":"HTML","path":"data_math/clay6/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9694e174-12f9-4476-a2f1-96695357e5c2","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/114101/when-electrons-are-passed-through-electromagnetic-field-electrons-are-defle","data_source_category":"HTML","path":"data_math/clay6/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7f21e994-d984-453c-a0d2-9ab7386bc77a","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/13813/if-the-uncertainty-in-velocities-of-two-particles-a-and-b-with-mass-1-0-tim","data_source_category":"HTML","path":"data_math/clay6/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fc7a926c-2c4e-4e6e-be4b-f26ac658a606","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/17894/a-number-n-is-chosen-at-random-from-s-let-a-bigg-b-n-in-s-n-is-a-prime-and-","data_source_category":"HTML","path":"data_math/clay6/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d28ffe58-9282-481c-ad5d-fefc1c8bbbba","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/22880/given-an-ap-if-the-sum-of-first-5-terms-is-175-and-the-sum-of-first-10-term","data_source_category":"HTML","path":"data_math/clay6/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ff342a80-7f7c-4eb4-8e88-f7e72cf8650d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/3304/true-or-false-the-solution-of-large-frac-bigg-large-frac-bigg-frac-is-y-x-c","data_source_category":"HTML","path":"data_math/clay6/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb80d58f-cdb5-48e5-8808-d60b0c4a03f3","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/117761/what-is-the-mass-fraction-of-4-moles-of-sodium-in-8-moles-of-hydrogen-chlor","data_source_category":"HTML","path":"data_math/clay6/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"010ae327-0c52-4b7b-beaf-096a9b8bcdd8","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/117597/crystallisation-is-based-on-the?show=117599","data_source_category":"HTML","path":"data_math/clay6/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e7517156-3c61-4484-8945-b41dcf1f262e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/15273/the-refractive-index-of-the-material-of-a-double-convex-lens-is-1-5-and-its","data_source_category":"HTML","path":"data_math/clay6/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf2e0f2b-6d3b-4c8c-87b7-379ff5aa2e87","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/155007/if-the-figure-above-ab-parallel-dc-find-the-value-of-x-br-br-","data_source_category":"HTML","path":"data_math/clay6/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2f7a27f6-7698-4fab-95eb-1f588e39d11e","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/17887/observe-the-following-lists-","data_source_category":"HTML","path":"data_math/clay6/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce82718e-42f5-4d8b-82cf-6585f4531b3f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/1550/find-the-vector-and-cartesian-equations-of-the-planes-that-passes-through-t","data_source_category":"HTML","path":"data_math/clay6/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77cd1979-fd8a-44b0-9cd1-f39f820bcfe0","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/29951/area-under-v-l-t-graph-gives","data_source_category":"HTML","path":"data_math/clay6/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cefff4d7-422f-40b2-bb30-903d49d01391","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7919/find-the-shortest-distance-between-the-parallel-lines-large-frac-frac-frac-","data_source_category":"HTML","path":"data_math/clay6/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d17319b-eb41-4c76-ba96-ebe28e702754","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/25863/which-of-the-following-is-a-lanthanide-","data_source_category":"HTML","path":"data_math/clay6/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e22732fa-445d-4e37-ae03-b996d51dd234","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/154781/?show=154782","data_source_category":"HTML","path":"data_math/clay6/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f4a05d76-9c51-4745-b331-2ad0a2b67467","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/24377/which-counter-example-cannot-be-used-to-show-that-the-statement-if-n-is-an-","data_source_category":"HTML","path":"data_math/clay6/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b1d1e820-e9b8-4965-8f15-983e396b9727","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/1530/find-the-shortest-distance-between-the-lines-whose-vector-equations-are-ove","data_source_category":"HTML","path":"data_math/clay6/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aec9f837-b83a-4c5f-bb42-6f060d10bc62","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/28061/which-of-the-following-units-denote-the-dimensions-of-large-frac-where-q-de?show=28062","data_source_category":"HTML","path":"data_math/clay6/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f490be6-039c-4cec-84c0-d22353b52a37","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/117574/what-are-the-disadvantages-of-using-high-alkaline-water-?show=117575","data_source_category":"HTML","path":"data_math/clay6/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e743b932-d7fe-4191-8a58-c76eaadf4737","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/133484/which-of-the-following-statements-are-correct-abount-an-aqueous-solution-of","data_source_category":"HTML","path":"data_math/clay6/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"be8458b6-0329-472a-91e4-cdf275e577ce","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/153665/alex-and-jim-start-from-their-home-and-move-in-perpendicular-directions-as-","data_source_category":"HTML","path":"data_math/clay6/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"688b2207-58ab-4a47-8ac7-8a441d05002d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/520/if-a-and-b-are-events-such-that-p-a-b-p-b-a-then-which-of-the-following-is-","data_source_category":"HTML","path":"data_math/clay6/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9599c5c-615d-46c3-a339-e23da696c314","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/18092/an-electron-moving-at-a-speed-of-5-times-10-6-ms-is-shot-through-a-sheet-of","data_source_category":"HTML","path":"data_math/clay6/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2887aaa5-6152-4b08-ab46-ab277d16f43f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/91037/water-droplets-forms-on-a-cold-glass-of-ice-tea-what-state-of-matter-was-th?show=97377","data_source_category":"HTML","path":"data_math/clay6/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a3f3ec0d-5054-41e4-9553-3f260ebbe53f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/1685/let-f-r-rightarrow-r-be-defined-by-f-x-3x-2-5-and-g-r-rightarrow-r-by-g-x-l","data_source_category":"HTML","path":"data_math/clay6/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f3aa5da-df13-4ae8-919e-8e4feef27673","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/8588/given-that-a-begin-cos-x-sin-x-sin-x-cos-x-end-and-a-adj-a-k-begin1-0-0-1-e","data_source_category":"HTML","path":"data_math/clay6/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1728184c-f58e-4f1f-9dcb-8ae0aef1eb6a","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/19323/if-overrightarrow-a-x-2-hat-i-2-hat-j-2-hat-k-overrightarrow-b-hat-i-hat-j-","data_source_category":"HTML","path":"data_math/clay6/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bd0b4918-4b33-4d52-9f3d-ea95136fd18a","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7458/examine-the-consistency-of-the-following-system-of-equation-if-it-is-consis?show=10116","data_source_category":"HTML","path":"data_math/clay6/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"527e4646-3b95-44bb-81e7-5ca5b1dd6ab6","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/33443/in-the-given-circuit-shown-l-200-mh-emp-of-battery-e-12-v-r-1-r-2-2-omega-t","data_source_category":"HTML","path":"data_math/clay6/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7b9ff319-6e04-43ce-aea6-a63bd932bb62","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/133429/which-of-the-following-is-formed-by-the-reaction-of-an-acid-with-a-base-","data_source_category":"HTML","path":"data_math/clay6/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c12ce63-d60f-4b20-9337-5c019cbbfa1b","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/19196/the-value-of-a-for-which-the-volume-of-the-parallelopiped-formed-by-the-vec","data_source_category":"HTML","path":"data_math/clay6/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1d5dd15c-7168-4c65-b96e-17f3e255267b","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/67604/pick-the-odd-one-out-square-rectangle-triangle-cube-","data_source_category":"HTML","path":"data_math/clay6/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a362e4cf-f5b3-491d-b64f-8bc61fb4b6c4","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/7402/find-the-inverse-of-the-following-matrix-begin-1-2-2-1-3-0-0-2-1-end","data_source_category":"HTML","path":"data_math/clay6/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b2a23d8f-e651-48b8-b36a-049ad2caf31d","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/57903/amount-of-oxalic-and-present-in-a-solution-can-be-determined-by-its-nitrati","data_source_category":"HTML","path":"data_math/clay6/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7f40ab62-641e-4931-a75d-b9d3bb10c14a","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/8767/find-the-expected-value-of-the-number-on-a-die-when-thrown-?show=13446","data_source_category":"HTML","path":"data_math/clay6/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b295d58a-75d5-4287-b9e6-47de0af10ceb","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/1925/let-a-begin1-2-1-3-end-b-begin4-0-1-5-end-c-begin2-0-1-2-end-and-a-4-b-2-sh","data_source_category":"HTML","path":"data_math/clay6/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"26b7d5a9-1176-4c51-a8a7-48ba98e0e4b5","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/33345/a-inductor-l-50-mh-and-resistor-of-r-100-omega-and-a-battery-of-emf-100-v-i?show=33349","data_source_category":"HTML","path":"data_math/clay6/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dfe846a7-dad8-4b80-bc64-ad7cf1898f4f","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/91080/the-abdomen-of-an-insect-is","data_source_category":"HTML","path":"data_math/clay6/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"771b7af4-c959-4ab3-8827-e316c69331a5","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/122883/which-of-the-following-term-does-not-involve-in-ideal-gas-law-?show=122884","data_source_category":"HTML","path":"data_math/clay6/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8db70b82-e4e8-42ae-be23-337a9ca6e6bb","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/21125/integrate-int-large-frac-x-tan-5-x-sec-2-x-dx","data_source_category":"HTML","path":"data_math/clay6/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1f364217-d144-4c57-93e0-77e98a91b754","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/9145/find-the-local-maximum-and-minimum-values-of-the-following-x-1-","data_source_category":"HTML","path":"data_math/clay6/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0955f609-f136-4ff1-ba64-07332f5c9090","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/122833/the-graph-depicted-below-represents-which-of-the-gas-laws-","data_source_category":"HTML","path":"data_math/clay6/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"148b47ae-c24a-489f-8325-080f24308e19","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/77283/in-a-hydrogen-like-atom-electron-makes-transition-from-an-energy-level-with","data_source_category":"HTML","path":"data_math/clay6/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ff9f557-0c78-4ad3-a5b8-189e4039c3ca","dataset_name":"eval_pipeline_suit","url":"https://clay6.com/qa/83599/two-students-of-class-vi-have-performed-the-same-experiment-separation-of-s","data_source_category":"HTML","path":"data_math/clay6/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8bfb24f5-2432-4dcc-89a8-b1cab755d3a2","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/10/09/%e5%8b%95%e5%b7%ae%e7%94%9f%e6%88%90%e5%87%bd%e6%95%b8-%e4%b8%8a/","data_source_category":"HTML","path":"data_math/ccjou/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"396a1bd8-65ea-477b-8b43-f434e9aecfaa","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2014/02/25/%e7%ad%94%e5%bc%b5%e7%9b%9b%e6%9d%b1%e2%94%80%e2%94%80%e9%97%9c%e6%96%bc%e4%b8%89%e5%80%8b%e5%8d%8a%e6%ad%a3%e5%ae%9a%e7%9f%a9%e9%99%a3%e7%a9%8d%e7%9a%84%e4%ba%8c%e6%ac%a1%e5%9e%8b%e7%82%ba%e9%9b%b6/?replytocom=6937","data_source_category":"HTML","path":"data_math/ccjou/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12f79af8-ad03-4e79-8f17-0777e2601092","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/puzzle/","data_source_category":"HTML","path":"data_math/ccjou/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd1bb0a5-3c02-4b9a-9e5d-61f099f9383d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/page/40/","data_source_category":"HTML","path":"data_math/ccjou/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"274fde7c-4f8b-404b-9cb6-ae1d7e3aa225","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/01/14/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-january-14-2013-2/","data_source_category":"HTML","path":"data_math/ccjou/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"06c9b5a2-d73d-4a93-a3cd-a5d7ef84c927","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/page/51/","data_source_category":"HTML","path":"data_math/ccjou/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9cbc8213-b9d5-431a-8349-25c673795454","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/08/24/%e6%ad%a1%e8%bf%8e%e8%ae%80%e8%80%85%e6%9c%8b%e5%8f%8b%e6%8f%90%e4%be%9b%e5%b0%88%e6%ac%84%e4%b8%bb%e9%a1%8c/","data_source_category":"HTML","path":"data_math/ccjou/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bfeb5ee2-b4d4-46b1-85fb-8b17a1107b3d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/07/15/%E6%AF%8F%E9%80%B1%E5%95%8F%E9%A1%8C-july-15-2013/","data_source_category":"HTML","path":"data_math/ccjou/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7debabd1-8854-466d-b850-845ca76fa067","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/page/38/","data_source_category":"HTML","path":"data_math/ccjou/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8fefb2ad-48de-43e5-9278-d731303c2d2a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/04/29/%e7%b7%9a%e6%80%a7%e8%a6%8f%e5%8a%83-%e4%b8%80%ef%bc%9a%e6%a8%99%e6%ba%96%e5%9e%8b%e5%95%8f%e9%a1%8c/","data_source_category":"HTML","path":"data_math/ccjou/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19717fd-1cdd-441d-a1c2-7435a22a751d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2014/03/24/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-march-24-2014/","data_source_category":"HTML","path":"data_math/ccjou/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9378f7a-145f-4569-a2e0-ded05b030cc7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/10/28/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-october-28-2013/","data_source_category":"HTML","path":"data_math/ccjou/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"65ddc2e2-df02-4742-bef6-8f9ac5aceeba","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%b5%b1%e8%a8%88%e9%87%8f/","data_source_category":"HTML","path":"data_math/ccjou/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b0b31324-33d9-4745-92b8-e7762c950a58","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/04/22/%e8%ae%93%e4%ba%ba%e6%8a%93%e7%8b%82%e7%9a%84%e7%93%a6%e6%a3%ae%e7%b4%99%e7%89%8c%e5%95%8f%e9%a1%8c/","data_source_category":"HTML","path":"data_math/ccjou/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"79eece8f-dfd4-481c-8b58-ae6e7787c25a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/01/31/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-january-31-2011/","data_source_category":"HTML","path":"data_math/ccjou/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8953c865-3e26-473d-a3c2-489c30eafd59","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/page/33/","data_source_category":"HTML","path":"data_math/ccjou/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c547e4fe-2309-4dd7-8173-f8eb2e2dc861","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/%e5%b0%88%e9%a1%8c%e6%8e%a2%e7%a9%b6/%e7%89%b9%e6%ae%8a%e7%9f%a9%e9%99%a3/","data_source_category":"HTML","path":"data_math/ccjou/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c76e8343-f28f-46bd-8380-e9a56aff501f","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%95%ab%e5%9c%96/","data_source_category":"HTML","path":"data_math/ccjou/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5712dc8e-8291-43f2-95b8-55b2ece9e7d0","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2016/09/05/%E6%AF%8F%E9%80%B1%E5%95%8F%E9%A1%8C-september-5-2016/","data_source_category":"HTML","path":"data_math/ccjou/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0ce69851-2ce9-422f-98dc-d481c1d11513","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/%e5%b0%88%e9%a1%8c%e6%8e%a2%e7%a9%b6/%e5%a5%87%e7%95%b0%e5%80%bc%e5%88%86%e8%a7%a3%e5%b0%88%e9%a1%8c/","data_source_category":"HTML","path":"data_math/ccjou/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8324ef80-e15c-4fb6-b108-cff9213eb0f9","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/%e9%96%b1%e8%ae%80%e5%b0%8e%e5%bc%95/%e5%bc%b7%e6%89%93%e6%8e%a8%e8%96%a6%e6%96%87%e7%ab%a0/","data_source_category":"HTML","path":"data_math/ccjou/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b8c0f647-3257-4313-ad18-083d7a910bd3","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/09/21/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-september-21-2009/","data_source_category":"HTML","path":"data_math/ccjou/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2347323d-5423-48e6-9deb-1cc522213c30","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2012/08/27/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-august-27-2012/","data_source_category":"HTML","path":"data_math/ccjou/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"27763865-8fac-4e97-a75c-87491a3e22f4","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2016/02/26/%e5%a6%82%e4%bd%95%e5%ad%b8%e5%a5%bd%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8%ef%bc%9f/","data_source_category":"HTML","path":"data_math/ccjou/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0da9bbdb-16ea-487f-9b1a-7a270b1ef7e8","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/18/%e5%88%a9%e7%94%a8%e7%95%ab%e5%9c%96%e4%be%86%e8%ad%89%e6%98%8e/","data_source_category":"HTML","path":"data_math/ccjou/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d5dda29-018e-41bb-80d3-b487f335f1d1","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/06/21/%e5%90%8c%e6%99%82%e5%8f%af%e4%b8%89%e8%a7%92%e5%8c%96%e7%9f%a9%e9%99%a3/","data_source_category":"HTML","path":"data_math/ccjou/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8caf1564-e1f6-486c-ba81-b4d93ea90af5","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/12/%e3%80%8a%e7%b7%9a%e4%bb%a3%e6%ad%a6%e5%8a%9f%e7%a7%98%e7%ac%88%e3%80%8b%e9%a6%96%e7%af%87-%e4%b8%8a%e5%8d%b7/","data_source_category":"HTML","path":"data_math/ccjou/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6d63f27a-9ce6-4a87-9761-cbd37ef2842c","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/sylvester-%e8%a1%8c%e5%88%97%e5%bc%8f%e5%ae%9a%e7%90%86/","data_source_category":"HTML","path":"data_math/ccjou/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7824894b-1034-4156-b318-cbc25def43e8","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%a7%a9/","data_source_category":"HTML","path":"data_math/ccjou/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"01a75f84-8479-4890-b2cb-b09beb918e13","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/06/27/%E6%A2%AF%E5%BA%A6%E3%80%81%E6%97%8B%E5%BA%A6%E8%88%87%E6%95%A3%E5%BA%A6/","data_source_category":"HTML","path":"data_math/ccjou/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d77f09d5-b72c-4f79-9051-87310158da2d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/10/17/%E8%88%8A%E7%89%88%E8%A8%8E%E8%AB%96%E5%8D%80%E6%96%87%E7%AB%A0/","data_source_category":"HTML","path":"data_math/ccjou/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"498da8b0-3a54-42ba-95f4-d2258527853a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2016/05/09/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-may-9-2016/","data_source_category":"HTML","path":"data_math/ccjou/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6845a5ef-b557-44a1-bebe-37727a683e89","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8%e5%b0%88%e6%ac%84/linear-transform/","data_source_category":"HTML","path":"data_math/ccjou/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48c2c102-39de-429c-b74e-9bb01ddae131","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%E7%84%A1%E9%97%9C%E7%B7%9A%E4%BB%A3/page/2/","data_source_category":"HTML","path":"data_math/ccjou/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"13a87cf3-0a09-4e3f-98bf-6b3dadadec09","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%e6%a9%9f%e7%8e%87%e7%b5%b1%e8%a8%88/","data_source_category":"HTML","path":"data_math/ccjou/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"97174bc0-f625-435c-9207-41cdf231f322","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/06/20/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-june-20-2011/","data_source_category":"HTML","path":"data_math/ccjou/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ec4d4094-86c6-4ab0-a336-76b4fd41ef38","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%e6%a9%9f%e5%99%a8%e5%ad%b8%e7%bf%92/","data_source_category":"HTML","path":"data_math/ccjou/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0bc84488-6fda-407a-ba6f-707c458c85f9","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/page/3/","data_source_category":"HTML","path":"data_math/ccjou/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03f5aff3-d3a5-42fe-9051-1d2573f4a51d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8%e5%b0%88%e6%ac%84/%e8%ad%89%e6%98%8e%e7%b4%b0%e8%a7%a3/","data_source_category":"HTML","path":"data_math/ccjou/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d5d90a55-b79d-4777-82c9-cfd8552fd2ab","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/pow-%e7%89%b9%e5%be%b5%e5%88%86%e6%9e%90/","data_source_category":"HTML","path":"data_math/ccjou/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0133eb43-5a95-480c-8bc6-18b8db0b3359","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/11/04/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-november-4-2013/","data_source_category":"HTML","path":"data_math/ccjou/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5753c8e2-57d6-4368-b16b-6231cffaa8e3","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/%e5%9c%96%e8%ab%96/","data_source_category":"HTML","path":"data_math/ccjou/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a5d5800d-8d67-4de9-b6c9-0869f42ed003","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2014/08/12/%e9%ab%98%e6%96%af%e6%b6%88%e5%8e%bb%e6%b3%95%e8%88%87%e9%ab%98%e6%96%af%e2%94%80%e7%b4%84%e7%95%b6%e6%b3%95%e7%9a%84%e9%81%8b%e7%ae%97%e9%87%8f/","data_source_category":"HTML","path":"data_math/ccjou/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b804df48-9870-4e7e-a5d8-eff7e881942b","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/householder-%e7%9f%a9%e9%99%a3/","data_source_category":"HTML","path":"data_math/ccjou/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bc6f0993-2ed9-4685-a12f-700996cff390","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/lu-%e5%88%86%e8%a7%a3/","data_source_category":"HTML","path":"data_math/ccjou/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f9f0a8a8-c4ad-4f7f-a768-b1f51d2f1cc3","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/10/04/%e7%9f%a9%e9%99%a3%e9%81%8b%e7%ae%97%e7%9a%84%e5%9f%ba%e6%9c%ac%e6%8a%80%e5%b7%a7/","data_source_category":"HTML","path":"data_math/ccjou/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ac6c8484-ed66-4287-8c38-5533924909a0","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e5%af%a6%e5%b0%8d%e7%a8%b1%e7%9f%a9%e9%99%a3/","data_source_category":"HTML","path":"data_math/ccjou/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b4961e0-a30b-4afb-a362-ed1acccf41c7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/03/home-%e9%a6%96%e9%a0%81/","data_source_category":"HTML","path":"data_math/ccjou/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ccb2b3d-6501-4ba8-93b3-9bbcd5a4ab47","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/hermitian-%e7%9f%a9%e9%99%a3/page/3/","data_source_category":"HTML","path":"data_math/ccjou/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2e9c608c-69a0-4d27-af2e-2d3ebd9cf97f","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/jordan-%e5%85%b8%e5%9e%8b%e5%bd%a2%e5%bc%8f/","data_source_category":"HTML","path":"data_math/ccjou/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2b80b7ae-8e81-4fa3-a696-cb44cd46ee80","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%b5%b1%e8%a8%88/","data_source_category":"HTML","path":"data_math/ccjou/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fbc65ad1-4c63-4cc0-aed1-0b3f5bd02b5b","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e4%b8%8d%e8%ae%8a%e5%ad%90%e7%a9%ba%e9%96%93/","data_source_category":"HTML","path":"data_math/ccjou/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee1241df-1adf-41aa-8f27-5ca8100b7a2e","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e4%bb%a3%e6%95%b8%e9%87%8d%e6%95%b8/","data_source_category":"HTML","path":"data_math/ccjou/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8720287d-d2c6-481e-b1b5-569cf85c5d75","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%9b%b8%e4%bc%bc/","data_source_category":"HTML","path":"data_math/ccjou/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c2887ef3-2890-4d08-a5c8-f963036430e7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/%E5%B0%88%E9%A1%8C%E6%8E%A2%E7%A9%B6/%E5%9C%96%E8%AB%96%E5%B0%88%E9%A1%8C/","data_source_category":"HTML","path":"data_math/ccjou/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0e737033-ab07-4f10-8cfb-f7ad7f89182e","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e7%9f%a9%e9%99%a3%e8%ad%9c/","data_source_category":"HTML","path":"data_math/ccjou/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9963ee03-3429-469b-9bbe-12e88f7c2b23","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/04/04/%E6%AF%8F%E9%80%B1%E5%95%8F%E9%A1%8C-april-4-2011/","data_source_category":"HTML","path":"data_math/ccjou/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ddf39fd-9644-4a01-91e0-890790e1950e","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/article/linear-equations/page/3/","data_source_category":"HTML","path":"data_math/ccjou/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"213bc2ad-0924-4efd-ae23-b976607d0f49","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e6%a8%99%e7%b1%a4/","data_source_category":"HTML","path":"data_math/ccjou/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c14f137-05ff-41d7-8e78-4f5592370af1","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/article/det/page/4/","data_source_category":"HTML","path":"data_math/ccjou/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d03f17a-ae0e-445f-b5a1-f51c1993bdc0","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e8%a1%8c%e7%a9%ba%e9%96%93/","data_source_category":"HTML","path":"data_math/ccjou/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b2490b1e-c79a-42ae-9c75-45165bb439c7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2012/03/23/%E7%89%B9%E6%AE%8A%E7%9F%A9%E9%99%A3-16%EF%BC%9A%E6%8E%92%E5%88%97%E7%9F%A9%E9%99%A3/","data_source_category":"HTML","path":"data_math/ccjou/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed6ed905-3442-421a-91e1-346f7025d56c","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/author/foremap/page/2/","data_source_category":"HTML","path":"data_math/ccjou/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f5d2871-24f5-4fe3-9a1b-a9e2c32db8d6","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/jordan-%e5%85%b8%e5%9e%8b%e5%bd%a2%e5%bc%8f/page/3/","data_source_category":"HTML","path":"data_math/ccjou/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"177c7d33-eceb-4fad-acfa-fc04a83504aa","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/05/24/householder-%E8%AE%8A%E6%8F%9B%E6%96%BC-qr-%E5%88%86%E8%A7%A3%E7%9A%84%E6%87%89%E7%94%A8/","data_source_category":"HTML","path":"data_math/ccjou/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b9681f4c-4143-402f-8ca2-d8c5b35d0ff3","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/pow-%e5%90%91%e9%87%8f%e7%a9%ba%e9%96%93/page/6/","data_source_category":"HTML","path":"data_math/ccjou/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"104b2e7a-dc10-48d8-a094-79f5a733a99c","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/27/%e7%b7%9a%e6%80%a7%e7%8d%a8%e7%ab%8b%e4%bf%b1%e6%a8%82%e9%83%a8/","data_source_category":"HTML","path":"data_math/ccjou/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"58b5beaf-63ad-44b2-b3d7-7c0c4f68ea9d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2012/10/13/%E4%B8%8A%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9F%A9%E9%99%A3%E7%9A%84%E9%80%86%E7%9F%A9%E9%99%A3/","data_source_category":"HTML","path":"data_math/ccjou/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"987190f6-5727-4627-9606-08dc041855a8","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e8%b7%a1%e6%95%b8/page/4/","data_source_category":"HTML","path":"data_math/ccjou/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"44a4111b-2f61-49ba-a95e-c097913b9f04","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/17/%E4%BA%8C%E7%9F%A9%E9%99%A3%E5%92%8C%E7%9A%84%E9%80%86%E7%9F%A9%E9%99%A3/","data_source_category":"HTML","path":"data_math/ccjou/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"39f94c50-682f-45e6-87bf-7279b44c281f","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/07/25/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-july-25-2011/","data_source_category":"HTML","path":"data_math/ccjou/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"984887e7-24c9-400a-ad64-5ae7ea377113","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/trace/","data_source_category":"HTML","path":"data_math/ccjou/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ad5292e-32de-4ea9-b361-bb8b2a7178ae","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/12/30/%E7%B7%9A%E6%80%A7%E6%96%B9%E7%A8%8B-axb-%E7%9A%84%E9%80%9A%E8%A7%A3%E8%88%87%E7%9F%A9%E9%99%A3-a-%E7%9A%84%E5%9B%9B%E5%80%8B%E5%9F%BA%E6%9C%AC%E5%AD%90%E7%A9%BA%E9%96%93%E6%95%B4%E5%90%88%E7%AE%97/","data_source_category":"HTML","path":"data_math/ccjou/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b8906d6-ccb9-4d91-a2bb-31f61806d287","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/author/ccjou/page/5/","data_source_category":"HTML","path":"data_math/ccjou/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"61d2eea3-04b7-4797-a34f-3914477ca450","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/01/12/%e7%89%b9%e5%be%b5%e5%a4%9a%e9%a0%85%e5%bc%8f%e8%98%8a%e8%97%8f%e7%9a%84%e8%a8%8a%e6%81%af/","data_source_category":"HTML","path":"data_math/ccjou/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9ea2513c-c313-4762-8b30-3506649103f2","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/09/06/%e8%82%89%e7%9c%bc%e5%88%a4%e8%ae%80%e7%89%b9%e5%be%b5%e5%90%91%e9%87%8f-2/","data_source_category":"HTML","path":"data_math/ccjou/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e33d5144-e440-43d7-9e58-66f395d47cb2","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/05/13/%E5%8F%AF%E5%B0%8D%E8%A7%92%E5%8C%96%E7%9F%A9%E9%99%A3%E8%88%87%E7%BC%BA%E9%99%B7%E7%9F%A9%E9%99%A3%E7%9A%84%E5%88%A4%E5%AE%9A/","data_source_category":"HTML","path":"data_math/ccjou/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4a8c7de0-8857-488b-9662-2c0f4646cbb1","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/jordan-%e5%85%b8%e5%9e%8b%e5%bd%a2%e5%bc%8f/page/4/","data_source_category":"HTML","path":"data_math/ccjou/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49a958d4-7aed-42f2-86f4-b5428be6d5d7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2014/02/17/%E9%81%8B%E7%94%A8%E8%BC%B8%E5%85%A5%E8%BC%B8%E5%87%BA%E6%A8%A1%E5%9E%8B%E6%B4%BB%E5%8C%96%E7%A7%A9%E2%94%80%E9%9B%B6%E5%BA%A6%E5%AE%9A%E7%90%86/","data_source_category":"HTML","path":"data_math/ccjou/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62d4b4e6-92cd-4a08-a87c-9232d174dfc5","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/pow-%e4%ba%8c%e6%ac%a1%e5%9e%8b/page/7/","data_source_category":"HTML","path":"data_math/ccjou/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e65e1bf-44c8-47c4-8d6b-5bd4228cc015","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2013/05/03/%E7%B7%9A%E4%BB%A3%E8%86%A0%E5%9B%8A%E2%94%80%E2%94%80%E7%B7%9A%E6%80%A7%E8%AE%8A%E6%8F%9B%E8%A1%A8%E7%A4%BA%E7%9F%A9%E9%99%A3/","data_source_category":"HTML","path":"data_math/ccjou/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cbf2cb02-9732-466d-b654-d2e549ca05f5","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/03/14/ab-%e5%92%8c-ba-%e6%9c%89%e4%bd%95%e9%97%9c%e4%bf%82/","data_source_category":"HTML","path":"data_math/ccjou/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"42eba05c-be82-4d95-a51f-d22862102762","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/author/ccjou/page/13/","data_source_category":"HTML","path":"data_math/ccjou/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d0920eb-0dca-429b-9584-739fb9dab9b6","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2012/06/28/%E6%9C%80%E5%B0%8F%E5%B9%B3%E6%96%B9%E6%B3%95%E6%96%BC%E5%9C%96%E5%BD%A2%E6%AF%94%E5%B0%8D%E7%9A%84%E6%87%89%E7%94%A8/","data_source_category":"HTML","path":"data_math/ccjou/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8a9f7616-6cdd-410a-8a00-ab4fe13e24aa","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/pow-%e5%90%91%e9%87%8f%e7%a9%ba%e9%96%93/page/8/","data_source_category":"HTML","path":"data_math/ccjou/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b343a52f-6e67-4c17-86db-442dd2d1f96a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/12/22/%E7%89%B9%E6%AE%8A%E7%9F%A9%E9%99%A3-%E5%85%AB%EF%BC%9Avandermonde-%E7%9F%A9%E9%99%A3/","data_source_category":"HTML","path":"data_math/ccjou/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6310ef2b-6ff4-4655-ba26-5f9fd2c98add","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/09/14/%e6%af%8f%e9%80%b1%e5%95%8f%e9%a1%8c-september-14-2009/","data_source_category":"HTML","path":"data_math/ccjou/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7015f90c-0b87-49bd-9c88-e72878ab7ed7","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/author/ccjou/page/9/","data_source_category":"HTML","path":"data_math/ccjou/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c06ad101-7baf-428b-8363-0ed9344f37d4","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/05/27/%E7%B7%9A%E6%80%A7%E4%BB%A3%E6%95%B8%E5%9F%BA%E6%9C%AC%E5%AE%9A%E7%90%86-%E5%9B%9B/","data_source_category":"HTML","path":"data_math/ccjou/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b124da1a-8954-41db-9cec-d4ba4c90616a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/06/01/%E5%BE%9E%E4%B8%8D%E8%AE%8A%E5%AD%90%E7%A9%BA%E9%96%93%E5%88%87%E5%85%A5%E7%89%B9%E5%BE%B5%E5%80%BC%E5%95%8F%E9%A1%8C/","data_source_category":"HTML","path":"data_math/ccjou/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8a905529-46ef-4941-a501-9c2c720b5e00","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/10/21/%e4%ba%8c%e6%ac%a1%e5%9e%8b%e8%88%87%e6%ad%a3%e5%ae%9a%e7%9f%a9%e9%99%a3/","data_source_category":"HTML","path":"data_math/ccjou/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e74ba61a-cc38-4dc1-be2f-c091be075949","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/tag/%e8%a1%8c%e5%88%97%e5%bc%8f/page/8/","data_source_category":"HTML","path":"data_math/ccjou/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d783c42-f456-4784-b616-3589995ed32b","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2011/04/04/%E8%AD%89%E6%98%8E%E6%88%96%E5%8F%8D%E9%A7%81/","data_source_category":"HTML","path":"data_math/ccjou/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"28e31477-9f24-40f4-b416-0d0b07e3cc0d","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/05/20/%E8%BD%89%E7%BD%AE%E7%9F%A9%E9%99%A3%E7%9A%84%E6%84%8F%E7%BE%A9/","data_source_category":"HTML","path":"data_math/ccjou/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"189d2b3e-11d3-472d-b975-8b28ebde24cf","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2017/01/10/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E8%88%87%E4%BD%8E%E7%A7%A9%E7%9F%A9%E9%99%A3%E8%BF%91%E4%BC%BC/","data_source_category":"HTML","path":"data_math/ccjou/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"afdd241f-5ec1-4f3e-b13e-cf1b14a8ea1a","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2010/04/12/%e5%a5%87%e7%95%b0%e5%80%bc%e5%88%86%e8%a7%a3%e7%9a%84%e5%b9%be%e4%bd%95%e6%84%8f%e7%be%a9/","data_source_category":"HTML","path":"data_math/ccjou/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc974d08-8222-417c-90db-9d020b6d8369","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/page/10/","data_source_category":"HTML","path":"data_math/ccjou/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60246f2f-e997-4f67-ba35-a26e4e0c3348","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/page/12/","data_source_category":"HTML","path":"data_math/ccjou/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"169035fc-854c-4d70-864e-fb377efdf4f5","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/category/pow-arch/page/15/","data_source_category":"HTML","path":"data_math/ccjou/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e8daf514-79f3-48c3-9c60-30890d5deb70","dataset_name":"eval_pipeline_suit","url":"https://ccjou.wordpress.com/2009/11/13/%E8%A1%8C%E7%A7%A9%E5%88%97%E7%A7%A9/","data_source_category":"HTML","path":"data_math/ccjou/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7c7966d6-300b-4dd3-983a-e808af961cc4","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Poincar%C3%A9_sphere&limit=20","data_source_category":"HTML","path":"data_math/encyclopediaofmath/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f94e78fe-323e-4a8e-a494-b9a9b40c022c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Character_(mathematics)/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b7247495-5c64-4da2-81c7-6b2617d9f16f","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Two-liquid_plasma_model&diff=prev&oldid=49055","data_source_category":"HTML","path":"data_math/encyclopediaofmath/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ac83673f-44aa-40b6-88e5-f4758db08758","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:GOLD_APPLE_ICLOUD_CUSTOMER_SERVICE_PHONE_NUMBER_18774670649&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6bf5c40a-ccdd-42f6-95a2-53a6b39a1e26","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Riemann%E2%80%93Christoffel_tensor&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"157d6ad0-e799-41e3-a559-2fb005ded35e","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Bhatnagar%E2%80%93Gross%E2%80%93Krook_model/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0fdfc144-3b4b-4ce8-be5b-be665c8e802c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Vlasov%E2%80%93Poisson%E2%80%93Fokker%E2%80%93Planck_system/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"383124ad-4ab4-4a76-a954-b0b0c4b85780","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Fokker%E2%80%93Planck_equation/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"30d19a22-718f-49f0-b20d-8a9010c546f6","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Borel%E2%80%93Cantelli_lemma&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2cbaafd-404e-4742-a54b-3c35d6cc7db5","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Matroid_lattice/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af2d8d89-1cd9-4fa9-82b3-548692c65304","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Biplanar_space&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"566fc0b8-1121-43b2-8b6f-0359f680c015","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:Bulletin_of_the_American_Mathematical_Society&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53532d1b-20ee-465c-a09d-8475d0dc4595","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Domain,_double-circled/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66cc7605-9058-43fd-b1cc-9db40fc48a2a","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Markov%E2%80%93Bernstein-type_inequalities&hideredirs=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f4341ec9-3ea3-4c3d-bc51-c07cf1f0b10b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Bi-ideal_sequence&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c1a2961b-b05b-44e5-86ba-d1a8b4599edb","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Converse_theorem/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"88361a0a-5c0b-489e-a6ca-e26a7d5c83e9","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Pruefer_domain&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f19601a0-10b9-4aaa-bf20-708d517388cc","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Delian_problem/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d99cbf71-a3c0-4e06-b0da-f5e650e403dd","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:London_Mathematical_Society&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3cc9079d-9482-4b7b-9772-a50c21477603","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Grotzsch_theorems&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca15e443-3de0-4c22-9687-571653a317c1","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Spectral_space/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8eb17c39-832d-41f2-900e-54fa0248acd5","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Uniformly_recurrent_word/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"820b4e1e-bb54-4ee4-935c-c8a84240d025","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Floating_point&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e2bb744d-1d2a-4f12-b840-1fc918ecc050","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Torricelli_point&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d15e879b-ed6b-49ab-a4b9-6d0971106105","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Darboux_frame/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83df3b78-4a43-4bbc-b83f-3062b74745a1","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Probl%C3%A8me_des_m%C3%A9nages&hidelinks=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ad70def-2a61-400e-8443-17c7c6f493fa","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Cohen%E2%80%93Macaulay_ring/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9a3adae-0595-4143-8940-a24b972250c1","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Fermi%E2%80%93Dirac_statistics&hidelinks=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fb1e2ac2-dbf2-4f62-9e02-4846fdcafa79","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Lorentz_group/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4dfd1fe7-1960-4d11-abf5-b3a6368f464b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Asymptotic_Relative_Efficiency_in_Testing/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2db85c21-2512-49ce-8a31-0b4c1d984b02","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Fundamental_cocycle&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"303d1460-375e-4b9b-a1fc-229875d051b0","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Choquet%E2%80%93Kendall%E2%80%93Matheron_theorem/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8a0ff28d-7c62-4926-9b1e-fca47aeb28f8","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:WhatLinksHere/Talk:Ward_theorem","data_source_category":"HTML","path":"data_math/encyclopediaofmath/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"762e7d54-1284-4a4e-9361-248089dfcb07","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Singularity_theory&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"298d0a74-78d7-452c-9cfd-3c3873eb4e1b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Non-residue/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56d5cf70-fadd-49f2-8434-2055ffd01ce5","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=User:Richard_Pinch/sandbox-13&diff=prev&oldid=50930","data_source_category":"HTML","path":"data_math/encyclopediaofmath/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60e8f29e-7b9d-4777-8378-2d29919bb12e","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Characteristic_mapping&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f92d248b-50a7-42e0-92f9-4784568e7627","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Elliott%E2%80%93Daboussi_theorem&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a5f8d816-1c00-43f0-8d46-483047576d41","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Minimal_propositional_calculus/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3cc9725c-563b-4389-8f22-258c39b0b7bb","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Pythagoras_number/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e6502cc2-1860-4b87-a024-cc0b08f9a7c0","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Buekenhout%E2%80%93Metz_unital/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f6813e52-100b-4bba-a46d-2de543eb66ae","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Spitzer_identity/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad263513-3721-406b-99c3-63d4ea93a7de","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:Kalman%E2%80%93Yakubovich_lemma&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d21c62ba-9b52-479d-bb66-1f5bafad4e1c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:Syntactic_theorem&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f5eef30-819d-4ce6-bc67-48688aa4f37f","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Isolated_set/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6649372f-fc1b-4e5c-a0f6-68d91e021cfa","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Poincare_conjecture&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"89910128-fa52-45cc-850c-3318d485b258","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Euler_line&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d1e380e1-a9d3-4ac3-8bdc-7affaf56407d","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Hilbert_infinite_hotel/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad5c6342-bb80-44d2-bf46-eb5701b325a5","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Lobatto_quadrature_formula&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"93801fd7-5981-42c2-8f3b-d758a7afda7b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Inductive_cardinal&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf9302e7-87f8-4a16-af05-c12d94d1d815","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:WhatLinksHere/Dupin_theorem","data_source_category":"HTML","path":"data_math/encyclopediaofmath/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f48a83ad-6b82-4168-a7aa-6a0cb20e6d2f","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:Search&search=E.+H.+Moore","data_source_category":"HTML","path":"data_math/encyclopediaofmath/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4ea8257c-f781-4c56-b589-ce412fb78f7e","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Graph_(mathematics)&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb42039d-963b-426e-90b9-65fa52f8c79a","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Equidistribution&hidelinks=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b6dd0533-4835-4a3e-8184-10c3147c9260","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Igor_Shafarevich/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1689f170-8711-4bf5-89cb-a0d9d38a858a","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Cyclic_code/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6ffd19a-299f-41ec-b5e6-0749d6171209","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:LPT_sequencing/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8eae37c2-e4c9-4e5c-8334-5a4ce6df155e","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Talk:Radian","data_source_category":"HTML","path":"data_math/encyclopediaofmath/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b7084c7-9b43-4be1-bf1b-54503a8a9627","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/User:Maximilian_Janisch/Sandbox/Test/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"566dae19-6ea2-4959-ad79-1fa8aa363891","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Lyusternik%E2%80%93Shnirel%27man%E2%80%93Borsuk_covering_theorem&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"41e23dda-22a3-47ef-b00b-eb6b11e73195","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/File_talk:Shailene_Woodley_Amazing_Spider_Man_2_Jacket,_FMJ_-02.jpg/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d0892d4-66d2-4b72-9ae3-3a28d08de3f6","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Fourier%E2%80%93Stieltjes_algebra&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9773099-1885-4e80-91bd-f4b018f9af51","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Runge_domain/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"88898130-cbef-418c-b7de-1b4e6ab00660","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Fourier%E2%80%93Stieltjes_algebra/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b6ac8c9-587a-4bf3-aa44-61506e4839b8","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Ditters%E2%80%93Scholtens_theorem/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a4359fe0-7bf2-4952-82e9-98c62a128da2","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Siegel-Walfisz_theorem&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"27909f36-c733-4fcf-a5d8-57b983291f81","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Wiener%E2%80%93Wintner_theorem/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ae3e6dc-d622-48bc-a877-c757ed47b28d","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Frechet_topology&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04765f6e-7ded-4f2b-9c3b-2f42d239f002","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Quasi-informational_extension/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cdf5b199-cd3c-42cf-a65c-d61c8362408c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Frechet_topology/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2f7c0ae5-f7ff-474e-b4df-a65b359be810","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Talk:Inner_product_space","data_source_category":"HTML","path":"data_math/encyclopediaofmath/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a081bc61-12d4-440c-98a3-41f058d65ace","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Magic_squares&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52d225fc-4b95-4527-9b68-f41e34a42c06","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Descending_chain_condition&hidelinks=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11fc2678-b443-45c1-a633-30df1c421c6f","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Rennaissance/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"365e53a7-618e-4f5f-82d2-c45d6cfa38b0","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Wiener%E2%80%93Hopf_equation/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"259a6e60-1943-433a-8254-ade00eafba08","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:WP:Linking&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f34fad8-32d2-4552-9de0-df23155fa2ee","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Cech%E2%80%93Stone_compactification_of_omega/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"023b132f-8348-47cd-ae74-a60952149a8a","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Screen_reader/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2280e96-a996-449b-97c1-33b0f9b78f54","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Harmonic_vibration&hidelinks=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af432167-15fa-45f1-9628-6a38adb39750","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Hack_(technology)&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"765078a1-14c1-4051-81d0-3af18752dc92","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Poincare_space&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4c23b26-caf8-4ce2-ac1e-15f23678d970","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Cayley%E2%80%93Darboux_equation&action=edit","data_source_category":"HTML","path":"data_math/encyclopediaofmath/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b00e7d7b-f584-4b03-bb43-b054bdb68233","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Scalar_triple_product&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e19c1f5-6c19-4ab7-a546-b41001891e6c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Complexification_of_a_vector_space&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"05629490-d358-425a-93ca-ccd5d7b925c0","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=User:Richard_Pinch/sandbox-13&diff=prev&oldid=51023","data_source_category":"HTML","path":"data_math/encyclopediaofmath/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4390944d-920b-4c6b-82e5-97aee6d398ff","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Lucas_numbers/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e61ef59a-bfcd-4da4-a4a9-2d15430f077b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Hodograph_transform/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0a4a1945-49d3-4d1e-a2a5-e20cbdad1719","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Talk:Classification_of_finite_simple_groups&action=info","data_source_category":"HTML","path":"data_math/encyclopediaofmath/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"efd0be52-44ad-4ba3-9c43-e89a5db0e45b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Incentre/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03718958-f88d-47ad-ba76-9b60eff68cbf","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Cyclic_semi-group/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2ca12346-eff2-4f60-a9de-511214bf961c","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:WhatLinksHere/@ks.....((18*44*782*8096))_skype_Support_Number_skype_customer_service_phone_number%E2%9E%A8%E2%9E%A8%E2%9E%A8_%2218447828096%22","data_source_category":"HTML","path":"data_math/encyclopediaofmath/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d638f650-a6b8-4e4e-a217-ce29023b4df7","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:WhatLinksHere/Microsoft_Outlook_Support_Number_1-877-370-3189_saktimaan","data_source_category":"HTML","path":"data_math/encyclopediaofmath/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2799951f-1f11-4971-9e6a-727a3da28bb1","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Graph,_regular/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3ff23417-ef1a-4e88-8c62-d4523456292e","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Codomain&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f885aba1-e836-41ec-bcb5-715ee235ab08","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:PrefixIndex/Talk:Bisector_plane/","data_source_category":"HTML","path":"data_math/encyclopediaofmath/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"395b5b07-f4e8-49a6-8c8a-7dac2d284d56","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Implicative_normal_form&hidelinks=1&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bb0bebc-9d4a-4f0a-8cff-54ad350f459b","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Saxon%E2%80%93Hutner_theorem&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49c3272a-95ae-44d8-901a-5d6ea8b96980","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Semi-continuous_decomposition&action=edit&oldid=17298","data_source_category":"HTML","path":"data_math/encyclopediaofmath/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c670cc83-e299-41f2-a6b3-edee6b121e01","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/index.php?title=Special:WhatLinksHere/Talk:Optimization_of_a_computational_method&hidetrans=1","data_source_category":"HTML","path":"data_math/encyclopediaofmath/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6a141e57-8680-4bca-86f2-7b0f898b7b3a","dataset_name":"eval_pipeline_suit","url":"https://encyclopediaofmath.org/wiki/Special:WhatLinksHere/Talk:Upper_central_series","data_source_category":"HTML","path":"data_math/encyclopediaofmath/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83e02bbc-955c-4d76-99e7-d595ccea1b8a","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/14999","data_source_category":"HTML","path":"data_math/chaoli/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"679a70f9-1673-404c-8556-809b6cacbe3e","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/12763","data_source_category":"HTML","path":"data_math/chaoli/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d135700b-520e-4500-a53b-a042712495b0","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10750/last","data_source_category":"HTML","path":"data_math/chaoli/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c378cca-b173-494e-8596-8bd250155e50","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10687/unread","data_source_category":"HTML","path":"data_math/chaoli/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4499bffe-4b25-4448-855e-1337cbf85548","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10801/unread","data_source_category":"HTML","path":"data_math/chaoli/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aec86a1f-89d4-49d6-a4bb-4426107fec28","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10569","data_source_category":"HTML","path":"data_math/chaoli/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52541f87-9eed-44c9-b56e-b85ff7a4a85c","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10554","data_source_category":"HTML","path":"data_math/chaoli/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b9fdfffc-a4da-4794-8a9f-2250e226e52b","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10615/last","data_source_category":"HTML","path":"data_math/chaoli/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0d96a535-ebd0-4e85-9160-810f4d8aae3f","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/14272","data_source_category":"HTML","path":"data_math/chaoli/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b212c510-6f08-40d3-9e44-d766f6e43f97","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9490","data_source_category":"HTML","path":"data_math/chaoli/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7b5655b5-f183-48d0-9815-5ac3c135af50","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9488","data_source_category":"HTML","path":"data_math/chaoli/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"688d2f3e-2294-4f6e-a848-2187c7400b03","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9365","data_source_category":"HTML","path":"data_math/chaoli/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2500f93-d324-407d-b141-8f30db8bf2a0","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9160","data_source_category":"HTML","path":"data_math/chaoli/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3a11bac9-dd71-4087-81a2-03a8e370ad52","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/9565","data_source_category":"HTML","path":"data_math/chaoli/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"01c9bb9b-b993-4512-917d-fa6ff26f367f","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10895/unread","data_source_category":"HTML","path":"data_math/chaoli/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bb37aa68-7f76-4be5-b762-8233277fb381","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/12698","data_source_category":"HTML","path":"data_math/chaoli/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0ba7c29c-72ef-4be4-b8bb-a08af00337a4","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10815/last","data_source_category":"HTML","path":"data_math/chaoli/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b9e7ead-d1e3-470b-9006-53705cbbaf40","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9423/unread","data_source_category":"HTML","path":"data_math/chaoli/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e18461fc-a858-494b-83f7-ccea611bb3a3","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10630","data_source_category":"HTML","path":"data_math/chaoli/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4e96e5aa-3b77-41ae-b2a9-3195943c5911","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10540","data_source_category":"HTML","path":"data_math/chaoli/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63b27875-847e-4b0d-9c5d-5c86df05bd14","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10330/unread","data_source_category":"HTML","path":"data_math/chaoli/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fcd79f2a-d69b-49f7-8142-4ae2cf79b068","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9847/last","data_source_category":"HTML","path":"data_math/chaoli/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"57823caf-3f88-4d18-a8fc-4b80023f7c5d","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9596/unread","data_source_category":"HTML","path":"data_math/chaoli/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6c76ea3-a356-4691-951a-e3e7caee5d10","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8970/unread","data_source_category":"HTML","path":"data_math/chaoli/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c634c590-5dfb-4f90-9f66-7d79c5a275d9","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9034/unread","data_source_category":"HTML","path":"data_math/chaoli/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"25f7ba7c-bb88-4e95-8fca-82d9aca2266e","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8448","data_source_category":"HTML","path":"data_math/chaoli/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e04e984-09c9-423e-9ffd-63f2bd08041b","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8448/last","data_source_category":"HTML","path":"data_math/chaoli/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"db8dcb8c-0636-4e36-81ec-9fff639cb369","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10925/last","data_source_category":"HTML","path":"data_math/chaoli/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54ef0f80-7925-4e0f-9ee5-f59ba2ba6190","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10845/unread","data_source_category":"HTML","path":"data_math/chaoli/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"94affb25-0284-4796-a909-1545b717a249","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10819","data_source_category":"HTML","path":"data_math/chaoli/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"38bfdc59-72fb-47cd-93f4-18bb7e11f6af","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/9689","data_source_category":"HTML","path":"data_math/chaoli/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8f466e08-2566-4e19-b67e-075f01ed8cb8","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9880/unread","data_source_category":"HTML","path":"data_math/chaoli/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c579393-f03e-4f8f-aa18-002e047919a0","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/627","data_source_category":"HTML","path":"data_math/chaoli/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af816a2a-4c0f-4150-a85d-4396593a4382","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8554/unread","data_source_category":"HTML","path":"data_math/chaoli/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf92c33d-3dad-46a8-b3f1-1c87596795d3","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/12223","data_source_category":"HTML","path":"data_math/chaoli/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"10cfd191-62e0-4be9-9c76-0cb17051b172","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/9846","data_source_category":"HTML","path":"data_math/chaoli/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"29783ffa-565e-4ce9-b7bf-da770e55748c","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/7622/last","data_source_category":"HTML","path":"data_math/chaoli/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"373e84da-ec56-494b-8a3b-b7141f93ed82","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/6978/unread","data_source_category":"HTML","path":"data_math/chaoli/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8066910c-ddd1-4027-a1f7-c52873715898","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/12582","data_source_category":"HTML","path":"data_math/chaoli/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6cd99c3b-af64-4adf-b1fb-60f05e831d22","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/7360","data_source_category":"HTML","path":"data_math/chaoli/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c21364c6-df0e-4d70-9e30-4f30bc4fd867","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/7051/unread","data_source_category":"HTML","path":"data_math/chaoli/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1c284c4-af52-4e9d-ab61-1a32f4c8a79b","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/6249/last","data_source_category":"HTML","path":"data_math/chaoli/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"23faf87b-016b-4a15-972a-4c0b9b6df9b4","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/6236/last","data_source_category":"HTML","path":"data_math/chaoli/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"991f7cb2-18ce-4522-b371-cab2fa2f8b6d","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10989/last","data_source_category":"HTML","path":"data_math/chaoli/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0227b465-4e4b-44ad-9b8e-c73e9c2af4b3","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/14617","data_source_category":"HTML","path":"data_math/chaoli/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"58780e52-b6b8-4c4e-81ca-1d376bb84297","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10258","data_source_category":"HTML","path":"data_math/chaoli/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c7db5e5-d540-4b3f-ba17-4ea39030579b","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/14353","data_source_category":"HTML","path":"data_math/chaoli/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7c94178b-d40c-4716-a42a-2cc0c617642f","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/10663","data_source_category":"HTML","path":"data_math/chaoli/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"832c6c15-2e70-49ed-9520-b06f6e1e1310","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8196","data_source_category":"HTML","path":"data_math/chaoli/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f64f5fc5-015b-4f64-95ec-4828236c43a9","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8565","data_source_category":"HTML","path":"data_math/chaoli/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8f1ec74a-1c88-48f5-9186-589fa70d55d8","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/6768/last","data_source_category":"HTML","path":"data_math/chaoli/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a2a7dc30-e428-40c5-be22-ed6d3fb8a604","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/10502/last","data_source_category":"HTML","path":"data_math/chaoli/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52cd790c-9470-4cbe-80d4-1868af96e8ab","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9318","data_source_category":"HTML","path":"data_math/chaoli/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c325c629-4a31-4810-b545-b40b901ecba3","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/3973","data_source_category":"HTML","path":"data_math/chaoli/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"021d7b6d-978c-493b-829a-2df607b5f2e8","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9254/last","data_source_category":"HTML","path":"data_math/chaoli/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17e1d5d2-8a05-4706-a3d9-ec95897f79f9","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9254","data_source_category":"HTML","path":"data_math/chaoli/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"167271a1-11cf-4e93-aab0-12868a10e125","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/9142","data_source_category":"HTML","path":"data_math/chaoli/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"003a9d49-cce8-4010-aca4-69414dd061d0","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/6400","data_source_category":"HTML","path":"data_math/chaoli/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80bc1ed8-02d7-4391-b473-a9aa40489363","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/5148","data_source_category":"HTML","path":"data_math/chaoli/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c10e1c2d-d9df-49ed-a975-04d47ddb3e8a","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/4972","data_source_category":"HTML","path":"data_math/chaoli/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"36529dfd-37c6-4da9-ac7e-fb96eaec9d70","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/4522/last","data_source_category":"HTML","path":"data_math/chaoli/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3848a6b7-0a5d-441f-b337-c9c8a83f4803","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/1968/last","data_source_category":"HTML","path":"data_math/chaoli/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f5d7463b-e411-40fa-9481-7487b04c0234","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/7785/2023/9","data_source_category":"HTML","path":"data_math/chaoli/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aa0bc0d3-36a8-48f1-bc13-0a103d371946","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/71196","data_source_category":"HTML","path":"data_math/chaoli/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"875d267e-aff8-4d61-8674-abf69dceb944","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/7785/2024/11","data_source_category":"HTML","path":"data_math/chaoli/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"429d986f-ed4d-4272-90fb-90934cfbe84f","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/85127","data_source_category":"HTML","path":"data_math/chaoli/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e611c1f6-4032-4e61-8f37-551e79ce9d0e","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/95386","data_source_category":"HTML","path":"data_math/chaoli/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f918f09-2be5-4b86-9e99-cf2065381de7","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2024/3","data_source_category":"HTML","path":"data_math/chaoli/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0eb79893-894d-4dc6-ad62-4a329d31e5f4","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2023/3","data_source_category":"HTML","path":"data_math/chaoli/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c12dc7a1-6121-4e39-861d-15d3bad5f075","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2023/11","data_source_category":"HTML","path":"data_math/chaoli/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fe88ac92-faa5-4343-8c34-84480704b4a1","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2023/8","data_source_category":"HTML","path":"data_math/chaoli/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15ec532e-a98b-437b-8dc5-aa8c47fadd8e","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2023/10","data_source_category":"HTML","path":"data_math/chaoli/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"40da6343-b8b2-4920-89b5-8f125856c816","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2024/1","data_source_category":"HTML","path":"data_math/chaoli/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dd0eb4c8-ac4f-4b4c-8172-251d01b63a6d","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/8465/2024/12","data_source_category":"HTML","path":"data_math/chaoli/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d0c1c366-464a-4f4e-b916-9fe06b0538fe","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/94353","data_source_category":"HTML","path":"data_math/chaoli/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c343fb56-53ee-48b7-a29b-965502aa4d61","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/94538","data_source_category":"HTML","path":"data_math/chaoli/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"057871ae-3081-4a34-b97d-8380cc5ff648","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/95368","data_source_category":"HTML","path":"data_math/chaoli/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"91b05006-b671-48eb-853f-30c5419190c9","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/62","data_source_category":"HTML","path":"data_math/chaoli/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"638923e5-16df-4db6-b3c8-1d75d6df9ebc","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2015/9","data_source_category":"HTML","path":"data_math/chaoli/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04035ed7-de33-43da-b2f0-85f7aa75da00","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2015/2","data_source_category":"HTML","path":"data_math/chaoli/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"95b6dd7a-1a5f-4933-a4e9-a9a211bf24de","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2016/5","data_source_category":"HTML","path":"data_math/chaoli/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b09146a-058a-4c5d-84e3-255d26a724ba","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2017/4","data_source_category":"HTML","path":"data_math/chaoli/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ae64e8bf-f657-4e6e-89c3-fdc3ea0e15f7","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2018/8","data_source_category":"HTML","path":"data_math/chaoli/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"00f6cf55-3962-4dc9-abf5-7b2abac27fa8","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2018/9","data_source_category":"HTML","path":"data_math/chaoli/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f82128af-c64e-4579-ab2c-37c2eae3f075","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2019/1","data_source_category":"HTML","path":"data_math/chaoli/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e032fd7b-be9e-42ef-9225-a726b696e505","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2020/12","data_source_category":"HTML","path":"data_math/chaoli/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fce958e8-556e-4736-bcbf-c0e85c051a87","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2022/3","data_source_category":"HTML","path":"data_math/chaoli/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"44b46bc0-d49e-420b-bce6-b82701863f82","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2022/6","data_source_category":"HTML","path":"data_math/chaoli/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"32485ebc-30c1-473a-be88-78e79197dbfa","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/2023/4","data_source_category":"HTML","path":"data_math/chaoli/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed846907-2473-427f-9a4a-3b7bce5c9af7","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/2533","data_source_category":"HTML","path":"data_math/chaoli/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e07a13a-4130-4bbe-b28e-51107f798f85","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/activity/13","data_source_category":"HTML","path":"data_math/chaoli/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3abfa71b-627a-4875-90f4-5a21e85b9375","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/76724","data_source_category":"HTML","path":"data_math/chaoli/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"35367c0b-6f51-4fb8-8b8c-ecfa72f928ba","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/1291","data_source_category":"HTML","path":"data_math/chaoli/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9767d88b-821e-44c0-ac1a-23ef7aa7d1c0","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/70271","data_source_category":"HTML","path":"data_math/chaoli/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0d4e0af5-61c6-43bf-bdd6-03fd82604de9","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/3887","data_source_category":"HTML","path":"data_math/chaoli/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8fcb1f5-f18f-4c83-9d1c-981e0b1bcece","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/member/104","data_source_category":"HTML","path":"data_math/chaoli/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"33eae343-4b1e-446b-9242-5a442822f987","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/5114","data_source_category":"HTML","path":"data_math/chaoli/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a436dd59-9803-4a85-a075-3cd72aabebfd","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/50/22","data_source_category":"HTML","path":"data_math/chaoli/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e84e0a41-fc9f-448e-9a33-62c18b942122","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/6488","data_source_category":"HTML","path":"data_math/chaoli/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f64a6de4-a7ad-4eec-a8d9-f96ac92395eb","dataset_name":"eval_pipeline_suit","url":"https://chaoli.club/index.php/conversation/post/68519","data_source_category":"HTML","path":"data_math/chaoli/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52fc8e55-47f2-4add-af0e-811254c69f20","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2022/10/03/an-illustrated-counterexample-to-the-smooth-four-dimensional-poincare-conjecture/","data_source_category":"HTML","path":"data_math/sketchesoftopology/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2eb6fe20-f948-4fc5-a468-56120f65b5a4","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/uncategorized/","data_source_category":"HTML","path":"data_math/sketchesoftopology/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"85aed637-949a-4069-b4b7-1d365b340f2e","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/surgery-description/","data_source_category":"HTML","path":"data_math/sketchesoftopology/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fb43d416-290d-4507-9aba-63f33f208487","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/page/2/","data_source_category":"HTML","path":"data_math/sketchesoftopology/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d582db49-d9f6-4bd7-9059-0d3681100265","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2022/10/","data_source_category":"HTML","path":"data_math/sketchesoftopology/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d61bdb20-9755-4e94-95f3-b4cc9f3da70d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/07/","data_source_category":"HTML","path":"data_math/sketchesoftopology/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"25532205-4b5a-49ea-bfeb-f207b02ddce8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/06/","data_source_category":"HTML","path":"data_math/sketchesoftopology/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d34ba99-1574-4e60-ac1c-dee9fa4a0829","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/04/","data_source_category":"HTML","path":"data_math/sketchesoftopology/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e08cbff4-829b-4cb5-becb-45506b5550f0","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2010/07/","data_source_category":"HTML","path":"data_math/sketchesoftopology/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c011c1dd-8961-42dd-a030-8e9eb8a50993","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/09/","data_source_category":"HTML","path":"data_math/sketchesoftopology/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e20fe13c-f528-4634-91ec-f7fd555a4b7f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/uncategorized/page/2/","data_source_category":"HTML","path":"data_math/sketchesoftopology/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"acff7772-515c-4419-bd2d-78d67caddc15","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/covers/","data_source_category":"HTML","path":"data_math/sketchesoftopology/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"44750e60-72ab-4fe3-b6b6-7646952b397b","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/10/26/the-link-of-a-divide/","data_source_category":"HTML","path":"data_math/sketchesoftopology/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"494b25d9-0c9c-40b4-9cde-e438a22fafb2","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/09/14/blowing-up-an-arc/","data_source_category":"HTML","path":"data_math/sketchesoftopology/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"23648d32-aa31-4910-b79c-6469ae871033","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/07/09/sutured-manifold-decomposition-of-7_7/","data_source_category":"HTML","path":"data_math/sketchesoftopology/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d85283da-7d99-4c8c-8e7b-1654d2a6615c","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/triangulation/","data_source_category":"HTML","path":"data_math/sketchesoftopology/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"84da3f91-f022-4b4f-b04f-f7a09bee5b0e","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/once-punctured-torus/","data_source_category":"HTML","path":"data_math/sketchesoftopology/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3819f3cf-4572-4d63-be17-51983af94b3d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/01/13/relative-open-books-in-t2-x-i/","data_source_category":"HTML","path":"data_math/sketchesoftopology/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0f5bb2fc-8b0d-4c47-adbe-9dbc9707f553","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/11/24/the-jvhm-open-book/","data_source_category":"HTML","path":"data_math/sketchesoftopology/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"25fe250b-875f-4569-95b3-fea48ee2fed6","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/pencil-and-paper/","data_source_category":"HTML","path":"data_math/sketchesoftopology/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f594b667-4279-461a-afef-4c443c339ced","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/06/30/braids-and-the-configuration-space-of-points/","data_source_category":"HTML","path":"data_math/sketchesoftopology/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b96b3a5a-9117-4540-b2ac-60d25fd01cca","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/surfaces/","data_source_category":"HTML","path":"data_math/sketchesoftopology/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"705315a1-4edc-417a-b07c-46079a1493c4","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/boundary-components/","data_source_category":"HTML","path":"data_math/sketchesoftopology/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"21ea1808-80a9-4c4f-a060-9a1e7906aa3f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/12/12/chopping-solid-tori-and-genus-2-handlebodies-along-annuli/","data_source_category":"HTML","path":"data_math/sketchesoftopology/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e03f813f-02d1-48af-bd70-9b93adfdfd32","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/11/17/twisted-saddles/","data_source_category":"HTML","path":"data_math/sketchesoftopology/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5433cc38-c870-4c4d-912b-1ce5549d700f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/uncategorized/page/3/","data_source_category":"HTML","path":"data_math/sketchesoftopology/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e637af87-abaa-4c25-9be7-812ccd0a9dd7","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2021/12/09/a-sketchy-surgery-description-of-swd/","data_source_category":"HTML","path":"data_math/sketchesoftopology/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"61f7cc48-1f78-4573-96d3-4121a6559123","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/branched-cover/","data_source_category":"HTML","path":"data_math/sketchesoftopology/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fdffc0f2-bc1c-416d-8da1-9f894bc13240","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/surgery/","data_source_category":"HTML","path":"data_math/sketchesoftopology/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc41d36b-ace2-4406-a5dc-c2f385cc422d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2019/01/29/reflections/","data_source_category":"HTML","path":"data_math/sketchesoftopology/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1241972d-9577-47f9-9327-23a478199078","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/tangles/","data_source_category":"HTML","path":"data_math/sketchesoftopology/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63b201a5-9dff-4837-a159-c9bfedd4c309","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/fibration/","data_source_category":"HTML","path":"data_math/sketchesoftopology/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"832614eb-6ff6-4236-8335-3855cd2ad915","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/surfaces/","data_source_category":"HTML","path":"data_math/sketchesoftopology/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"754be769-e0fc-4ecc-b34b-b260cc158267","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/06/02/embedding-models-el-thetarino/","data_source_category":"HTML","path":"data_math/sketchesoftopology/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0832d798-dea7-4da0-a555-ae27090c57a7","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/06/","data_source_category":"HTML","path":"data_math/sketchesoftopology/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9b196160-2b42-47a8-9f0d-a403c397601b","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/04/","data_source_category":"HTML","path":"data_math/sketchesoftopology/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e637a1fa-e647-4f3b-b4b1-cbe5fa758048","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/01/","data_source_category":"HTML","path":"data_math/sketchesoftopology/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1082d720-297e-4f4a-bfa8-e64fb27e92c8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/feed/","data_source_category":"HTML","path":"data_math/sketchesoftopology/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"419652dc-9faf-436c-964b-55a633cd9303","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/trefoil/","data_source_category":"HTML","path":"data_math/sketchesoftopology/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64e546a3-63b2-4f29-be27-aded7bca1aec","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2010/09/02/that-pretzel-knot-again/","data_source_category":"HTML","path":"data_math/sketchesoftopology/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c0e7bc42-2437-4271-8c46-ab2f688d067b","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2010/03/25/bings-house/","data_source_category":"HTML","path":"data_math/sketchesoftopology/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12dbdd92-6fb9-48dc-8dec-48cdd186a4b1","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/rhino/","data_source_category":"HTML","path":"data_math/sketchesoftopology/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bee456d-cfb0-4b41-8492-01807a87a04a","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/lens-space/","data_source_category":"HTML","path":"data_math/sketchesoftopology/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4168f3e5-9500-4c29-9256-0bf9ee0ef3e0","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/figure-eight/","data_source_category":"HTML","path":"data_math/sketchesoftopology/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fb6ca828-ab2e-43c7-861d-d2808218886e","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/07/04/math-in-design/","data_source_category":"HTML","path":"data_math/sketchesoftopology/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0025d833-3844-4eb3-930e-5e07d26ea9e8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/06/01/the-lantern-relation/","data_source_category":"HTML","path":"data_math/sketchesoftopology/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"515892d5-680a-4a86-bc6b-5ab36f8261e9","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/fibration/","data_source_category":"HTML","path":"data_math/sketchesoftopology/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e4d9f488-af51-4878-82f5-17cef77dec50","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/09/27/contact-heegaard-splittings/","data_source_category":"HTML","path":"data_math/sketchesoftopology/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7ccad92-363f-4a4a-8b6c-d78c955840fe","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/05/15/the-one-tetrahedron-one-vertex-triangulation-of-the-solid-torus/","data_source_category":"HTML","path":"data_math/sketchesoftopology/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a162de08-1a81-40de-a032-f464c5cdc1e7","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/euler-characterisitc/","data_source_category":"HTML","path":"data_math/sketchesoftopology/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5be98432-65d9-4bbe-8278-efa68262fdb7","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/connect-sum/","data_source_category":"HTML","path":"data_math/sketchesoftopology/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6188cce-f0b8-44f4-8b56-bdd97c37a8ec","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/page/7/","data_source_category":"HTML","path":"data_math/sketchesoftopology/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a0bd7f87-c9a2-487d-b854-c95f9e7a0645","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/dehn-surgery/","data_source_category":"HTML","path":"data_math/sketchesoftopology/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8eb06985-6299-49c4-9e25-3e1c0c48b55d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2014/04/","data_source_category":"HTML","path":"data_math/sketchesoftopology/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f9e7487-d408-4d91-ae75-148b34d373d9","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2013/04/","data_source_category":"HTML","path":"data_math/sketchesoftopology/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"565c93f7-ec96-4bf9-ba6e-e02d74435452","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/03/","data_source_category":"HTML","path":"data_math/sketchesoftopology/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb5125ac-f05e-40eb-88cf-d3d6707f33d5","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/08/","data_source_category":"HTML","path":"data_math/sketchesoftopology/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49af2c46-47d8-4d10-b0d5-7fda3d23748c","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/07/25/two-balls/","data_source_category":"HTML","path":"data_math/sketchesoftopology/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1731c63c-8c58-4553-a428-854dc3107437","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/12/10/a-rational-circle/","data_source_category":"HTML","path":"data_math/sketchesoftopology/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2302bf6a-42f8-4ec2-b420-35a4e0b5910f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/03/17/math-in-design-ii/","data_source_category":"HTML","path":"data_math/sketchesoftopology/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed11d8e3-e68e-4c05-9845-b9698a6bf10f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/knots/","data_source_category":"HTML","path":"data_math/sketchesoftopology/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f10aa1d6-16f6-4134-aea5-ce3be63ff52e","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/09/04/a-product-disk-for-the-hopf-band/","data_source_category":"HTML","path":"data_math/sketchesoftopology/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c21cf5d6-ab3d-4785-b8c2-4db09e8ca62e","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/seifert-fibration/","data_source_category":"HTML","path":"data_math/sketchesoftopology/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66bd9887-4263-42ec-b4ba-d01a4807e472","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/07/29/the-twice-punctured-torus/","data_source_category":"HTML","path":"data_math/sketchesoftopology/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c3e5e04e-7a00-4261-a565-1ec92e8cb6a5","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/figure-eight-sister/","data_source_category":"HTML","path":"data_math/sketchesoftopology/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0e1dcd41-5db2-4764-b395-fb60ba1320bc","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/montesinos-trick/","data_source_category":"HTML","path":"data_math/sketchesoftopology/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dd2f598a-daac-45d4-b8b3-08f58e9aff7a","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/08/29/toroidal-coordinates-on-s3/","data_source_category":"HTML","path":"data_math/sketchesoftopology/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"68c62b10-f4da-4c55-a036-4d643ac822cd","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/grid/","data_source_category":"HTML","path":"data_math/sketchesoftopology/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7a6ac120-8a1f-4c36-a2bd-011545d062b0","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/grid-diagram/","data_source_category":"HTML","path":"data_math/sketchesoftopology/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b52aee2b-a976-48e6-9275-b1fd4e3919c8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/page/3/","data_source_category":"HTML","path":"data_math/sketchesoftopology/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03978323-480c-4e25-a5ba-630f8ae6dd89","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/11/17/scharlemann-cycles/","data_source_category":"HTML","path":"data_math/sketchesoftopology/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"550a6b66-27f2-4990-b227-2a03e616ca6d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/heegaard/","data_source_category":"HTML","path":"data_math/sketchesoftopology/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48d4f6ea-f748-4e7b-b211-31003a88a650","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/02/14/sketchup-tool-box/","data_source_category":"HTML","path":"data_math/sketchesoftopology/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53bed572-4615-45cd-9a39-f9cd2ffbae0a","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/06/04/the-lantern-relation-ii-the-fake-lantern-relation/","data_source_category":"HTML","path":"data_math/sketchesoftopology/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56bcc633-b546-4ada-a9d7-a524e3ea0fe6","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/12/12/the-6j-symbols/","data_source_category":"HTML","path":"data_math/sketchesoftopology/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad4cfd1d-6dd7-42de-b41e-62de1049bb90","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/scharlemann-cycle/","data_source_category":"HTML","path":"data_math/sketchesoftopology/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"24a00e81-9cf6-4605-ae27-4fe502ed39a2","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/08/03/fibered-cable/","data_source_category":"HTML","path":"data_math/sketchesoftopology/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5423686c-68b5-42ba-835b-906dce02ae6d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/page/6/","data_source_category":"HTML","path":"data_math/sketchesoftopology/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7e0b6c5b-fa0c-4744-8cbb-134f0f64b762","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/whitehead-link/","data_source_category":"HTML","path":"data_math/sketchesoftopology/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"45576846-48e8-4277-9d17-27048de8019f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2010/07/17/berge-tangle/","data_source_category":"HTML","path":"data_math/sketchesoftopology/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9522f6e9-81da-4288-a4af-31ec953c0f9f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2013/12/20/joining-two-segments/","data_source_category":"HTML","path":"data_math/sketchesoftopology/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cfe65847-9b83-4968-a75d-da13104f0d4d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/11/17/grid-diagram-and-trefoil/","data_source_category":"HTML","path":"data_math/sketchesoftopology/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7f236bcc-448e-4ade-a94c-9c989135ac7f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/grid-diagram/","data_source_category":"HTML","path":"data_math/sketchesoftopology/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4418e755-bccc-4847-93d7-16b0e2af1a3d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/about/","data_source_category":"HTML","path":"data_math/sketchesoftopology/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03b129cd-946e-431a-983a-6ee8b84b5bca","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2019/01/","data_source_category":"HTML","path":"data_math/sketchesoftopology/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c2ea2aa4-aa41-4039-b70e-afd658979304","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/04/","data_source_category":"HTML","path":"data_math/sketchesoftopology/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f6a0e3e-ae40-4b64-a910-660ca472cdd1","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/10/","data_source_category":"HTML","path":"data_math/sketchesoftopology/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"933eb172-3cd5-4010-8bb6-74a1b11177a2","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/02/","data_source_category":"HTML","path":"data_math/sketchesoftopology/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bf5d6448-2f62-400e-82fb-60debca3a50f","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/03/28/pqisqp/","data_source_category":"HTML","path":"data_math/sketchesoftopology/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3960f4b-2a1b-4ff7-9d66-a7eff599d6c2","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2010/08/20/tomography/","data_source_category":"HTML","path":"data_math/sketchesoftopology/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3e722e86-6b93-4f63-baee-73ccc56fbbec","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2009/07/14/cables-and-torus-knots/","data_source_category":"HTML","path":"data_math/sketchesoftopology/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ffbd0626-1ee5-4060-a922-765e76cb1218","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/cable/","data_source_category":"HTML","path":"data_math/sketchesoftopology/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fedd05b5-c0f4-4342-a5a6-9c241331d445","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/category/seifert-fibration/","data_source_category":"HTML","path":"data_math/sketchesoftopology/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e876feed-a263-49f2-b7e2-749fc20bf3a3","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/fiber/","data_source_category":"HTML","path":"data_math/sketchesoftopology/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c409e7ac-d203-4669-9b2b-6762944a795d","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/03/22/whiteheadtangletangletangletangletangletangletangletangleadnauseum/","data_source_category":"HTML","path":"data_math/sketchesoftopology/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c655705e-3d51-4082-a345-35df270c5ac8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2011/06/06/rational-tangle-fibration/","data_source_category":"HTML","path":"data_math/sketchesoftopology/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"69fcd264-7672-498d-a49c-2f78fa535582","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/tag/knot/","data_source_category":"HTML","path":"data_math/sketchesoftopology/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"58bb17a7-2c3d-4b1f-b9b2-9453c10775a4","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/05/26/a-trefoil-and-a-klein-bottle/","data_source_category":"HTML","path":"data_math/sketchesoftopology/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af2e9094-5d89-4329-8b04-314e093c1ea8","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2008/08/01/long-disks-and-lopsided-bigons/","data_source_category":"HTML","path":"data_math/sketchesoftopology/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce348118-1116-41fa-a213-b9d239c9f804","dataset_name":"eval_pipeline_suit","url":"https://sketchesoftopology.wordpress.com/2007/11/17/contact-structures-dzxdy-ydx/","data_source_category":"HTML","path":"data_math/sketchesoftopology/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"763f2dab-1952-4dae-81fa-13b7e814e9fc","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=9","data_source_category":"HTML","path":"data_math/projecteuler/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"35bc43a9-59b2-4120-99d5-ab8725f917a8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/privacy","data_source_category":"HTML","path":"data_math/projecteuler/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"39df9cda-c97b-4bb6-afee-ca16090caa52","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=8","data_source_category":"HTML","path":"data_math/projecteuler/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"97b9ae5f-c005-4ccc-a771-15903882e5eb","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=2","data_source_category":"HTML","path":"data_math/projecteuler/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3bb8d152-8cf2-4d07-9c3c-a2875dd10b0c","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=928","data_source_category":"HTML","path":"data_math/projecteuler/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b49d48e2-5352-41e9-928e-fe1f3a22b1b6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=11","data_source_category":"HTML","path":"data_math/projecteuler/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"863aa803-5bc0-4573-bcdd-f35d141d746b","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=45","data_source_category":"HTML","path":"data_math/projecteuler/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a7c04131-8589-4544-a13a-86afb2a5dcf4","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=929","data_source_category":"HTML","path":"data_math/projecteuler/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dc3f703f-3a3d-4246-8a85-b40b6ed83ba8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=25","data_source_category":"HTML","path":"data_math/projecteuler/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f59ec40c-13b5-4049-a5ed-50eb92234575","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=25","data_source_category":"HTML","path":"data_math/projecteuler/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"02d2c758-91d4-4a54-a370-082ad475a7c5","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=33","data_source_category":"HTML","path":"data_math/projecteuler/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c3ecfd2f-c9f1-466f-bd44-4da1946ed82a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/recent","data_source_category":"HTML","path":"data_math/projecteuler/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"68663cc8-b71e-43d6-b805-0918047fc936","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=32","data_source_category":"HTML","path":"data_math/projecteuler/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ffa7f648-7a1a-403d-88e8-b44bf0c67b90","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=36","data_source_category":"HTML","path":"data_math/projecteuler/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c919c855-b0fa-4cc0-a579-edd91b7b3a30","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=13","data_source_category":"HTML","path":"data_math/projecteuler/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"61e3800b-70ca-4efd-859d-b92cf977f025","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=44","data_source_category":"HTML","path":"data_math/projecteuler/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ff9001d0-7d7e-4db2-9008-5ead36bf3bd6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=924","data_source_category":"HTML","path":"data_math/projecteuler/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5440a519-5c75-4bf1-a2d4-500a8901ae44","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=26","data_source_category":"HTML","path":"data_math/projecteuler/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"93bcc573-0f7e-4338-a539-219b8a27af59","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=34","data_source_category":"HTML","path":"data_math/projecteuler/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3bca3bc3-fc4e-42c8-b18a-6918117f351d","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=5","data_source_category":"HTML","path":"data_math/projecteuler/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c6db4b2c-924f-4d1d-a95e-5fb94dbc2f34","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=13","data_source_category":"HTML","path":"data_math/projecteuler/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2b51725b-ef91-49b1-bc7a-cd24c352a54a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/about=tags","data_source_category":"HTML","path":"data_math/projecteuler/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"29680b34-871f-4fcd-b2b3-8b1ec86bb5e1","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=46","data_source_category":"HTML","path":"data_math/projecteuler/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0d794263-e815-4feb-acd7-57816011c7d4","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=924","data_source_category":"HTML","path":"data_math/projecteuler/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6d4e340-80db-4e6c-8116-361ddd6e3f5a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/copyright","data_source_category":"HTML","path":"data_math/projecteuler/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"74e5e46f-d406-4e1c-b31f-0eb531f6e70b","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=932","data_source_category":"HTML","path":"data_math/projecteuler/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e134ca3e-76c1-4c32-aa9e-fdcf3df31668","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/","data_source_category":"HTML","path":"data_math/projecteuler/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"40186577-22b6-4f77-b610-557f1242a025","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=2","data_source_category":"HTML","path":"data_math/projecteuler/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"df21410d-bd44-46ab-a73c-7539ebe802b6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=7","data_source_category":"HTML","path":"data_math/projecteuler/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e4a8418b-9fa2-4b45-8754-b5193f0aac0a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=40","data_source_category":"HTML","path":"data_math/projecteuler/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4192ba7c-fffe-4d08-9624-2a1f8b98b703","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=932","data_source_category":"HTML","path":"data_math/projecteuler/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bffa9bc8-981a-40a1-a5f9-517dd3ad3312","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=19","data_source_category":"HTML","path":"data_math/projecteuler/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63726f83-b0c0-40b3-8c1e-4cc21a83a475","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=39","data_source_category":"HTML","path":"data_math/projecteuler/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"322c1f04-12e0-4055-8517-41522ca82f7e","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=23","data_source_category":"HTML","path":"data_math/projecteuler/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e7bbb515-6895-4218-9192-fc2d7c83fcc8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=39","data_source_category":"HTML","path":"data_math/projecteuler/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7faac0a6-4796-4d8c-85bc-d766dd68a554","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=1","data_source_category":"HTML","path":"data_math/projecteuler/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"13f27145-f933-48bf-b50c-2587ab5099ad","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=923","data_source_category":"HTML","path":"data_math/projecteuler/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6995b25-0423-4620-ad08-ee73f7d4202c","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=34","data_source_category":"HTML","path":"data_math/projecteuler/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0a7d6877-4ab4-45fa-9922-6efbe79f3fad","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=38","data_source_category":"HTML","path":"data_math/projecteuler/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c074bcf-64bf-4581-9a4c-819444809fb5","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=11","data_source_category":"HTML","path":"data_math/projecteuler/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"61076f3b-952d-4bed-8615-d683041f060f","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=4","data_source_category":"HTML","path":"data_math/projecteuler/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba4207f5-35a6-4eb0-ba69-2999eca96af8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=35","data_source_category":"HTML","path":"data_math/projecteuler/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a00bcf49-e2d3-4c7f-acdd-045406253b9b","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=929","data_source_category":"HTML","path":"data_math/projecteuler/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a7b7ef6-b8bc-4603-8c91-226ec1b9c74a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/sign_in","data_source_category":"HTML","path":"data_math/projecteuler/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e6e74499-ccfc-46d8-b0af-05e656d749a2","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=4","data_source_category":"HTML","path":"data_math/projecteuler/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"20c1f34d-137f-401f-a2fd-120f2f934f48","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=48","data_source_category":"HTML","path":"data_math/projecteuler/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5750d6da-5f36-4824-9403-ae85e653fca7","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/register","data_source_category":"HTML","path":"data_math/projecteuler/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"98bcfca2-53f9-4e5b-bd8a-0b662e0f2c40","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=49","data_source_category":"HTML","path":"data_math/projecteuler/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0882fb30-c8d2-467f-a4ca-15f4eeead4b6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=50","data_source_category":"HTML","path":"data_math/projecteuler/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e1592c8b-0836-4a5c-86d5-d208b0ed334a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=1","data_source_category":"HTML","path":"data_math/projecteuler/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a50f3cb7-4989-4659-a4a3-64431a117ea8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=930","data_source_category":"HTML","path":"data_math/projecteuler/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2cb8387-3e12-4053-a016-4554e8c9f437","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/recovery","data_source_category":"HTML","path":"data_math/projecteuler/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"07fd8cc5-72fe-425e-9736-7e7ae931a7c0","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=21","data_source_category":"HTML","path":"data_math/projecteuler/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0abad740-5a89-4c8c-b131-594e5b72f805","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=24","data_source_category":"HTML","path":"data_math/projecteuler/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4ee9837f-e298-4bee-88b3-5234a3ed8e4a","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=31","data_source_category":"HTML","path":"data_math/projecteuler/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1109b1e0-04c7-4dbe-88c4-ce1ea0bf3854","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=3","data_source_category":"HTML","path":"data_math/projecteuler/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"24949777-7768-4a42-a05e-ce293470dc80","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=28","data_source_category":"HTML","path":"data_math/projecteuler/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c7622da1-f1cb-40a2-9fec-83cd3c5d29d0","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=27","data_source_category":"HTML","path":"data_math/projecteuler/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fa082161-53b0-4841-9b7f-9cda8c65eac6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=6","data_source_category":"HTML","path":"data_math/projecteuler/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"88908127-f0fe-4549-a6fc-3d9d0cccd689","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=43","data_source_category":"HTML","path":"data_math/projecteuler/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d11c2c6b-ba52-497b-a323-6b2520342dac","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/archives","data_source_category":"HTML","path":"data_math/projecteuler/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c22bb2ac-80dd-44ad-a41d-8266c554c986","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=10","data_source_category":"HTML","path":"data_math/projecteuler/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17695238-23c6-4dec-ba86-0c764996b030","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=8","data_source_category":"HTML","path":"data_math/projecteuler/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4c10ce4c-5497-4e8a-9c3b-48523dee2447","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=22","data_source_category":"HTML","path":"data_math/projecteuler/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e32a8c6b-e842-4792-b846-2e0a536fd081","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/about","data_source_category":"HTML","path":"data_math/projecteuler/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d9e8bf2-9bfd-4f02-a240-4538e9dadda9","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=41","data_source_category":"HTML","path":"data_math/projecteuler/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"20c9ede7-ca87-4d81-8623-27b1c48fe816","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/about=account_recovery","data_source_category":"HTML","path":"data_math/projecteuler/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"40c2856a-eb6f-40c0-a4a3-7055f1c9e31e","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=32","data_source_category":"HTML","path":"data_math/projecteuler/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e2cb1500-eb31-4732-a6b0-9c463113483f","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=37","data_source_category":"HTML","path":"data_math/projecteuler/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1a79b0c0-07f5-4aaf-bead-b600c9b90dd4","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=3","data_source_category":"HTML","path":"data_math/projecteuler/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1cc6ebf8-1ec1-4f1d-8ba8-aa054751a37b","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=17","data_source_category":"HTML","path":"data_math/projecteuler/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a466744e-6d6d-4ba1-9df4-6327e7eafd8e","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=931","data_source_category":"HTML","path":"data_math/projecteuler/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7f59be39-d0ac-4509-9133-3bb60fcff0a1","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=930","data_source_category":"HTML","path":"data_math/projecteuler/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9ace33d-b617-4a5e-bd3d-c33ffd017d05","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=22","data_source_category":"HTML","path":"data_math/projecteuler/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8912a501-953d-45bd-929a-b1fbf3ca66c0","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=42","data_source_category":"HTML","path":"data_math/projecteuler/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c4113969-0d94-493e-a7ac-fc6e32a48997","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/about=persistent_logins","data_source_category":"HTML","path":"data_math/projecteuler/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ae2a4c36-cbf4-476e-a764-f820eebf4dc4","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=925","data_source_category":"HTML","path":"data_math/projecteuler/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"86b50f3b-da7f-4a30-beee-9c3b15b9c55e","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=16","data_source_category":"HTML","path":"data_math/projecteuler/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7ff31f35-2bbc-44ec-8823-f986e140f9bb","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/search","data_source_category":"HTML","path":"data_math/projecteuler/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"474116b7-d9ed-41e3-bd90-064a23921d09","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=926","data_source_category":"HTML","path":"data_math/projecteuler/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d0672e1c-35a5-436c-ab51-983dd86ea9c1","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=45","data_source_category":"HTML","path":"data_math/projecteuler/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8461bf79-9117-4145-938f-ada483efb535","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=9","data_source_category":"HTML","path":"data_math/projecteuler/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17a3e05a-eb10-4c9d-b3d8-6090fd15c261","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=33","data_source_category":"HTML","path":"data_math/projecteuler/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3e8a9e9b-371a-400c-87a6-0f35786ad020","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=14","data_source_category":"HTML","path":"data_math/projecteuler/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"95ca2b97-602d-4c41-af07-ffbbca4650f5","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=31","data_source_category":"HTML","path":"data_math/projecteuler/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"09257fb2-3805-4aa3-9ea5-02e855e67cd9","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=923","data_source_category":"HTML","path":"data_math/projecteuler/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fad30a55-d15b-4b39-992d-1b4a486d2a62","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=49","data_source_category":"HTML","path":"data_math/projecteuler/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"568096cb-98a6-486f-8cee-5b385381bb4f","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=925","data_source_category":"HTML","path":"data_math/projecteuler/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d3ed6c06-14d3-45c6-b26b-3419ddfc8d3c","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=47","data_source_category":"HTML","path":"data_math/projecteuler/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e17b011c-16b2-4a52-9f45-b4f5f9491695","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=12","data_source_category":"HTML","path":"data_math/projecteuler/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc21f3d2-908a-4afe-9ab3-038d40eaab64","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=19","data_source_category":"HTML","path":"data_math/projecteuler/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aa10c982-f007-419b-86b3-809d052af984","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=27","data_source_category":"HTML","path":"data_math/projecteuler/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4d0b94bc-f26e-4e0a-b18e-6a7729c0606b","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=14","data_source_category":"HTML","path":"data_math/projecteuler/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b81822af-54be-4ab8-83bd-a0d10b87d700","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=10","data_source_category":"HTML","path":"data_math/projecteuler/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"817c5931-d237-4c95-92f7-dd323f516dfc","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=18","data_source_category":"HTML","path":"data_math/projecteuler/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b96fa7a7-e146-42cd-bd64-5bea781266f8","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=21","data_source_category":"HTML","path":"data_math/projecteuler/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"baa8c27e-c4a4-42cb-906a-d30c465134c1","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=26","data_source_category":"HTML","path":"data_math/projecteuler/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77735340-90ab-408c-ba1b-57a8b97344b6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=37","data_source_category":"HTML","path":"data_math/projecteuler/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7f6c9aa9-a924-4ac0-b657-b602a26e6bf6","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/problem=44","data_source_category":"HTML","path":"data_math/projecteuler/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ea831acd-15c6-4d45-8387-ef6d8e1903bd","dataset_name":"eval_pipeline_suit","url":"https://projecteuler.net/minimal=7","data_source_category":"HTML","path":"data_math/projecteuler/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"642fba4c-ba93-4abe-9125-8dd93174ef78","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/page/4/","data_source_category":"HTML","path":"data_math/unapologetic/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"81daa1c1-7dfc-4e09-9090-2f850af5991e","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/point-set-topology/page/4/","data_source_category":"HTML","path":"data_math/unapologetic/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"84d7a50e-8f01-47eb-b6dd-1236f9d8bd2c","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/04/page/3/","data_source_category":"HTML","path":"data_math/unapologetic/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fd44135d-bd9a-4301-a973-c1285e19c1a7","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/page/43/","data_source_category":"HTML","path":"data_math/unapologetic/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"33df34b0-4a3d-44eb-b920-495171b9eced","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/analysis/page/5/","data_source_category":"HTML","path":"data_math/unapologetic/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"78426ff9-3d29-4cc7-93c4-122f83ef53f4","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/page/12/","data_source_category":"HTML","path":"data_math/unapologetic/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b827a6eb-20aa-4b3e-af0c-68f84c503c02","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/page/5/","data_source_category":"HTML","path":"data_math/unapologetic/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9c18a3c5-a53a-4915-8caf-0a9bce4057b0","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/differential-topology/page/8/","data_source_category":"HTML","path":"data_math/unapologetic/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fe5d4731-c56f-4f9e-9f8f-228266d87ab8","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/page/9/","data_source_category":"HTML","path":"data_math/unapologetic/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"69102cb9-c102-4a0a-b08d-b78193c52545","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/ring-theory/page/7/","data_source_category":"HTML","path":"data_math/unapologetic/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1885a6d5-2aa0-42be-a380-bbe0c3be1708","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/page/42/","data_source_category":"HTML","path":"data_math/unapologetic/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6c478277-c455-402c-910d-b968a65571cc","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/analysis/page/8/","data_source_category":"HTML","path":"data_math/unapologetic/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63a24839-de28-49de-a9e8-450237c2207b","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/06/page/3/","data_source_category":"HTML","path":"data_math/unapologetic/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5cc7bff3-e778-4cd5-9737-fce72307b346","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/12/29/","data_source_category":"HTML","path":"data_math/unapologetic/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c45d5f90-209f-48c2-b266-ab5d3d5efdef","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/12/31/currents/","data_source_category":"HTML","path":"data_math/unapologetic/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6359cd5-6776-4b70-9200-970170b4a73a","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/02/15/some-root-systems-and-weyl-orbits/","data_source_category":"HTML","path":"data_math/unapologetic/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fc634b38-22c6-45fe-86aa-0e1e26829e7f","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/09/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64dadbf0-413c-4d96-90fb-ee103daec3d7","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/analysis/calculus/page/8/","data_source_category":"HTML","path":"data_math/unapologetic/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d9732453-4cd4-4676-a86c-30621a7e4ad0","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/08/24/an-example-part-3/","data_source_category":"HTML","path":"data_math/unapologetic/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"34de8aec-7bc9-4c22-b0b3-973d353ae425","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/category-theory/page/7/","data_source_category":"HTML","path":"data_math/unapologetic/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3970bbc3-9f2d-4815-8751-aaa05ab470f2","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/12/06/","data_source_category":"HTML","path":"data_math/unapologetic/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e987e9a2-ea68-4099-9708-1a591a1a6c79","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/12/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0f32701a-146a-4ff5-8e34-18c29faddb22","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/12/02/upper-and-lower-integrals-and-riemanns-condition/","data_source_category":"HTML","path":"data_math/unapologetic/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"475fd9fb-94e0-4b44-b562-439be3b61366","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/09/","data_source_category":"HTML","path":"data_math/unapologetic/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6a4f0ee2-4e53-4d82-8b6d-91d0a052453b","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/10/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c408b231-740e-47bb-b212-5bfa0f6b6633","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/12/08/","data_source_category":"HTML","path":"data_math/unapologetic/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bd35e330-833b-46cf-9359-165303a5c5cc","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/08/20/stokes%e2%80%99-theorem-proof-part-2/","data_source_category":"HTML","path":"data_math/unapologetic/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"426479ac-aefe-4e93-9f74-dd8f76287e33","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/06/15/the-lie-derivative/","data_source_category":"HTML","path":"data_math/unapologetic/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80419f3e-baf7-4097-8459-5cef23457af7","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/03/01/more-no-news/","data_source_category":"HTML","path":"data_math/unapologetic/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"645cde59-5a5e-4020-9a3f-6651acff170e","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/11/","data_source_category":"HTML","path":"data_math/unapologetic/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4b66544d-04f0-4d57-81aa-b2d908a9d138","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/11/","data_source_category":"HTML","path":"data_math/unapologetic/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1302c631-8501-4e8d-902f-0e46edcf719c","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/20/products-of-integrable-functions/","data_source_category":"HTML","path":"data_math/unapologetic/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fd4183f3-ccda-47a3-ade6-e23cd800faca","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/author/drmathochist/page/11/","data_source_category":"HTML","path":"data_math/unapologetic/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ecacb99b-2a79-4814-9def-8b5aa815c472","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/09/21/the-submodule-of-invariants/","data_source_category":"HTML","path":"data_math/unapologetic/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1bba0ef-49f9-4fb4-999f-1e0b395b33ca","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/01/some-integrable-functions/","data_source_category":"HTML","path":"data_math/unapologetic/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fe1a5e6-016e-484d-b6d7-df0d855a4b22","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/12/05/dedekind-completion/","data_source_category":"HTML","path":"data_math/unapologetic/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9dd1f7f3-fde2-49e3-9955-01255750b89a","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/09/07/","data_source_category":"HTML","path":"data_math/unapologetic/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e7b2ce3c-a399-4c38-9999-9cb496deded6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/03/02/","data_source_category":"HTML","path":"data_math/unapologetic/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6144cdbc-96e7-498f-94f1-c3a0925a37ed","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/21/","data_source_category":"HTML","path":"data_math/unapologetic/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"98907ef3-b6db-4f21-9049-e828ebc985e2","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/08/","data_source_category":"HTML","path":"data_math/unapologetic/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f35a1cd-16e4-4f87-b0bb-2280313145d6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/03/23/this-weeks-finds-247/","data_source_category":"HTML","path":"data_math/unapologetic/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"96b9022b-936e-4ed6-9b82-12646a7ed5c6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/05/10/more-modules-more-ideals/","data_source_category":"HTML","path":"data_math/unapologetic/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b62a3f9e-9e54-4c8a-88c5-e4dba4bc516a","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/09/26/images-coimages-and-exactness/","data_source_category":"HTML","path":"data_math/unapologetic/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e9a291f6-a2f5-418f-8324-d0e1be33524c","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/10/08/stuck-in-maryland/","data_source_category":"HTML","path":"data_math/unapologetic/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4cee2a00-fe78-44ed-a1e9-48f953410b8e","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/28/","data_source_category":"HTML","path":"data_math/unapologetic/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4481e9da-1416-46d5-aef9-47a6a062a321","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/09/03/","data_source_category":"HTML","path":"data_math/unapologetic/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cdaa2efb-f1a7-4593-8e61-d1578b69b62b","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/14/","data_source_category":"HTML","path":"data_math/unapologetic/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3ad953b3-af33-461b-980d-8605b68d8637","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/28/","data_source_category":"HTML","path":"data_math/unapologetic/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11306b9b-e42b-404f-8cd3-dd7a57ec3845","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/12/04/","data_source_category":"HTML","path":"data_math/unapologetic/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"75d2ff42-6159-4516-988a-60cff5b36768","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/27/","data_source_category":"HTML","path":"data_math/unapologetic/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ab249481-7d7e-4fb4-8359-74e06e707d37","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/10/17/isomorphisms-of-vector-spaces/","data_source_category":"HTML","path":"data_math/unapologetic/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77efd7b9-ba42-4189-9683-b85a6dba5d1f","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/03/26/integrating-across-a-jump/","data_source_category":"HTML","path":"data_math/unapologetic/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ab198a39-c2a3-499a-b95a-520569e17f83","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/09/15/","data_source_category":"HTML","path":"data_math/unapologetic/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"520f2eb1-2452-401e-adf1-d814fd3d7a28","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/02/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3575837c-8652-4d43-958d-76f1cb2c61bb","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/04/12/unapologetic-and-unavailable-in-brazil/","data_source_category":"HTML","path":"data_math/unapologetic/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56ed5334-b399-49c4-964a-746506bb24e1","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/special-topics/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"107c0547-c83c-47c0-b288-fa20ee1b8390","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/01/26/eigenvalues-eigenvectors-and-eigenspaces/","data_source_category":"HTML","path":"data_math/unapologetic/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5db0c45c-4b05-436d-8dcb-94279b7566bb","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/category-theory/page/14/","data_source_category":"HTML","path":"data_math/unapologetic/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d76ae511-64a2-49f3-b710-2a09d6aae34c","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/10/11/hom-space-additivity/","data_source_category":"HTML","path":"data_math/unapologetic/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"95972564-28d7-41e0-94a1-3fdab8db6358","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/12/page/2/","data_source_category":"HTML","path":"data_math/unapologetic/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b15eb18-2a16-4f7f-8d2b-b076f46aa354","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/03/29/tangent-vectors-at-a-point/","data_source_category":"HTML","path":"data_math/unapologetic/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b6f2115a-976e-47e3-8289-e72f424a0ecb","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/03/19/","data_source_category":"HTML","path":"data_math/unapologetic/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"87d14484-acdf-4d32-bb82-b0573b3c23a8","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/02/17/from-cartan-matrix-to-root-system/","data_source_category":"HTML","path":"data_math/unapologetic/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"789437ff-7164-4f0a-b5a7-5160c74cb695","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/10/01/inner-products-on-1-forms/","data_source_category":"HTML","path":"data_math/unapologetic/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"06fda80f-c6c4-47b5-9b58-4049457ae987","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/06/23/the-category-of-matrices-iii/","data_source_category":"HTML","path":"data_math/unapologetic/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2e1f6f8e-15cd-471d-84e9-2dcec2953796","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/page/14/","data_source_category":"HTML","path":"data_math/unapologetic/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb6ee6a8-c064-4ada-b205-7a4339136765","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/10/12/","data_source_category":"HTML","path":"data_math/unapologetic/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f6fdf86-e3c9-488f-a238-c127e4332a50","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/06/01/indefinite-integrals-and-convergence-ii/","data_source_category":"HTML","path":"data_math/unapologetic/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dd1b12a9-c3a4-4c54-9ba6-e4aa06b34fdc","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/algebra/ring-theory/page/3/","data_source_category":"HTML","path":"data_math/unapologetic/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1e758af-039d-4636-8d82-7ffaf9d2aa04","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/10/12/braidings-on-span-2-categories/","data_source_category":"HTML","path":"data_math/unapologetic/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b590df3-00d2-4d08-ba7e-827eecb80ffa","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/06/","data_source_category":"HTML","path":"data_math/unapologetic/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7c8fb88c-0f3c-488d-8223-d8b15fe72016","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/author/drmathochist/page/15/","data_source_category":"HTML","path":"data_math/unapologetic/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"22ddc91c-2b04-4511-a0ec-f000769d9853","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/10/01/the-five-lemma/","data_source_category":"HTML","path":"data_math/unapologetic/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5226246d-7e9f-4100-8199-3cc246e36a89","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/02/21/another-way-to-use-the-ftoc/","data_source_category":"HTML","path":"data_math/unapologetic/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6e82b821-839b-450f-a31d-72ea0116abf2","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/topology/page/15/","data_source_category":"HTML","path":"data_math/unapologetic/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"19b3bcde-b4f6-4a1c-b43f-28892ecda9f6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/08/14/viddy-this-me-droogs/","data_source_category":"HTML","path":"data_math/unapologetic/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3b43a98d-17a8-49c7-b724-0dcd93e983f6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/07/23/the-euler-characteristic-of-an-exact-sequence-vanishes/","data_source_category":"HTML","path":"data_math/unapologetic/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4151031-d26d-49ef-8fa0-d70c5282bfdf","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2010/10/27/","data_source_category":"HTML","path":"data_math/unapologetic/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7d019648-01eb-44ac-bda4-b755952b2046","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/07/","data_source_category":"HTML","path":"data_math/unapologetic/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"74a75f3b-5aea-41a0-8ef3-3bf205fb4b0e","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/06/26/","data_source_category":"HTML","path":"data_math/unapologetic/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"720c678e-def7-44d7-9067-b9d710564b2a","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/06/25/","data_source_category":"HTML","path":"data_math/unapologetic/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"588c8d7d-6b06-4577-9319-87806aa8f4ef","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/page/6/","data_source_category":"HTML","path":"data_math/unapologetic/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a461660d-78f2-4ce4-8ea9-ca1cd23242e1","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/04/10/","data_source_category":"HTML","path":"data_math/unapologetic/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a3aac516-836a-4ffc-8d76-f876b49fdb21","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/08/15/an-example-of-an-enriched-category/","data_source_category":"HTML","path":"data_math/unapologetic/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c250c4d8-a334-41be-a537-8c0cb873d3bc","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/11/17/cramers-rule/","data_source_category":"HTML","path":"data_math/unapologetic/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eecfe6ca-ec40-4d37-81b2-5ac29f5e1763","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/04/07/","data_source_category":"HTML","path":"data_math/unapologetic/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"742944b4-285b-4223-b217-8eb7abfd6feb","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/12/15/the-category-of-representations-is-abelian/","data_source_category":"HTML","path":"data_math/unapologetic/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fc1c67d8-7769-441f-945c-ae27803cb8b6","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/06/11/products-and-coproducts/","data_source_category":"HTML","path":"data_math/unapologetic/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7643ccf8-56af-4c1a-b606-6c0f82c9ae51","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2008/10/28/","data_source_category":"HTML","path":"data_math/unapologetic/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"315a9c6a-bda8-4bfb-abd0-3b087ea1e5f2","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/analysis/page/17/","data_source_category":"HTML","path":"data_math/unapologetic/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"34d649d0-6bb1-4c39-941a-41744e97e9bd","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2009/04/09/decomposing-real-linear-transformations/","data_source_category":"HTML","path":"data_math/unapologetic/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"50769407-984f-4eb8-9628-fbe6a5f864c7","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/05/25/","data_source_category":"HTML","path":"data_math/unapologetic/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54cb3300-5bbd-474f-9bee-f8c1ac207679","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/02/10/polarization-of-electromagnetic-waves/","data_source_category":"HTML","path":"data_math/unapologetic/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81e330c-4f36-4bc6-a96a-0b5de45c7376","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/06/07/what-does-yonedas-lemma-mean/","data_source_category":"HTML","path":"data_math/unapologetic/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8c35b8ce-8a66-49ae-8ae3-140cb3d8faf0","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/page/19/","data_source_category":"HTML","path":"data_math/unapologetic/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4bce6072-a5af-4819-9408-1d428c367ba1","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/04/07/the-first-isomorphism-theorem-for-rings/","data_source_category":"HTML","path":"data_math/unapologetic/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66b11ca4-61ef-4417-bddc-38b3bc8f3b7e","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2011/01/06/","data_source_category":"HTML","path":"data_math/unapologetic/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f0aa562-12eb-48ac-b14a-5e4d61a9c511","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2012/02/01/conservation-of-charge/","data_source_category":"HTML","path":"data_math/unapologetic/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ce97643-eb7d-48cf-95f0-0f0cff026650","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/2007/05/18/","data_source_category":"HTML","path":"data_math/unapologetic/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a04ee2b7-f49e-490f-98a6-90843b709d6d","dataset_name":"eval_pipeline_suit","url":"https://unapologetic.wordpress.com/category/analysis/calculus/page/16/","data_source_category":"HTML","path":"data_math/unapologetic/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4483571-8b6c-4568-9430-2a82a58313ee","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Extras/ms19148/","data_source_category":"HTML","path":"data_math/mathshistory/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e2712dcc-2ff6-4561-91d9-42bee07f722f","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Black/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0fccddca-182a-4aff-ad7f-5ddf8b5e6ced","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/Zagier/Zagier/Solution43","data_source_category":"HTML","path":"data_math/mathshistory/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fa369d67-1be2-4677-8c0e-28bcd8180523","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1883_jun.html","data_source_category":"HTML","path":"data_math/mathshistory/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"edc48fea-8c36-4ad4-9fc2-36e1663d5d75","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1888-89_mar.html","data_source_category":"HTML","path":"data_math/mathshistory/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b264deb2-8e43-4786-8e78-b9ea04cca915","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1893-94_mar.html","data_source_category":"HTML","path":"data_math/mathshistory/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"548fae1e-f847-44bc-8dd3-0e43ea643ad0","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1895-96_jan.html","data_source_category":"HTML","path":"data_math/mathshistory/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3ca5c32-a853-46be-a51c-a223c0bc91db","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Rothe-Ille/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9311b7d7-c7b2-497e-9d97-9c9d5d025d69","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1898-99_jan.html","data_source_category":"HTML","path":"data_math/mathshistory/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9aa4b86f-f263-466d-a393-0b8b312cf5a4","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Clarke_Joan/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"475064a4-9f24-4af3-933d-b0d44c689dd3","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Spence_David/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5171079d-2508-498c-b6c0-608499063a92","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Wigderson/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d3fd2e1a-f84c-4b32-b7ae-d18ef5c53496","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Lehmer_Derrick_N/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"769afd34-f6ed-4017-b54b-42cafae8db99","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Skorokhod/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d5156ef7-93e2-418c-8a2f-aee867906261","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Fine_Henry/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f9f6e483-014c-4670-a086-05af0f2092d5","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1904-05_jun.html","data_source_category":"HTML","path":"data_math/mathshistory/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0242e4f5-fdb6-46f1-91c0-04c38581ed1e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1908-09_mar.html","data_source_category":"HTML","path":"data_math/mathshistory/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"565ee5ca-4078-4b23-8808-1785c87b748f","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1909-10_nov.html","data_source_category":"HTML","path":"data_math/mathshistory/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"245a2df7-6df2-4d6c-b8b6-cd5eced40fcf","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1918-19_mar.html","data_source_category":"HTML","path":"data_math/mathshistory/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"788d485d-0f9c-44e1-b831-1810b42e7448","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/EMS/summaries/1922-23_nov.html","data_source_category":"HTML","path":"data_math/mathshistory/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9575ac4e-320e-4a2a-a721-addcf89498bb","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Nielsen/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e9e7eee2-4510-43ed-bc8b-1356f58119f2","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Terrot/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"05be22ea-536a-4fce-bb48-ae484e7efb7d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Faraday/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7ad037ef-6dcc-4728-bc27-15b7dd561feb","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Pleijel/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cfa681c4-2f58-4311-b5fd-a6d5c4853732","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Varga/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"98e2997d-5823-4af8-8d48-cfe6848cb2a5","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Konigsberger/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b43ba68a-e354-43f4-b00d-2a993dbc4c39","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Purser/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77c821e9-d3a5-4e66-b658-a8ed8a9e8f11","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Browne/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f03726f-ae13-4fd1-aa0c-b6445328c727","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Schoen/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7165a534-e67d-4389-aa08-908a40377fad","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Pfeiffer/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c2a1dcd4-0707-46c2-9b67-f9ee61a48c2a","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Jahn/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d0bbc469-0837-461d-857d-72d73a3308b5","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Thurston/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9e6159dc-3caf-44d7-b7a7-26ac8dc351f4","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Magenes/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e50e2dcf-f89d-439d-bbc3-8730353d73d7","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Groups/2005/timetable/","data_source_category":"HTML","path":"data_math/mathshistory/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"31a3b105-e6ba-4b02-804d-172ca6bde65d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Bowley/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66875e88-4cf6-40e3-a4ad-2733e7e2d265","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Dehn/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3aff7b71-e963-4394-a964-f414c62f5c10","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Britton/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"13ed1841-aedd-403a-9949-e21174162d1e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Hubble/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a9fb0012-21bc-4969-a548-67d974025f98","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Roch/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"82479bb8-191f-4eaf-bfe4-245d886d8c51","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Zassenhaus/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c27a4805-aa6d-48ad-8c09-c577c987704d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Filon/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e6eade1-4ae7-407f-9306-8ce40a97952c","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Hall_Marshall/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aaf79ccc-2078-4d0a-9a19-ca234c000139","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Casamayor/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"78f30f61-a496-41d2-95d4-4a6a36bf84a2","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Schwarz/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"89733c18-0c8a-48bd-828a-4bde9c46da45","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Lamb/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bec5f509-6471-4567-99de-e95d64354bd6","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Delambre/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"37fd3119-0d90-48fa-8238-2f09fb250524","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Bruns/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"517b90ab-e549-40a3-8fcf-e77122b0335e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Grassmann/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"225f3f8f-6b1a-4bb3-b644-793a38b41134","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Fermi/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b50ab8fe-6b89-4efc-828b-cd4b091fc673","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Kruskal_Martin/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f95b1672-1e9d-4ab9-af40-fae4684f74d2","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Suzuki_Michio/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2bc7e3d2-eef9-49f8-9502-1c9bf5cedafb","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Tuy/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"018bb94a-439f-4e5d-bf58-81c3acb6dfcc","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Schwarz_Stefan/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d70fb3a-f740-4dee-9687-66f1680c749e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Bukreev/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7925496f-8929-4368-8981-cb499b13b4a3","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Titeica/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"38104a4a-24fc-4f09-a9e2-426331b06cfa","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Fedorchuk/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f69982f-3d8c-4371-8875-3d0b97c7159b","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Burchnall/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ddfca28b-9436-4943-9472-f12e68762d1e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Navier/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ec262a4-5398-4122-80c3-5e11902d2d6f","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Levy_Paul/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9ab9a947-82a9-4c6e-9944-eeaaece92440","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Tunstall/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ddfc631-afb3-4f97-a489-beb5c86a5342","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Kneser_Hellmuth/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4705083-4eec-4993-9149-a0014f80f0ed","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Hsu/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48e85ee1-a80a-44b6-8280-e37a96e65c16","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Cartwright/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8d6fbe7-a013-4453-9626-6d347c2552d5","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Seitz/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7604e863-3d60-412c-bd1c-b06c85f0beb9","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Gregory_David/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f8313bb-e7d4-4b5f-a2b6-08062f6353ec","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Behnke/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"55033083-67b7-4a6b-be17-6a38bc2d03d6","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Padoa/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7612ab1f-7e56-4a53-b7e7-af0245f63bce","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Christodoulou/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e64eb5df-7a7e-4b87-883b-5ef0ede64c7b","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Baer/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"be569d54-4509-4fae-9ee9-6955c0858eb0","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Ramanujan/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"277cd1fb-4393-4f8a-80ee-471eb9a7cf2c","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Menabrea/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60989c67-1080-4b7a-bbed-0e89d391371c","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Fasenmyer/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee65cd42-dc69-4e46-9f5f-6590326739ab","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Whitehead/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2309c4c7-cc1a-4450-8bb6-953efb8ab0af","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/@../Biographies/Baker","data_source_category":"HTML","path":"data_math/mathshistory/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b0f11da-2201-49c3-ac5b-420818bdc51c","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Comessatti/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2347f5ca-78f7-4d7c-8587-8e599945300c","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Clunie/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64b05276-4230-4193-8d83-c72d94ac88cb","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Hobson/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"14db2f73-edc5-4d88-bcf4-f478ceda2754","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Popoviciu/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bd5a5522-d7b3-4093-9188-6dba6cc0742d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Heinonen/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1fd22329-66fc-45ef-af7e-6028afdab3e9","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Abhyankar/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"abe25901-43ef-4634-a4e3-500eb157eb31","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Rutishauser/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"13734e07-d529-4e5e-8145-544b2a7b0f7d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Wazewski/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"32bbab43-e36c-409e-9c40-4c3cc263b76f","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Murphy_Gerard/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49bfc825-c184-4719-ae3e-d3be31f10eb8","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/@../Biographies/Albertus","data_source_category":"HTML","path":"data_math/mathshistory/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d34be92d-f9a2-4f64-9e9b-f55aa16812d9","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Suslin/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e1c45c57-f10c-4aff-b853-3b0171dbd3f0","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Hudson/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c9704195-5bce-409e-b921-d61ac4680322","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Mobius/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6ecbc66-f4a0-4396-840d-2a6a96883191","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Leech/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f0735295-35c6-44c8-8bae-0343f8740fba","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Bottasso/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f3b7cb00-c022-46e6-9c63-59dcc16f5b8b","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Ricci_Matteo/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"81bbdf15-f6ff-4d0c-9464-56b159a90993","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Vajda/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"67235e42-6f39-4620-9901-652a22447faa","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Lidstone/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed5435be-63f4-4b81-8d97-fe7b0c671a3a","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Tartaglia/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"44c12f5d-b02c-49c1-a5a0-e593b48fc508","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Goodstein/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"46520364-3868-4666-828a-cc6b7e0d124d","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Pauli/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7a771254-6b52-46ef-b9cf-67b15daac0bc","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Popken/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6fc26c29-94c7-4ae9-8c9f-93557c434a09","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Malebranche/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60a58b6f-b9a2-4dca-8045-d68ad921c09e","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Jourdain/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9a18cab7-3d56-4552-b6e1-95439513dfe6","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Wren/poster/born/","data_source_category":"HTML","path":"data_math/mathshistory/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"935f8599-790f-49f2-ab77-c1209ee125e4","dataset_name":"eval_pipeline_suit","url":"https://mathshistory.st-andrews.ac.uk/Biographies/Aldrich/poster/died/","data_source_category":"HTML","path":"data_math/mathshistory/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48303f79-4ef1-4994-b58c-087ae007c0ea","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/86/","data_source_category":"HTML","path":"data_math/frankliou/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"906c3b76-5eda-4b51-8528-1e3ba9bb8759","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/34/","data_source_category":"HTML","path":"data_math/frankliou/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9a8f037f-a1e7-42e2-aa2f-25f8bbe017d1","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/81/","data_source_category":"HTML","path":"data_math/frankliou/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad5a55c5-94b1-4032-afb8-4e1478449721","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/79/","data_source_category":"HTML","path":"data_math/frankliou/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d16a11cb-a1a5-4795-8c67-ed64987e4c44","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2024/11/01/%e3%80%8a%e5%be%ae%e5%88%86%e5%b9%be%e4%bd%95%e5%8f%b2%e6%a6%82%e8%bf%b0%ef%bd%89%e3%80%8b-1%e8%90%8a%e5%b8%83%e5%b0%bc%e8%8c%b2%e4%b9%8b%e5%89%8d/?fbclid=IwY2xjawGRW0ZleHRuA2FlbQIxMQABHTvoE8M483-u2vObRUYfyKGJAjSCwc9Ifs4tmpDYnVEjhHjTewr5gWIedQ_aem_lBBCyzlDCVxOddmus-UXdQ","data_source_category":"HTML","path":"data_math/frankliou/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"255ea530-7381-4f80-ab4e-bb26a403aad8","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/04/29/%e8%bd%89%e9%8c%84%e6%b3%95%e5%9c%8b%e6%95%b8%e5%ad%b8%e7%9a%84%e9%a9%95%e5%82%b2-%e5%a4%96%e7%88%bei/","data_source_category":"HTML","path":"data_math/frankliou/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3abff97d-868c-4637-b240-2ef1545ac910","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/1/page/3/","data_source_category":"HTML","path":"data_math/frankliou/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"90d38b0b-2184-49a3-9488-4f4a9c511320","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2024/11/05/%e3%80%8a%e5%be%ae%e5%88%86%e5%b9%be%e4%bd%95%e5%8f%b2%e6%a6%82%e8%bf%b0-ii%e3%80%8b%e9%ab%98%e6%96%af/","data_source_category":"HTML","path":"data_math/frankliou/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"28ae3596-43ca-41a2-9e07-d44971ef7514","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/2/","data_source_category":"HTML","path":"data_math/frankliou/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92b18336-5e78-4546-aef4-220bb567ef87","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/03/22/young%e4%b8%8d%e7%ad%89%e5%bc%8f%e7%9a%84%e7%b0%a1%e5%96%ae%e8%ad%89%e6%98%8e/","data_source_category":"HTML","path":"data_math/frankliou/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f24b882f-cfcf-40f3-87ef-4ca7994dbd08","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/04/30/%e8%bd%89%e9%8c%84%e6%b3%95%e5%9c%8b%e6%95%b8%e5%ad%b8%e7%9a%84%e9%a9%95%e5%82%b2-%e5%a4%96%e7%88%beandre-weil%e7%9a%84%e4%b8%80%e7%94%9f-ii/","data_source_category":"HTML","path":"data_math/frankliou/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49470a61-230b-4fd0-a968-5a200bf6dc11","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2011/05/13/%e4%bc%8d%e9%b4%bb%e7%86%99%e3%80%8a%e9%bb%8e%e6%9b%bc%e5%b9%be%e4%bd%95%e5%88%9d%e6%ad%a5%e3%80%8b%e8%87%b4%e8%ae%80%e8%80%85%e7%9a%84%e8%a9%b1/","data_source_category":"HTML","path":"data_math/frankliou/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6c737bce-8c49-475e-b3ec-4161799fe0bc","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/04/28/%e8%bd%89%e8%bc%89%e6%96%87%e7%ab%a0%e5%bd%b7%e5%bd%bf%e4%be%86%e8%87%aa%e8%99%9b%e7%a9%ba-%e4%ba%9e%e6%ad%b7%e5%b1%b1%e5%a4%a7%ef%bc%8d%e6%a0%bc%e6%b4%9b%e9%a8%b0%e8%bf%aa%e5%85%8b%e7%9a%84/","data_source_category":"HTML","path":"data_math/frankliou/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bbdd3842-17f8-44a9-be30-decfe542c525","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e9%96%92%e8%81%8a%e6%95%b8%e5%ad%b8/","data_source_category":"HTML","path":"data_math/frankliou/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f471f643-5b79-416d-8962-9428da93ca05","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%b8%b8%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8b/page/3/","data_source_category":"HTML","path":"data_math/frankliou/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c0c7dd1-33a2-4d99-874b-c8b8d3231c87","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8/","data_source_category":"HTML","path":"data_math/frankliou/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ec5c7c4-a959-4a5c-8585-b6d33353801e","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/31/","data_source_category":"HTML","path":"data_math/frankliou/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"315d7718-45f0-4d29-b5e4-2095cf67a411","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%be%ae%e5%88%86%e5%b9%be%e4%bd%95/","data_source_category":"HTML","path":"data_math/frankliou/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"96c2efde-7e95-49e5-a88f-e6b806708b28","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/85/","data_source_category":"HTML","path":"data_math/frankliou/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"37b24a36-ded7-4f51-9228-afa8f4da161c","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/31/%e5%be%ae%e5%88%86%e5%b9%be%e4%bd%95%e5%90%91%e9%87%8f%e5%8f%a2/","data_source_category":"HTML","path":"data_math/frankliou/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e8f5940-0fbf-45d5-94ce-f0dac6a810ee","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/12/16/%e4%b8%80%e9%a1%8c%e6%a5%b5%e9%99%90/","data_source_category":"HTML","path":"data_math/frankliou/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0c20975d-3860-4ac2-9e86-8277207b0191","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/01/13/%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8b%e5%b7%a5%e6%95%b8%e4%b8%ad%e7%9a%84%e9%80%86%e7%ae%97%e5%ad%90/","data_source_category":"HTML","path":"data_math/frankliou/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a7398599-bf96-40c0-a05d-ad3dff676dbb","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/48/","data_source_category":"HTML","path":"data_math/frankliou/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"be8d37ed-d443-45fd-9d2b-d736cfaf6d14","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2011/10/07/%e5%b9%be%e4%bd%95%e8%88%87%e6%8b%93%e6%a8%b8%e7%b0%a1%e4%bb%8b/","data_source_category":"HTML","path":"data_math/frankliou/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d43cf50b-cd47-4775-95d0-7ff554a0c8f5","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/49/","data_source_category":"HTML","path":"data_math/frankliou/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5d23d28d-70df-47f8-ac08-cc982ff84337","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/50/","data_source_category":"HTML","path":"data_math/frankliou/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6290b5f7-f8ba-41de-aa4f-500df9fa5fbd","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/06/12/poisson%e6%b1%82%e5%92%8c%e5%85%ac%e5%bc%8f/","data_source_category":"HTML","path":"data_math/frankliou/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"edf5fab2-bbdc-4e6d-9bd6-bce6cb9a5b08","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/08/14/%e6%95%85%e4%ba%8bkdv%e8%88%87%e4%bb%a3%e6%95%b8%e5%b9%be%e4%bd%95%e4%b8%80/","data_source_category":"HTML","path":"data_math/frankliou/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f8352e54-4259-4315-a900-2a642da7bdc1","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/52/","data_source_category":"HTML","path":"data_math/frankliou/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bbba80d6-bffd-45e8-8a86-ede292c334e2","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/02/27/%e5%b1%a4sheaf/","data_source_category":"HTML","path":"data_math/frankliou/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3eacff4a-dc2a-4e43-b062-b864a4b826c5","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/09/24/%e5%b9%be%e4%bd%95%e5%8f%a4%e5%85%b8%e5%8a%9b%e5%ad%b8%e8%88%87%e8%be%9b%e6%b5%81%e5%bd%a2/","data_source_category":"HTML","path":"data_math/frankliou/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c08dc546-fe9f-4357-977a-0c5cff859b57","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/05/21/%e8%a4%87%e8%ae%8a%e4%bb%a3%e6%95%b8%e5%9f%ba%e6%9c%ac%e5%ae%9a%e7%90%86%e7%9a%84%e4%b8%80%e5%80%8b%e8%ad%89%e6%98%8e/","data_source_category":"HTML","path":"data_math/frankliou/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1257b4c2-f058-46ab-8554-9441001c6058","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2021/11/29/%e9%83%a8%e5%88%86%e5%88%86%e5%bc%8f%e7%9a%84%e4%bb%a3%e6%95%b8%e7%90%86%e8%ab%96/","data_source_category":"HTML","path":"data_math/frankliou/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9fffea8b-fb02-42f4-b7e7-52a42ad4fc3e","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/03/19/cartan%e6%b5%81%e5%bd%a2%e5%be%ae%e5%88%86%e5%ad%b8%e8%88%87%e6%9b%b2%e7%8e%87%e5%bc%b5%e9%87%8f/","data_source_category":"HTML","path":"data_math/frankliou/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ef4562cb-a552-4294-9e84-bb4aae071f00","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/05/%e5%be%ae%e7%a9%8d%e5%88%86%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8b%e8%ac%9b%e7%be%a9/","data_source_category":"HTML","path":"data_math/frankliou/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6c0b684c-59e7-4e16-8fca-22873753e945","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/6/","data_source_category":"HTML","path":"data_math/frankliou/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ef510808-78ee-4af8-9817-9d1298aa1110","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2011/10/07/%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8b%e7%b0%a1%e4%bb%8b/","data_source_category":"HTML","path":"data_math/frankliou/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b0992ed-7828-41be-aeed-bf675ab66891","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/02/06/%e8%a4%87%e8%ae%8a%e5%a4%9a%e9%a0%85%e5%bc%8f%e7%9a%84%e6%a0%b9/","data_source_category":"HTML","path":"data_math/frankliou/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"29f62eb3-5806-469c-82f3-b45a1a0fe4e4","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%be%ae%e7%a9%8d%e5%88%86%e8%88%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86/page/2/","data_source_category":"HTML","path":"data_math/frankliou/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04086c74-40be-4716-92f6-0ccd2e82274e","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2021/11/28/%e5%af%ab%e8%ad%89%e6%98%8e%e7%9a%84%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a0%85/","data_source_category":"HTML","path":"data_math/frankliou/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c3ecece0-1e0a-40ee-847f-53de8d606002","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/03/21/test/","data_source_category":"HTML","path":"data_math/frankliou/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d28c197c-d068-4af3-8742-1d63f10f6058","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/12/01/%e4%ba%8c%e9%9a%8e%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8by%e3%80%9e1y%e2%80%992%e7%9a%84%e8%a7%a3/","data_source_category":"HTML","path":"data_math/frankliou/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f9292693-8a54-4c70-a0f7-a1b2655f2370","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/54/","data_source_category":"HTML","path":"data_math/frankliou/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a91221c9-3f8e-4e26-a425-d04fb9fa8d26","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/24/%e5%86%8d%e8%ab%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86%e6%9b%b8/?replytocom=112","data_source_category":"HTML","path":"data_math/frankliou/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b074d995-a926-4039-81d6-bf65a1ae1436","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/08/04/%e9%96%92%e8%81%8a%e9%ab%98%e5%be%ae/","data_source_category":"HTML","path":"data_math/frankliou/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5b553a42-4699-4294-8141-dccc769fa9b6","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/24/%e5%86%8d%e8%ab%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86%e6%9b%b8/?replytocom=110","data_source_category":"HTML","path":"data_math/frankliou/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"34be9945-d840-4df3-8545-9aabf259db7f","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/24/%e5%86%8d%e8%ab%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86%e6%9b%b8/?replytocom=887","data_source_category":"HTML","path":"data_math/frankliou/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"500e86f9-0011-4dce-b054-d7f978179c09","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2011/10/07/%e5%b9%be%e4%bd%95%e8%88%87%e6%8b%93%e6%a8%b8%e7%b0%a1%e4%bb%8b/?replytocom=319","data_source_category":"HTML","path":"data_math/frankliou/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"87413889-5695-4a97-a66b-1b028abd1b11","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/24/%e5%86%8d%e8%ab%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86%e6%9b%b8/?replytocom=902","data_source_category":"HTML","path":"data_math/frankliou/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64258fc1-6507-4cc1-ac33-b04b2d9324e5","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/06/12/%e9%ab%98%e4%b8%ad%e6%95%b8%e5%ad%b8n%e6%ac%a1%e6%96%b9%e6%a0%b9/","data_source_category":"HTML","path":"data_math/frankliou/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ea40a98-d488-4315-b53f-12e272230075","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/12/24/%e5%90%8c%e8%aa%bf%e4%bb%a3%e6%95%b8categories-of-complexes-in-abelian-category/","data_source_category":"HTML","path":"data_math/frankliou/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8219928f-450d-4519-833b-9310a8a596a1","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/1/page/5/","data_source_category":"HTML","path":"data_math/frankliou/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04706973-0949-4dfb-aaca-e4c04c574c38","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/12/30/%e4%bb%a3%e6%95%b8%e8%88%87%e5%b9%be%e4%bd%95%e5%b9%be%e4%bd%95%e8%88%87%e4%bb%a3%e6%95%b8%e7%9a%84%e5%b0%8d%e6%87%89%e9%97%9c%e4%bf%82/","data_source_category":"HTML","path":"data_math/frankliou/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52c42b89-a8a5-478d-838a-5fd2f8384fca","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/05/20/%e5%be%ae%e7%a9%8d%e5%88%8605202013/","data_source_category":"HTML","path":"data_math/frankliou/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ebbe8a3-c817-49c8-945e-3ceea8b4d546","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/06/12/%e6%a9%a2%e5%9c%93%e6%9b%b2%e7%b7%9a%e4%b8%8a%e7%9a%84%e6%8b%89%e6%99%ae%e6%8b%89%e6%96%af%e7%ae%97%e5%ad%90%e7%9a%84%e8%ad%9c%e8%88%87%e7%89%b9%e5%be%b5%e5%87%bd%e6%95%b8/","data_source_category":"HTML","path":"data_math/frankliou/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e41988ab-a116-4db3-a3c9-cb35d479dc60","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%a6%82%e4%bd%95%e8%a7%a3%e6%b1%ba%e6%95%b8%e5%ad%b8%e5%95%8f%e9%a1%8c/","data_source_category":"HTML","path":"data_math/frankliou/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e8670221-618e-4a9f-ab97-175618ae2c17","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/09/03/%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8%e5%bc%b5%e9%87%8f/","data_source_category":"HTML","path":"data_math/frankliou/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1a9f9e0e-8748-4564-9682-ab8b1653d301","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/09/10/%E5%BE%AE%E7%A9%8D%E5%88%86beta-%E5%87%BD%E6%95%B8%E5%8F%8A%E5%85%B6%E6%87%89%E7%94%A8/","data_source_category":"HTML","path":"data_math/frankliou/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"351ebcdd-d4a0-40f3-8826-b030eee245a9","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e6%9d%8e%e4%bb%a3%e6%95%b8/page/3/","data_source_category":"HTML","path":"data_math/frankliou/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e6497d70-2e4f-4332-8e2a-519e34117899","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/04/25/%e5%be%ae%e7%a9%8d%e5%88%86%e6%a5%b5%e9%99%90%e7%9a%84%e4%b8%80%e5%80%8b%e6%a6%82%e5%bf%b5/","data_source_category":"HTML","path":"data_math/frankliou/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"00b0168b-23db-430c-ac4c-cf0771ced59a","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/110/","data_source_category":"HTML","path":"data_math/frankliou/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e656be73-6a15-4aee-94ed-92b964ae3e51","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/12/01/tan-x-sec-x%e7%9a%84%e7%a9%8d%e5%88%86/?preview=true&preview_id=199&preview_nonce=78a20e0b5b&replytocom=546","data_source_category":"HTML","path":"data_math/frankliou/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dbf61b7f-d5d5-4d99-a35b-b1e5d4b0168c","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2011/12/04/%e9%97%9c%e6%96%bc%e5%b0%a4%e6%8b%89%e5%be%ae%e5%88%86%e6%96%b9%e7%a8%8b%e7%9a%84%e4%b8%80%e5%80%8b%e8%a8%bb%e8%a8%98euler-differential-equation/","data_source_category":"HTML","path":"data_math/frankliou/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b1a09d41-3c83-46c9-bac8-4f0904fea7df","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/11/10/%e5%be%ae%e5%88%86%e5%b9%be%e4%bd%95%e5%be%ae%e5%88%86%e7%9a%84%e5%8f%af%e6%8f%9b%e6%80%a7/","data_source_category":"HTML","path":"data_math/frankliou/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"81a1aa8b-f8e6-4631-b476-b5a8292df98c","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e4%bb%a3%e6%95%b8/page/6/","data_source_category":"HTML","path":"data_math/frankliou/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e60a64fd-b26f-462e-83f0-acd7b7ef6bac","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/annual-report/","data_source_category":"HTML","path":"data_math/frankliou/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"899b4dd0-9a6f-4bc1-b827-2ee895730578","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/04/25/affine-kac-moody-%e4%bb%a3%e6%95%b8/","data_source_category":"HTML","path":"data_math/frankliou/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12c4d4e1-5303-4dce-9593-eb7ab385ea0b","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2010/07/17/e%e7%9a%84%e6%89%80%e6%9c%89limit-point%e9%83%bd%e5%9c%a8e%e4%b9%8b%e4%b8%ad%e5%89%87e%e7%82%ba%e9%96%89%e9%9b%86metric/","data_source_category":"HTML","path":"data_math/frankliou/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bf693295-6156-4e8f-b490-1bffbf45b5bf","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2012/07/27/%e4%bb%a3%e6%95%b8%e5%b9%be%e4%bd%95sheaf-function-correspondence/","data_source_category":"HTML","path":"data_math/frankliou/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8599df55-d93b-4590-b410-69bb8eeae28d","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/04/07/%e9%9b%86%e5%90%88%e8%ab%96%e7%ad%89%e5%83%b9%e9%97%9c%e4%bf%82/","data_source_category":"HTML","path":"data_math/frankliou/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6acd34f3-3794-4ec2-ad6e-851658d9777d","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e8%a4%87%e8%ae%8a%e5%87%bd%e6%95%b8%e8%ab%96/page/2/","data_source_category":"HTML","path":"data_math/frankliou/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"18e84afb-705e-4bb5-ab55-ebf186bd5f87","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e4%bb%a3%e6%95%b8%e5%b9%be%e4%bd%95/page/3/","data_source_category":"HTML","path":"data_math/frankliou/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"49060518-0d5d-4648-b4c8-753e6df507f9","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/09/11/%e5%be%ae%e7%a9%8d%e5%88%86%e6%9f%af%e8%a5%bf%e5%a3%93%e7%b8%ae%e5%ae%9a%e7%90%86/","data_source_category":"HTML","path":"data_math/frankliou/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ec749e9c-a71c-4871-b982-3b444ef1e34a","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e7%b7%9a%e6%80%a7%e4%bb%a3%e6%95%b8/page/4/","data_source_category":"HTML","path":"data_math/frankliou/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d903393-55e6-46cd-9263-292d87bede31","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/06/13/%e5%b9%be%e4%bd%95%e8%a4%87%e6%b5%81%e5%bd%a2%e4%b8%8a%e7%9a%84dbar-torsion/","data_source_category":"HTML","path":"data_math/frankliou/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ada9149-ec97-49be-9d2d-9dc0c2ecbffb","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e4%bb%a3%e6%95%b8/%e9%ab%94/","data_source_category":"HTML","path":"data_math/frankliou/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"166da41f-8d76-4c51-8d28-6baab41ff0ab","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/12/08/%e5%be%ae%e7%a9%8d%e5%88%86%e5%9f%ba%e6%9c%ac%e5%ae%9a%e7%90%86%e6%87%89%e7%94%a8%e5%95%8f%e9%a1%8c/","data_source_category":"HTML","path":"data_math/frankliou/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5997732d-13cb-400a-a063-2054458642ce","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e9%ab%98%e4%b8%ad%e6%95%b8%e5%ad%b8/%e5%a4%9a%e9%a0%85%e5%bc%8f/page/2/","data_source_category":"HTML","path":"data_math/frankliou/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"71f20e30-c00d-4c8d-98c8-4eac2dc66815","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e4%bb%a3%e6%95%b8/page/5/","data_source_category":"HTML","path":"data_math/frankliou/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e7a07860-c2b0-4e57-8c74-fbcbdce97d0e","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2013/05/18/%e8%a4%87%e8%ae%8a05182013/","data_source_category":"HTML","path":"data_math/frankliou/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f4dbfd8b-fa13-4a8e-ae95-a70244e99895","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/1/page/8/","data_source_category":"HTML","path":"data_math/frankliou/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6be20243-e882-42f3-91d2-c00daceb0558","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/110/","data_source_category":"HTML","path":"data_math/frankliou/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6bedf4bf-d2eb-4cb4-b870-ced7b7145a22","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/12/08/%e8%aa%bf%e5%92%8c%e7%b4%9a%e6%95%b8%e8%88%87%e9%bb%8e%e6%9b%bc%e5%92%8c/","data_source_category":"HTML","path":"data_math/frankliou/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd7fbf07-00d8-47b4-b5fd-8d79ba21dfec","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/1/page/7/","data_source_category":"HTML","path":"data_math/frankliou/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1be6a337-3c7a-48cf-825a-c9765a528480","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/107/","data_source_category":"HTML","path":"data_math/frankliou/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d29c15de-163a-441f-bcca-d73d28021cc3","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/13/","data_source_category":"HTML","path":"data_math/frankliou/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2327e8f0-b5ca-4614-9a35-632af954835a","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/14/","data_source_category":"HTML","path":"data_math/frankliou/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9c6df544-ae4d-45c9-9cc9-faead07763e8","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/101/","data_source_category":"HTML","path":"data_math/frankliou/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"723ef596-50c5-4014-b5c5-c8767d30c4fc","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/98/","data_source_category":"HTML","path":"data_math/frankliou/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d29061d-2609-45fa-aa69-0608dd24f1eb","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/95/","data_source_category":"HTML","path":"data_math/frankliou/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce60dc8d-214e-4d97-9227-9649b4c4ca00","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/page/91/","data_source_category":"HTML","path":"data_math/frankliou/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ce1a31e-61a9-4193-b141-7fa254af7cf4","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/35/","data_source_category":"HTML","path":"data_math/frankliou/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"743a9cfa-b06f-4488-9535-d51021766cc5","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/78/","data_source_category":"HTML","path":"data_math/frankliou/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5234a844-5772-4dea-b827-cb15a278b548","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/77/","data_source_category":"HTML","path":"data_math/frankliou/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e0900772-e999-42a3-b897-d0cc7cf82a2c","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/","data_source_category":"HTML","path":"data_math/frankliou/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a7f7a6f3-30c6-4de1-986a-ca429d56512e","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%be%ae%e7%a9%8d%e5%88%86%e8%88%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86/%e9%87%8d%e7%a9%8d%e5%88%86%e8%88%87%e5%85%b6%e6%87%89%e7%94%a8/","data_source_category":"HTML","path":"data_math/frankliou/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7aef40de-a50b-47c4-a146-1490339a065f","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/11/26/e-x2%e7%9a%84%e7%a9%8d%e5%88%86%e5%80%bc/?replytocom=13","data_source_category":"HTML","path":"data_math/frankliou/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"75d8fb8c-3aa0-4b81-90f6-7a7c371b9499","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/2009/11/26/e-x2%e7%9a%84%e7%a9%8d%e5%88%86%e5%80%bc/?replytocom=28","data_source_category":"HTML","path":"data_math/frankliou/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6008bde-7bad-4e14-a53e-0f47475f0d0f","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/author/frankliou/page/3/","data_source_category":"HTML","path":"data_math/frankliou/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3151ddcc-cb55-4d89-8696-13cd6e74d2f7","dataset_name":"eval_pipeline_suit","url":"https://frankliou.wordpress.com/category/%e5%be%ae%e7%a9%8d%e5%88%86%e8%88%87%e9%ab%98%e7%ad%89%e5%be%ae%e7%a9%8d%e5%88%86/%e5%b8%b8%e8%a6%8b%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/frankliou/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e3b60dfe-234f-43b0-ae8a-e5e5a6b933c3","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%e7%95%99%e8%a8%80%e6%9d%bf/","data_source_category":"HTML","path":"data_math/calcgospel/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190f8509-ab9b-411e-82d8-5bfe13a7880f","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e9%ab%98%e4%b8%ad%e6%95%b8%e5%ad%b8/","data_source_category":"HTML","path":"data_math/calcgospel/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3177fed7-6269-4923-acc2-73a0e7ba78ef","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%e9%87%8d%e8%a6%81%e6%a5%b5%e9%99%90-lim_xto0-fracsin-xx-%e7%9a%84%e5%b9%be%e5%80%8b%e5%bb%b6%e4%bc%b8%e6%a5%b5%e9%99%90%e9%a1%8c/","data_source_category":"HTML","path":"data_math/calcgospel/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a4fef2a1-fd92-4d65-8069-4e8c8fd4a2f0","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%e9%80%b1%e6%9c%9f%e5%87%bd%e6%95%b8%e7%9a%84%e5%b0%8e%e6%95%b8%e8%88%87%e5%8f%8d%e5%b0%8e%e6%95%b8/","data_source_category":"HTML","path":"data_math/calcgospel/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"68b868fa-bf18-417e-84a8-2af8f568b965","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2014/%e5%be%ae%e5%88%86%e7%9a%84%e5%ae%9a%e7%be%a9/","data_source_category":"HTML","path":"data_math/calcgospel/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"557d7f79-73ee-4600-abd4-e5adb866a405","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%e7%be%85%e5%bf%85%e9%81%94%e6%b3%95%e5%89%87%e7%9a%84%e9%9b%a2%e6%95%a3%e7%89%88%e6%9c%ac%ef%bc%9astolz%e5%ae%9a%e7%90%86/","data_source_category":"HTML","path":"data_math/calcgospel/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7b2bf3ae-2774-4c47-82ea-dfe23202c2a4","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e6%9c%89%e9%97%9c%e5%87%b9%e5%87%b8%e6%80%a7%e7%9a%84%e4%b8%80%e9%81%93%e8%ad%89%e6%98%8e-%e5%85%bc%e8%ab%96%e4%bd%bf%e7%94%a8%e6%b3%b0%e5%8b%92%e5%b1%95%e9%96%8b%e7%9a%84%e4%b8%80%e5%80%8b/","data_source_category":"HTML","path":"data_math/calcgospel/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e93b73ff-1b88-410c-83e7-d78c2e404e26","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e5%b9%be%e9%81%93%e7%b7%b4%e7%bf%92%e9%a1%8c%e5%88%86%e4%ba%ab/","data_source_category":"HTML","path":"data_math/calcgospel/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ffcbcdcd-0a11-4e4c-be0d-144ef47febe2","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%E5%A4%9A%E9%A0%85%E5%BC%8F%E8%A7%A3%E9%A4%98%E5%BC%8F%E6%8A%80%E5%B7%A7/","data_source_category":"HTML","path":"data_math/calcgospel/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5eb6bbf0-b10d-4680-9315-8a79c9129925","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e5%8f%b0%e5%a4%a7%e5%ad%b8%e7%94%9f%e5%be%ae%e7%a9%8d%e5%88%86%e6%b1%82%e7%94%9f%e6%89%8b%e5%86%8a/","data_source_category":"HTML","path":"data_math/calcgospel/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8cd33a6e-6ffb-42f2-94aa-838f17e23800","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%E6%9C%89%E7%90%86%E5%87%BD%E6%95%B8%E7%9A%84%E7%A9%8D%E5%88%86%EF%BC%9A%E9%83%A8%E5%88%86%E5%88%86%E5%BC%8F%E6%B3%95/","data_source_category":"HTML","path":"data_math/calcgospel/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6dc4ee4-a935-4fc5-a772-8db899a6ffb8","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%E9%AB%98%E4%B8%AD%E6%95%B8%E5%AD%B8/","data_source_category":"HTML","path":"data_math/calcgospel/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b09d024-89db-4846-a48c-b114d3a44282","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2013/%E5%85%A8%E5%BE%AE%E5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b557d28-db7b-4ec3-92a4-553a6a9a13f4","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2020/%E6%8C%87%E8%80%83%E6%95%B8%E5%AD%B8%E7%A7%91%E9%9D%9E%E9%81%B8%E9%A1%8C%E4%BD%9C%E7%AD%94%E6%8C%87%E5%BC%95/","data_source_category":"HTML","path":"data_math/calcgospel/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8c2ed463-4962-4df6-8142-a0c5d755ce7c","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%E8%AE%8A%E6%95%B8%E4%BB%A3%E6%8F%9B%E8%A7%A3%E6%A5%B5%E9%99%90%E5%95%8F%E9%A1%8C/","data_source_category":"HTML","path":"data_math/calcgospel/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1f31f2e-e440-472a-a618-2b2c04e6a1b8","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2013/%E6%A2%AF%E5%BA%A6%E3%80%81%E6%96%B9%E5%90%91%E5%B0%8E%E6%95%B8%E8%88%87%E5%88%87%E5%B9%B3%E9%9D%A2/","data_source_category":"HTML","path":"data_math/calcgospel/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a4d014f0-3170-420a-a9c3-a9ad66f8a472","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%E7%A0%94%E7%A9%B6%E6%89%80%E6%BA%96%E5%82%99%E6%AD%B7%E7%A8%8B%E5%88%86%E4%BA%AB/","data_source_category":"HTML","path":"data_math/calcgospel/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0073686f-f474-4c78-b9aa-81997bd0ca7a","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/tag/%e5%be%ae%e7%a9%8d%e5%88%86%e5%ae%b6%e6%95%99/","data_source_category":"HTML","path":"data_math/calcgospel/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"884cb93a-37b5-4111-8aff-f0ca07ad9fa7","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/%e8%bd%89%e5%ad%b8%e8%80%83%e8%a9%b3%e8%a7%a3/","data_source_category":"HTML","path":"data_math/calcgospel/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dc223214-8055-4376-ab8c-9c26a0f96d6e","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%E5%8F%B0%E8%81%AF%E5%A4%A7%E7%B3%BB%E7%B5%B1%E8%BD%89%E5%AD%B8%E8%80%83107%E5%BE%AE%E7%A9%8D%E5%88%86a2%E8%A9%B3%E8%A7%A3/","data_source_category":"HTML","path":"data_math/calcgospel/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b6f7fea2-a3fe-4fda-b388-965e96bc458b","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e6%9b%b8%e7%b1%8d%e5%b7%b2%e5%87%ba%e7%89%88%ef%bc%9a%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e8769d4-9cf8-4870-9832-d224f1fe6fb3","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/%e6%b1%82%e5%b0%8e-sin2x-cos2x%e5%8f%8a%e5%85%b6%e6%87%89%e7%94%a8/","data_source_category":"HTML","path":"data_math/calcgospel/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2962e43f-b42a-4a03-8dc3-34d2276670c9","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/page/3/","data_source_category":"HTML","path":"data_math/calcgospel/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fbe007b2-f457-4a14-b8d3-7543a2a1a569","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86/%e7%bf%92%e9%a1%8c%e8%a7%a3%e7%ad%94/","data_source_category":"HTML","path":"data_math/calcgospel/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80f3235b-94a8-4065-b516-46a566f00381","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/page/2/","data_source_category":"HTML","path":"data_math/calcgospel/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c7bc94c1-7aa2-4799-8e23-d0a131b35741","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2020/%e4%b8%80%e6%ac%a1%e4%b8%8d%e7%ad%89%e5%bc%8f%e7%9a%84%e5%8d%80%e5%9f%9f%e5%88%a4%e6%96%b7/","data_source_category":"HTML","path":"data_math/calcgospel/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9afdc7b9-91ef-4126-9c48-8e9798743e63","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/09-%e6%b3%b0%e5%8b%92%e5%b1%95%e9%96%8b/","data_source_category":"HTML","path":"data_math/calcgospel/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a08ad8b4-786d-4c6d-8e17-964461ac4fc4","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2025/%E3%80%8A%E7%99%BD%E8%A9%B1%E5%BE%AE%E7%A9%8D%E5%88%86%E3%80%8B%E7%AC%AC%E4%BA%94%E7%89%88%E8%88%87%E8%88%8A%E7%89%88%E5%B7%AE%E7%95%B0/","data_source_category":"HTML","path":"data_math/calcgospel/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f23e6759-bff9-4ad5-b083-e052c5b7201c","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/page/4/","data_source_category":"HTML","path":"data_math/calcgospel/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bfa309c-7da7-4e75-8fbb-377450a2e2d5","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%E4%BA%8C%E7%B6%AD%E6%95%B8%E6%93%9A%E5%88%86%E6%9E%90/","data_source_category":"HTML","path":"data_math/calcgospel/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"70152763-a01d-4e8f-98a6-fcb455c2d125","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/displaystylelim_ntoinftybignbigfrac1n-%E7%9A%84%E5%B9%BE%E5%80%8B%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95/","data_source_category":"HTML","path":"data_math/calcgospel/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af787a7e-1049-4afa-ac7c-2d234dc82c13","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%E5%BE%AE%E7%A9%8D%E5%88%86%E7%9A%84%E8%B5%B7%E6%BA%90/","data_source_category":"HTML","path":"data_math/calcgospel/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f42e873a-94e0-4b15-a6d0-ce597af2ee6f","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%E7%BE%85%E5%BF%85%E9%81%94%E6%B3%95%E5%89%87%E7%9A%84%E9%9B%A2%E6%95%A3%E7%89%88%E6%9C%AC%EF%BC%9Astolz%E5%AE%9A%E7%90%86/","data_source_category":"HTML","path":"data_math/calcgospel/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d9c1ed42-f9c7-4717-9aee-fe542c3ad371","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%E9%AB%98%E4%B8%AD%E6%A5%B5%E9%99%90%E9%A1%8C%E7%9A%84%E8%B3%B4%E7%9A%AE%E8%A7%A3%E6%B3%95/","data_source_category":"HTML","path":"data_math/calcgospel/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c97cc248-e5fc-4325-8467-0373ee9ac488","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/%E3%80%8A%E7%99%BD%E8%A9%B1%E5%BE%AE%E7%A9%8D%E5%88%86%E3%80%8B%E7%BF%92%E9%A1%8C%E8%A7%A3%E7%AD%94%EF%BC%9A5-8-%E7%91%95%E7%A9%8D%E5%88%86-2-6/","data_source_category":"HTML","path":"data_math/calcgospel/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"341ede47-3eea-4481-b242-cf21972c1729","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%E5%8F%B0%E5%A4%A7%E5%AD%B8%E7%94%9F%E5%BE%AE%E7%A9%8D%E5%88%86%E6%B1%82%E7%94%9F%E6%89%8B%E5%86%8A/","data_source_category":"HTML","path":"data_math/calcgospel/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d43c7077-cad6-4014-8dee-6553e5a73e3b","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%E5%86%AA%E7%B4%9A%E6%95%B8/","data_source_category":"HTML","path":"data_math/calcgospel/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"291f80d6-d3bf-42b0-92cd-bf604bd7be78","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/106%E5%AD%B8%E6%B8%AC%E6%95%B8%E5%AD%B8%E8%A9%B3%E8%A7%A3/","data_source_category":"HTML","path":"data_math/calcgospel/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8a6621e5-f801-4d66-96c4-004cedf0fd13","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/07-%e7%89%b9%e6%ae%8a%e5%87%bd%e6%95%b8/","data_source_category":"HTML","path":"data_math/calcgospel/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1c03dc0-26db-498e-a787-64ab78e2bdab","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/05-%e7%a9%8d%e5%88%86%e6%8a%80%e5%b7%a7/","data_source_category":"HTML","path":"data_math/calcgospel/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad58bb0f-f82d-4bea-be5f-a1619f6ae7ea","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ebcdca0-7e0f-4d99-a7fe-36d78bd9339c","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/%e6%b1%82%e6%a5%b5%e9%99%90-displaystylelim_xtoinftyfraclnbig1exbigsqrt1x2/","data_source_category":"HTML","path":"data_math/calcgospel/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aa71d749-566a-4d86-91c4-87da08ac66e4","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%e5%85%a9%e7%a8%ae%e9%87%8d%e8%a6%81%e6%a5%b5%e9%99%90%e6%b7%b7%e5%90%88%e7%9a%84%e6%a5%b5%e9%99%90%e9%a1%8c/","data_source_category":"HTML","path":"data_math/calcgospel/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fc0c390-cb8a-4857-9323-cc67f07ca81e","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%85%b6%e5%ae%83%e4%ba%8b%e9%a0%85/","data_source_category":"HTML","path":"data_math/calcgospel/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"41032bed-3e90-49fc-9322-c100c0fe76ee","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%e5%b9%be%e9%81%93%e7%a9%8d%e5%88%86%e7%b7%b4%e7%bf%92%e9%a1%8c/","data_source_category":"HTML","path":"data_math/calcgospel/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ddf4397-30a2-4bf0-88fe-97a0794012d6","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%E7%95%99%E8%A8%80%E6%9D%BF/","data_source_category":"HTML","path":"data_math/calcgospel/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d3a7588d-0b55-4a79-bece-0bf4c7508d7f","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%e6%a8%99%e6%ba%96%e5%b7%ae%e8%88%87%e6%a8%99%e6%ba%96%e5%8c%96/","data_source_category":"HTML","path":"data_math/calcgospel/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bad23550-9d59-4dd8-a161-c88270769fc3","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%E7%9B%B8%E9%97%9C%E6%9B%B8%E7%9B%AE/","data_source_category":"HTML","path":"data_math/calcgospel/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b18d92f1-b007-4dd4-b674-668207da11dc","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%E9%87%8D%E8%A6%81%E6%A5%B5%E9%99%90-lim_xto0-fracsin-xx-%E7%9A%84%E5%B9%BE%E5%80%8B%E5%BB%B6%E4%BC%B8%E6%A5%B5%E9%99%90%E9%A1%8C/","data_source_category":"HTML","path":"data_math/calcgospel/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a2dd3094-efcb-4962-b803-46a35f6dd080","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2013/%e9%9b%99%e6%9b%b2%e5%87%bd%e6%95%b8/","data_source_category":"HTML","path":"data_math/calcgospel/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"971b9d02-9fd6-4ec8-be63-65994f5c99b1","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/11-%e5%a4%9a%e8%ae%8a%e5%87%bd%e6%95%b8%e7%9a%84%e5%be%ae%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"da55a19f-8fc5-46d5-b278-ef4ed0360f97","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%E6%A8%99%E6%BA%96%E5%B7%AE%E8%88%87%E6%A8%99%E6%BA%96%E5%8C%96/","data_source_category":"HTML","path":"data_math/calcgospel/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4131e155-d60d-4cf9-a0d6-fb369be312ea","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2020/%e6%8c%87%e8%80%83%e6%95%b8%e5%ad%b8%e7%a7%91%e9%9d%9e%e9%81%b8%e9%a1%8c%e4%bd%9c%e7%ad%94%e6%8c%87%e5%bc%95/","data_source_category":"HTML","path":"data_math/calcgospel/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d292f7e-b363-41b9-bdbb-2aff750868bf","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/tag/%e5%be%ae%e5%88%86-2/","data_source_category":"HTML","path":"data_math/calcgospel/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f7b208e-4f68-4406-8f73-0f1a31af2af3","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/tag/%e5%b0%8e%e6%95%b8/","data_source_category":"HTML","path":"data_math/calcgospel/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2f39b87-7c4d-467b-b4d5-921dac0791b5","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2014/%E5%BE%AE%E5%88%86%E7%9A%84%E5%AE%9A%E7%BE%A9/","data_source_category":"HTML","path":"data_math/calcgospel/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"984592f4-53ca-4d38-a510-9444a25f0416","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/106%e5%ad%b8%e6%b8%ac%e6%95%b8%e5%ad%b8%e8%a9%b3%e8%a7%a3/","data_source_category":"HTML","path":"data_math/calcgospel/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd48d31b-38fd-483c-b649-9b557f89e2df","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%E5%B9%BE%E9%81%93%E7%B7%B4%E7%BF%92%E9%A1%8C%E5%88%86%E4%BA%AB/","data_source_category":"HTML","path":"data_math/calcgospel/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8152febf-bda8-4e26-b242-5ef17cfe3160","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%E7%94%B1%E7%B7%9A%E4%BB%A3%E8%A7%80%E9%BB%9E%E8%A7%A3%E4%B8%80%E9%81%93%E9%AB%98%E4%B8%AD%E7%9F%A9%E9%99%A3%E6%A8%A1%E8%80%83%E9%A1%8C/","data_source_category":"HTML","path":"data_math/calcgospel/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9da9576f-81c9-4566-9146-2050e511a3be","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/about/sample-page-2/","data_source_category":"HTML","path":"data_math/calcgospel/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a0509298-22eb-4649-9257-1ccf46a684c5","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/onlinecourse/","data_source_category":"HTML","path":"data_math/calcgospel/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"abf147de-0c30-497a-ba93-257ef9a560d1","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%e7%a9%8d%e5%88%86%e6%8a%80%e5%b7%a7%e9%9b%9c%e8%ab%87/","data_source_category":"HTML","path":"data_math/calcgospel/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8ce4603-3fb2-4f3d-bfb6-b205754cef44","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e6%9c%aa%e5%88%86%e9%a1%9e/","data_source_category":"HTML","path":"data_math/calcgospel/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d90659d0-e28a-4f0e-9a25-6af0245b0890","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/04-%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c9205dd5-ca1f-461b-8b82-a3fbcade3a95","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2012/%e5%90%8d%e8%a9%9e%e7%9a%84%e5%be%ae%e5%88%86%ef%bc%88differential%ef%bc%89/","data_source_category":"HTML","path":"data_math/calcgospel/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"312c7f52-29af-46e2-a396-70488cccc80e","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%E7%99%BD%E8%A9%B1%E5%BE%AE%E7%A9%8D%E5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"370c6367-6c9f-4cb2-bf7c-234d9c8fd00d","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%e6%b7%ba%e8%aa%aa%e5%90%91%e9%87%8f%e5%be%ae%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b1bcb89-47d4-45e7-8c6c-a339648a4e6f","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e5%81%9a%e6%95%b8%e5%ad%b8%e7%a7%91%e6%ad%b7%e5%b1%86%e8%80%83%e9%a1%8c%e4%b9%8b%e6%84%8f%e7%be%a9/","data_source_category":"HTML","path":"data_math/calcgospel/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb3720df-a1b1-444f-9ce5-a127e7cf74dd","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2012/%e6%b3%b0%e5%8b%92%e5%b1%95%e9%96%8b/","data_source_category":"HTML","path":"data_math/calcgospel/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"765c7aac-1534-426f-82a4-bcba58675837","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%E6%A5%B5%E9%99%90%E7%9A%84%E5%9A%B4%E6%A0%BC%E5%AE%9A%E7%BE%A9-2/","data_source_category":"HTML","path":"data_math/calcgospel/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53ade958-3649-4c54-bc2d-252dabe4cd02","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%e7%a0%94%e7%a9%b6%e6%89%80%e6%ba%96%e5%82%99%e6%ad%b7%e7%a8%8b%e5%88%86%e4%ba%ab/","data_source_category":"HTML","path":"data_math/calcgospel/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"84940a20-4ada-43df-91db-45ed39030d83","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%e9%ab%98%e4%b8%ad%e6%a5%b5%e9%99%90%e9%a1%8c%e7%9a%84%e8%b3%b4%e7%9a%ae%e8%a7%a3%e6%b3%95/","data_source_category":"HTML","path":"data_math/calcgospel/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"13ab0e38-558c-43eb-8bf1-3c4836a144b2","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2012/%E6%B3%B0%E5%8B%92%E5%B1%95%E9%96%8B/","data_source_category":"HTML","path":"data_math/calcgospel/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f30a23c-e5df-495c-94cf-c51d73ae823c","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e5%be%ae%e7%a9%8d%e5%88%86/03-%e5%be%ae%e5%88%86%e7%9a%84%e6%87%89%e7%94%a8/","data_source_category":"HTML","path":"data_math/calcgospel/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2bd8a261-c168-42bf-9ce2-f90d68fdb039","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2013/%e6%a2%af%e5%ba%a6%e3%80%81%e6%96%b9%e5%90%91%e5%b0%8e%e6%95%b8%e8%88%87%e5%88%87%e5%b9%b3%e9%9d%a2/","data_source_category":"HTML","path":"data_math/calcgospel/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17722282-807c-47be-869f-c4c61b4fa426","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%e6%a5%b5%e5%9d%90%e6%a8%99%e4%b8%ad%e7%9a%84%e5%b8%b8%e8%a6%8b%e6%9b%b2%e7%b7%9a/","data_source_category":"HTML","path":"data_math/calcgospel/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4591b8a0-e095-40f2-8f6f-bdb36c51a35d","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/page/5/","data_source_category":"HTML","path":"data_math/calcgospel/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7700a21e-6a8e-4d8b-9abe-f12b858476c1","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/tag/%e5%b0%8e%e5%87%bd%e6%95%b8/","data_source_category":"HTML","path":"data_math/calcgospel/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b5d8dee1-9b70-453f-9405-71ebe853df8e","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%E5%BE%AE%E7%A9%8D%E5%88%86/%E6%A5%B5%E9%99%90%E8%88%87%E9%80%A3%E7%BA%8C/","data_source_category":"HTML","path":"data_math/calcgospel/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e7e91481-f12b-4d73-8d01-3248311183af","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%E6%B7%BA%E8%AA%AA%E5%90%91%E9%87%8F%E5%BE%AE%E7%A9%8D%E5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aec634f0-5238-44d7-8476-44d0fd18a8a4","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2025/%e3%80%8a%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86%e3%80%8b%e7%ac%ac%e4%ba%94%e7%89%88%e8%88%87%e8%88%8a%e7%89%88%e5%b7%ae%e7%95%b0/","data_source_category":"HTML","path":"data_math/calcgospel/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7965cfb-9a9f-4791-b552-f7616711e4d9","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/%e3%80%8a%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86%e3%80%8b%e7%bf%92%e9%a1%8c%e8%a7%a3%e7%ad%94%ef%bc%9a5-8-%e7%91%95%e7%a9%8d%e5%88%86-2-6/","data_source_category":"HTML","path":"data_math/calcgospel/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7d8f0dd-424b-4c9e-a619-8811b3b0491b","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2024/displaystylelim_ntoinftybignbigfrac1n-%e7%9a%84%e5%b9%be%e5%80%8b%e8%a8%88%e7%ae%97%e6%96%b9%e6%b3%95/","data_source_category":"HTML","path":"data_math/calcgospel/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a7af6929-cf44-4e11-b5e2-9e364cb49288","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2021/%e7%94%a8%e7%a9%8d%e5%88%86%e9%a9%97%e8%ad%89%e5%9c%93%e5%91%a8%e7%8e%87%e7%9a%84%e8%bf%91%e4%bc%bc%e5%80%bc-22-7-%e4%b9%8b%e7%b2%be%e7%a2%ba%e5%ba%a6/","data_source_category":"HTML","path":"data_math/calcgospel/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7d364572-edfa-46ef-9476-51a21fb1dc07","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%e6%a5%b5%e5%9d%90%e6%a8%99%e7%b0%a1%e4%bb%8b/","data_source_category":"HTML","path":"data_math/calcgospel/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11e6101f-a908-4509-b838-32c1564ae5bd","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2021/%e6%9c%89%e9%97%9c%e5%90%88%e6%88%90%e5%87%bd%e6%95%b8%e6%b1%82%e6%a5%b5%e9%99%90%e7%9a%84%e5%8f%8d%e4%be%8b/","data_source_category":"HTML","path":"data_math/calcgospel/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47a220e6-ed59-4314-af63-3350e940f560","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/tag/%e9%87%8d%e8%a6%81%e6%a5%b5%e9%99%90/","data_source_category":"HTML","path":"data_math/calcgospel/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2695070f-ec57-49f3-8ec6-fc82a9aee25d","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2021/%E7%94%A8%E7%A9%8D%E5%88%86%E9%A9%97%E8%AD%89%E5%9C%93%E5%91%A8%E7%8E%87%E7%9A%84%E8%BF%91%E4%BC%BC%E5%80%BC-22-7-%E4%B9%8B%E7%B2%BE%E7%A2%BA%E5%BA%A6/","data_source_category":"HTML","path":"data_math/calcgospel/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"08985eac-c13e-46e8-961e-c67dcc4dbf62","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%E6%9C%89%E9%97%9C%E5%87%B9%E5%87%B8%E6%80%A7%E7%9A%84%E4%B8%80%E9%81%93%E8%AD%89%E6%98%8E-%E5%85%BC%E8%AB%96%E4%BD%BF%E7%94%A8%E6%B3%B0%E5%8B%92%E5%B1%95%E9%96%8B%E7%9A%84%E4%B8%80%E5%80%8B/","data_source_category":"HTML","path":"data_math/calcgospel/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7affd739-9b07-48be-8d96-f0f4e48633f7","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2016/%e6%a5%b5%e9%99%90%e7%9a%84%e5%9a%b4%e6%a0%bc%e5%ae%9a%e7%be%a9-2/","data_source_category":"HTML","path":"data_math/calcgospel/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a5c5f760-2f3f-4a12-8c36-d4cc64ae5ff0","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2018/%e5%8f%b0%e5%a4%a7%e5%ad%b8%e7%94%9f%e5%95%8f%e7%ad%94%e5%8d%80/","data_source_category":"HTML","path":"data_math/calcgospel/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"10d5fd75-1969-4d9a-8621-20fa088dccbb","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%E5%85%A9%E7%A8%AE%E9%87%8D%E8%A6%81%E6%A5%B5%E9%99%90%E6%B7%B7%E5%90%88%E7%9A%84%E6%A5%B5%E9%99%90%E9%A1%8C/","data_source_category":"HTML","path":"data_math/calcgospel/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d824b408-f8cb-48f4-a321-65c5c5c3e74e","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2023/%E4%B8%80%E9%81%93%E8%88%87%E7%B5%95%E5%B0%8D%E5%80%BC%E6%9C%89%E9%97%9C%E7%9A%84%E7%A9%8D%E5%88%86%E7%BF%92%E9%A1%8C/","data_source_category":"HTML","path":"data_math/calcgospel/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fa095f08-3ac4-4a4d-b5fa-66dc631caf7c","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%E5%9F%BA%E7%A4%8E%E8%A4%87%E7%BF%92-2/","data_source_category":"HTML","path":"data_math/calcgospel/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b8742fc0-d6f6-4545-b06e-d2943987c040","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2020/%E4%B8%80%E6%AC%A1%E4%B8%8D%E7%AD%89%E5%BC%8F%E7%9A%84%E5%8D%80%E5%9F%9F%E5%88%A4%E6%96%B7/","data_source_category":"HTML","path":"data_math/calcgospel/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e93608e0-18aa-4113-a711-e45f02b46d65","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86/","data_source_category":"HTML","path":"data_math/calcgospel/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54a2a5e8-bfa7-4aca-be42-8f5992de7b76","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/%e7%9b%b8%e9%97%9c%e6%9b%b8%e7%9b%ae/","data_source_category":"HTML","path":"data_math/calcgospel/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"23211c4f-eabe-455a-b21f-9a07039360c2","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/category/%e7%99%bd%e8%a9%b1%e5%be%ae%e7%a9%8d%e5%88%86/%e7%bf%92%e9%a1%8c%e8%a7%a3%e7%ad%94/05-%e7%a9%8d%e5%88%86%e6%8a%80%e5%b7%a7-%e7%bf%92%e9%a1%8c%e8%a7%a3%e7%ad%94/","data_source_category":"HTML","path":"data_math/calcgospel/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6a9249f8-a684-45ff-b93e-1df40ac8f8f2","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2019/%e9%9f%93%e4%bf%a1%e9%bb%9e%e5%85%b5%e8%88%87%e6%8b%89%e6%a0%bc%e6%9c%97%e6%97%a5%e6%8f%92%e5%80%bc%e6%b3%95%e2%94%80%e2%94%80%e5%af%ab%e5%9c%a8108%e8%aa%b2%e7%b6%b1%e4%b8%8a%e8%b7%af%e5%89%8d/","data_source_category":"HTML","path":"data_math/calcgospel/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a220bff3-b00a-4ad0-bbc0-9b22e5123dbd","dataset_name":"eval_pipeline_suit","url":"https://calcgospel.top/2017/%e5%a4%9a%e9%a0%85%e5%bc%8f%e8%a7%a3%e9%a4%98%e5%bc%8f%e6%8a%80%e5%b7%a7/","data_source_category":"HTML","path":"data_math/calcgospel/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3b37ccb1-1b4f-4116-b9af-07cfa4afb3f7","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/download.htm","data_source_category":"HTML","path":"data_math/betterexplained/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2215849f-ac30-496d-8c40-748ef87c67c6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-7/lesson7_fragment.html","data_source_category":"HTML","path":"data_math/betterexplained/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c8bed3e9-fb08-4c21-89e0-e438c1991664","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/colorized-math-equations/print/%7B%7B%20revealButtonHref%20%7D%7D","data_source_category":"HTML","path":"data_math/betterexplained/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"34c589a2-b07b-4f4e-ad76-b4f609851cb7","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/resources.htm","data_source_category":"HTML","path":"data_math/betterexplained/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92949173-b40a-4c3b-92c0-95bcd5d87040","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/Functions.html","data_source_category":"HTML","path":"data_math/betterexplained/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"603161c9-8188-4d34-a557-dda7535a3600","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/network_settings.html","data_source_category":"HTML","path":"data_math/betterexplained/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3435faf2-fa98-474b-8326-ee9ed3feeb05","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/cs432/10_22_MemorySafety.html","data_source_category":"HTML","path":"data_math/betterexplained/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2c27d7bd-5ec3-434d-965d-97b6ad307e60","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/e.html","data_source_category":"HTML","path":"data_math/betterexplained/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8c55d8c5-43bd-4561-a5b0-71b1faf7123b","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/preface/lesson6_fragment.html","data_source_category":"HTML","path":"data_math/betterexplained/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"10221ba2-498e-4276-8d32-79b6e691e203","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-9/lesson9_fragment.html","data_source_category":"HTML","path":"data_math/betterexplained/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f8b9790-bad2-4bd5-8195-016659bb018a","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/positioning/code/record.pl","data_source_category":"HTML","path":"data_math/betterexplained/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd7cffc5-49bc-4be5-8a6c-a900cc0a1796","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/flux_circulation.html","data_source_category":"HTML","path":"data_math/betterexplained/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0cb8cb5a-79b7-4d61-adff-413484f0f811","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/karate_old.html","data_source_category":"HTML","path":"data_math/betterexplained/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"88c33dac-eeec-4b23-a61a-8877dc317249","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/tangent.html","data_source_category":"HTML","path":"data_math/betterexplained/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"72f5ef1c-8964-42d2-bfa1-7b16aac972d4","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/unix_delete.html","data_source_category":"HTML","path":"data_math/betterexplained/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b0ee43f5-c26b-4982-8e7a-189480956348","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/finance/businesspractices.html","data_source_category":"HTML","path":"data_math/betterexplained/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3ce5de4f-f248-4f7e-be88-c32dc4e1c0dc","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/karate_7_1.html","data_source_category":"HTML","path":"data_math/betterexplained/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a17012d3-8003-4c2f-a372-36c3556944ba","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/tuning_fork_antenna.html","data_source_category":"HTML","path":"data_math/betterexplained/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d071a626-9614-4c5d-bdf3-3e3edf8f84c6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/hyperbolic-functions/","data_source_category":"HTML","path":"data_math/betterexplained/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"870cd054-1e77-4b2d-9f69-41af8b0a8f91","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/about","data_source_category":"HTML","path":"data_math/betterexplained/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eba28dbd-08b6-48fd-afb8-ea1c3e977724","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intuitive-understanding-of-eulers-formula/","data_source_category":"HTML","path":"data_math/betterexplained/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1795ac20-c1e1-4530-8ae0-007720cde4f1","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/an-intuitive-and-short-explanation-of-bayes-theorem/","data_source_category":"HTML","path":"data_math/betterexplained/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"86409724-20b0-41f2-b5cd-97d3396811f4","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/why-do-we-learn-math/","data_source_category":"HTML","path":"data_math/betterexplained/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"829deeaf-deab-4f07-8409-427b50325c75","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/understanding-algebra-why-do-we-factor-equations/","data_source_category":"HTML","path":"data_math/betterexplained/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"72285a88-1cd2-4ae4-b280-79add05b088b","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/types-of-graphs/","data_source_category":"HTML","path":"data_math/betterexplained/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6a81461-152d-4aa3-ae2e-391ec7f950f4","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/surprising-patterns-in-the-square-numbers-1-4-9-16/","data_source_category":"HTML","path":"data_math/betterexplained/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2982f23-2ce2-4df3-8270-f7033c98b47d","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/law-of-sines/","data_source_category":"HTML","path":"data_math/betterexplained/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77f28d9c-8969-48d4-8ed6-c0b8ad564ef9","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/hyperbolic-functions","data_source_category":"HTML","path":"data_math/betterexplained/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9b0489f3-357f-4f5f-86b0-85f08decd565","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-3","data_source_category":"HTML","path":"data_math/betterexplained/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"841f8df1-f10a-42b2-8214-cb5357ba7a32","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-13","data_source_category":"HTML","path":"data_math/betterexplained/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0c9ff560-ca6f-4080-a276-88117393dd88","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-14","data_source_category":"HTML","path":"data_math/betterexplained/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"45589245-43b3-4ad2-8a98-064ad3fa7bd6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-15","data_source_category":"HTML","path":"data_math/betterexplained/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d98535a5-2f8d-4c66-8e51-00d02c91e52f","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/derivatives-product-power-chain/","data_source_category":"HTML","path":"data_math/betterexplained/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"371aca35-a5f7-46bf-a0ec-43fdf30ea90b","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/vector-calculus-understanding-the-gradient/","data_source_category":"HTML","path":"data_math/betterexplained/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8567f9ed-9482-4394-bc6b-06e075cd6473","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/divergence/","data_source_category":"HTML","path":"data_math/betterexplained/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd3f0bf6-358d-46bc-b551-267562c01f5d","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/","data_source_category":"HTML","path":"data_math/betterexplained/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c36548b7-623e-454e-8b2e-87cdca00f6ef","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/starting-ruby-on-rails-what-i-wish-i-knew/","data_source_category":"HTML","path":"data_math/betterexplained/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c60bf465-7236-4065-b61d-ec512cf455b9","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/the-single-page-javascript-overview/","data_source_category":"HTML","path":"data_math/betterexplained/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f1292c83-bbb8-4620-970e-68b93ea968d3","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/how-to-debug-web-applications-with-firefox/","data_source_category":"HTML","path":"data_math/betterexplained/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f27990f-191c-437c-a90d-0b534f80ed72","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/how-to-make-a-bookmarklet-for-your-web-application/","data_source_category":"HTML","path":"data_math/betterexplained/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e2566524-01a7-49f4-a571-de6ef41c3c5d","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/a-visual-guide-to-simple-compound-and-continuous-interest-rates/","data_source_category":"HTML","path":"data_math/betterexplained/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b6726bb0-18c0-4cd8-930b-9943d14ee751","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/privacy/","data_source_category":"HTML","path":"data_math/betterexplained/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fbf9419c-ea56-4acf-be0c-060de5bd9bdc","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/translations","data_source_category":"HTML","path":"data_math/betterexplained/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c4552ff5-8eec-4413-9562-4c2c11a4a12c","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/learning-to-learn-math-abstraction/","data_source_category":"HTML","path":"data_math/betterexplained/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fa875da7-12b1-4724-87a5-d6c748a8466c","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/analogy-math-and-cooking/","data_source_category":"HTML","path":"data_math/betterexplained/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1d33fe7b-f552-431b-9402-42bf31515238","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/learn-math-like-mega-man/","data_source_category":"HTML","path":"data_math/betterexplained/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8f24020b-1186-4aae-9169-df0698dbba24","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/matrix-multiplication/","data_source_category":"HTML","path":"data_math/betterexplained/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4879499c-8b26-47e3-a1bf-0b3abc9faef1","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/definitions-of-e-colorized/","data_source_category":"HTML","path":"data_math/betterexplained/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e4273a7b-13bf-4e90-8099-e2cb15314183","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/golden-ratio-intuition/","data_source_category":"HTML","path":"data_math/betterexplained/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54ace03b-0405-43fe-b0ae-13ad5e220834","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/learning-tip-idea-name/","data_source_category":"HTML","path":"data_math/betterexplained/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"70f923ac-3d74-47c9-9a9b-583efaa89387","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/print-edition-of-math-better-explained-now-available/","data_source_category":"HTML","path":"data_math/betterexplained/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8a5fbb73-a683-4256-bba8-acb6e049efef","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/math-better-explained-available-on-the-kindle-store/","data_source_category":"HTML","path":"data_math/betterexplained/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fc0f12ad-ac44-41d5-88a2-b94a766ff124","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/marketing-lessons-from-instacalccom/","data_source_category":"HTML","path":"data_math/betterexplained/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b74af74b-370e-440b-ae48-df89957539db","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/law-of-unintended-consequences/","data_source_category":"HTML","path":"data_math/betterexplained/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d1c400a6-5600-4f47-9bbe-bfb187cf730d","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/e-derivative/","data_source_category":"HTML","path":"data_math/betterexplained/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ac663831-5c7e-41a5-bd1d-45e2970418fb","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/e-series/","data_source_category":"HTML","path":"data_math/betterexplained/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a6806d14-4d8f-41af-bfee-75553e97fc44","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/pythagorean-theorem/","data_source_category":"HTML","path":"data_math/betterexplained/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c491d8eb-821c-4409-a0f7-54d58f0cb4e1","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/radian/","data_source_category":"HTML","path":"data_math/betterexplained/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6123d8cc-6538-4e09-898c-404483397d59","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/sine-geometric/","data_source_category":"HTML","path":"data_math/betterexplained/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80d0197a-16f7-43c0-9097-39baf3ec931c","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/topics/fourier-transform","data_source_category":"HTML","path":"data_math/betterexplained/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f17564bf-cf0f-4aa3-af5e-1cf3e5365426","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intuitive-trigonometry/print/","data_source_category":"HTML","path":"data_math/betterexplained/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e967dd51-d2e1-4b78-a0a7-958f9fdaaac7","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/linear-algebra-guide/print/","data_source_category":"HTML","path":"data_math/betterexplained/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"28e24753-bbdf-4d27-8cb0-514317bb4ceb","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intuitive-guide-to-angles-degrees-and-radians/print/","data_source_category":"HTML","path":"data_math/betterexplained/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"42627ecf-c6ab-4ee8-a886-5db70992d899","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/an-intuitive-and-short-explanation-of-bayes-theorem/print/","data_source_category":"HTML","path":"data_math/betterexplained/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4d954b81-b4e1-4ee7-b4bd-b0d969fde4fd","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/fun-with-modular-arithmetic/print/","data_source_category":"HTML","path":"data_math/betterexplained/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a0d43abe-8a1c-4327-b174-6f38ee6a2312","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/math-as-language-understanding-the-equals-sign/print/","data_source_category":"HTML","path":"data_math/betterexplained/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb0f0f26-06ef-4002-a05e-da34c3ab1a6f","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/surprising-patterns-in-the-square-numbers-1-4-9-16/print/","data_source_category":"HTML","path":"data_math/betterexplained/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a610f126-e374-45a9-869c-d385e215259f","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/how-to-analyze-data-using-the-average/print/","data_source_category":"HTML","path":"data_math/betterexplained/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6989ba8f-ac92-4c1a-9447-cbe676eddd16","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/understanding-calculus-with-a-bank-account-metaphor/print/","data_source_category":"HTML","path":"data_math/betterexplained/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63641cca-eea3-4639-a990-9276f321b2da","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/the-single-page-javascript-overview/print/","data_source_category":"HTML","path":"data_math/betterexplained/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3739bab6-c82b-4000-8caf-1189485b00cc","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/how-to-debug-web-applications-with-firefox/print/","data_source_category":"HTML","path":"data_math/betterexplained/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7af8df13-82b1-479e-815a-076e2845e0be","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/debuggers-and-symbol-tables/debugging-with-gdb","data_source_category":"HTML","path":"data_math/betterexplained/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af45d9a5-90f1-42d9-a4c5-366be5363795","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/a-visual-guide-to-simple-compound-and-continuous-interest-rates/print/","data_source_category":"HTML","path":"data_math/betterexplained/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0da1d0d4-3de3-4d90-9887-48e16457e567","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-4/","data_source_category":"HTML","path":"data_math/betterexplained/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4fefeef-e19d-4de7-8b1e-778f67758bad","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/calculus/lesson-5/","data_source_category":"HTML","path":"data_math/betterexplained/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6c241a96-ca2a-4a8d-a828-2a8ac354499e","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/how-to-develop-a-mindset-for-math/print/","data_source_category":"HTML","path":"data_math/betterexplained/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9e94d62a-36db-4d9d-9d49-f91d82d86eb2","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/learning-to-learn-math-abstraction/print/","data_source_category":"HTML","path":"data_math/betterexplained/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cbaaec3f-5805-47d4-b222-becd010e792e","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/colorized-math-equations/print/","data_source_category":"HTML","path":"data_math/betterexplained/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"437b4340-9c45-46d1-a4d1-68ef33d8b48e","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/life-lessons-10-years/print/","data_source_category":"HTML","path":"data_math/betterexplained/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"79d423b1-9056-422e-9f8c-10c18457c2b9","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/interview-with-metalearn/print/","data_source_category":"HTML","path":"data_math/betterexplained/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"41cc85a8-685e-41c4-a6e4-42dcdaabb5c6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intuition-for-slope-intercept-form/print/","data_source_category":"HTML","path":"data_math/betterexplained/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"90bd67aa-150c-4eb9-8392-c8a1ce83ee68","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/thinking-about-zero/print/","data_source_category":"HTML","path":"data_math/betterexplained/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eb16f056-350f-4357-9d3f-3f05a82b03a6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/proofs-vs-explanations/print/","data_source_category":"HTML","path":"data_math/betterexplained/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"17bed062-6911-4daa-a194-168719add8d8","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/intuition-first-calculus-course/print/","data_source_category":"HTML","path":"data_math/betterexplained/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"14dcca35-7e76-42f2-9b0e-c82c08ce8658","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/site-updates-for-betterexplained-com/print/","data_source_category":"HTML","path":"data_math/betterexplained/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"68b75654-4ac6-4ed0-876f-95c54cb1c9e6","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/articles/build-a-site-you-and-your-readers-will-love/print/","data_source_category":"HTML","path":"data_math/betterexplained/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d0b0b92d-0595-47d3-9603-9e83231b0d02","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/average/average/node1.html","data_source_category":"HTML","path":"data_math/betterexplained/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d4535dec-5353-4bd7-9ea9-4918ed0b19dd","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/average/average/node2.html","data_source_category":"HTML","path":"data_math/betterexplained/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e93de38c-397e-41dc-98ae-2130d8a50fe3","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/average/average/index.html","data_source_category":"HTML","path":"data_math/betterexplained/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a739a49-0810-4fa0-a3a0-3a39773eda3a","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/ele491.htm","data_source_category":"HTML","path":"data_math/betterexplained/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"693a9332-3781-4375-83a5-81dca3909cda","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/cs432/11_19_NetworkSecurity.html","data_source_category":"HTML","path":"data_math/betterexplained/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2777c9d4-c6c1-471e-af72-7f47bcbb6448","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/karate_8_20.html","data_source_category":"HTML","path":"data_math/betterexplained/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4843b7f0-5d36-4fb5-b24c-134675c263ef","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/network_link.html","data_source_category":"HTML","path":"data_math/betterexplained/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d96616fd-07bd-4379-8a2a-be7c49a5493b","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/shorts/unix_commands_in_DOS.html","data_source_category":"HTML","path":"data_math/betterexplained/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12448f0b-7d86-44d4-b27d-c82ba4012e70","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/Gauss/gauss.htm","data_source_category":"HTML","path":"data_math/betterexplained/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03486c06-8969-4859-a6ba-408f136eb6a4","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/general_notes/orange.htm","data_source_category":"HTML","path":"data_math/betterexplained/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c513a6ee-6ab6-4823-ba53-4e4af8d2667c","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/Gradient/Gradient.htm","data_source_category":"HTML","path":"data_math/betterexplained/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2dbdc24d-33b6-4c04-a703-b01798225413","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/math/mathtricks.htm","data_source_category":"HTML","path":"data_math/betterexplained/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04d4eb0f-7ea3-436a-98c8-970e62a77583","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/cs432/10_15_SSH.html","data_source_category":"HTML","path":"data_math/betterexplained/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"05f083b3-c784-47ea-ac3f-7851eede85b7","dataset_name":"eval_pipeline_suit","url":"https://betterexplained.com/~kazad/resources/cs/oo/oo_programming.htm","data_source_category":"HTML","path":"data_math/betterexplained/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b0f5170c-bfa6-44ea-b361-6a7e263c117b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=181964","data_source_category":"HTML","path":"data_math/mathisfunforum/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a20c3d0-7eae-4cb9-a923-3326681b08ad","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=109680","data_source_category":"HTML","path":"data_math/mathisfunforum/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"605fd24b-dbb2-44de-a329-90596a169ab3","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=7973","data_source_category":"HTML","path":"data_math/mathisfunforum/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53502b9c-ff36-4c84-9b90-f6a3a62f5038","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=66271","data_source_category":"HTML","path":"data_math/mathisfunforum/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b5183d50-1df3-4213-81cd-2e39ef40d54b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=127931","data_source_category":"HTML","path":"data_math/mathisfunforum/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"be6067ad-8a14-4c97-aab8-7be5c98a89c0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=118569","data_source_category":"HTML","path":"data_math/mathisfunforum/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"014906c4-7ff2-4e8e-9d79-08f0aa18661e","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=223553","data_source_category":"HTML","path":"data_math/mathisfunforum/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ddffe979-3b63-4b5d-b181-f155b0ab40ff","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=179963","data_source_category":"HTML","path":"data_math/mathisfunforum/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"09df344e-5850-4642-943a-955faaf8e918","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=691","data_source_category":"HTML","path":"data_math/mathisfunforum/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee41e470-1c6d-44d3-b91f-99a33daa2837","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=163195","data_source_category":"HTML","path":"data_math/mathisfunforum/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0e590d8c-543f-4f9d-bedf-fcf469e75fdf","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=78224","data_source_category":"HTML","path":"data_math/mathisfunforum/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b40af0c5-1071-4d35-bf37-4573bbc20225","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=121496","data_source_category":"HTML","path":"data_math/mathisfunforum/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2ab215ce-efc0-4af3-970d-802d8bc74a61","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=155128","data_source_category":"HTML","path":"data_math/mathisfunforum/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4c86f297-d243-41fc-a8d2-9b5569d28890","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=154602","data_source_category":"HTML","path":"data_math/mathisfunforum/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b08ba678-abb2-46d4-ac76-6a19f9fa085b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=245181","data_source_category":"HTML","path":"data_math/mathisfunforum/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63b99134-6f27-46f7-a968-5619e60b14cc","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=244755","data_source_category":"HTML","path":"data_math/mathisfunforum/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48eaf428-3f10-438d-877e-27d669d75975","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=223346","data_source_category":"HTML","path":"data_math/mathisfunforum/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c2650fe2-1998-43da-9914-000c932e2bd0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=145922","data_source_category":"HTML","path":"data_math/mathisfunforum/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b13601c5-8789-48f3-8177-c30713772f19","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=90097","data_source_category":"HTML","path":"data_math/mathisfunforum/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"816d230f-fba1-4c00-944e-c04a30486a20","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=154948","data_source_category":"HTML","path":"data_math/mathisfunforum/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b399c9c-9d32-476c-ad51-698c571c593b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=63906","data_source_category":"HTML","path":"data_math/mathisfunforum/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"461305b2-2ba0-4a36-8b63-dcbb3db4aacc","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=179901","data_source_category":"HTML","path":"data_math/mathisfunforum/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4108de59-08d1-4ae4-a682-3ccd7c7814d8","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=164230","data_source_category":"HTML","path":"data_math/mathisfunforum/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eb00d220-c212-40d0-9759-c14079d7f2ae","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=133527","data_source_category":"HTML","path":"data_math/mathisfunforum/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f270f16-301c-486e-b99e-348bef1601f4","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=244235","data_source_category":"HTML","path":"data_math/mathisfunforum/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b0099a2-20f5-46be-b155-ba18040586dc","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=127209","data_source_category":"HTML","path":"data_math/mathisfunforum/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fadecdfc-9a44-4ceb-97fd-884958c9f954","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=220829","data_source_category":"HTML","path":"data_math/mathisfunforum/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bd96e171-847e-4340-a785-fc518ebd6cd0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=245267","data_source_category":"HTML","path":"data_math/mathisfunforum/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e73d2a9e-7cf7-438e-a958-444e7f139d36","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=160665","data_source_category":"HTML","path":"data_math/mathisfunforum/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04225376-7dfa-4386-a330-46a2deb7ea93","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=80162","data_source_category":"HTML","path":"data_math/mathisfunforum/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7ae8c9b5-7f16-4731-aa75-9c45de348c13","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=217697","data_source_category":"HTML","path":"data_math/mathisfunforum/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a6eac7d-7a2d-4a30-9a77-b688f2021678","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=222881","data_source_category":"HTML","path":"data_math/mathisfunforum/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"526ad3f3-af1f-4df7-a47a-4b7255c59f87","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=123179","data_source_category":"HTML","path":"data_math/mathisfunforum/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c6a7ab4-1a3a-475c-b3ca-8e5224d2e42f","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=142780","data_source_category":"HTML","path":"data_math/mathisfunforum/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c028326c-1828-48b8-8532-669cbb843b0e","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=223060","data_source_category":"HTML","path":"data_math/mathisfunforum/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"71098039-23c5-4565-9659-82e94de3da28","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=79176","data_source_category":"HTML","path":"data_math/mathisfunforum/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"db6323e4-6427-462a-863c-909b19f87b3a","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=155247","data_source_category":"HTML","path":"data_math/mathisfunforum/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"090be1ba-cb01-4181-956f-d16064c2248c","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=111","data_source_category":"HTML","path":"data_math/mathisfunforum/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"48c6f179-56c7-4cb5-8706-7caeda24b692","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=122634","data_source_category":"HTML","path":"data_math/mathisfunforum/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2e976410-7b92-4299-9569-2aca0d1f5cd7","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=133098","data_source_category":"HTML","path":"data_math/mathisfunforum/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3298eb2f-4bc2-4562-8e5d-9c9edf36dd1f","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=238494","data_source_category":"HTML","path":"data_math/mathisfunforum/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2b123614-6993-4b73-861d-5decd0074fab","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=242001","data_source_category":"HTML","path":"data_math/mathisfunforum/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b799026-fd91-4c61-afb5-18416b02acff","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=166662","data_source_category":"HTML","path":"data_math/mathisfunforum/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"de258b91-1ba8-4ca6-92bb-7789ba541d9d","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=165053","data_source_category":"HTML","path":"data_math/mathisfunforum/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3424fc8b-d553-46d4-a729-81aa16a80eeb","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=10919","data_source_category":"HTML","path":"data_math/mathisfunforum/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2c301163-6c94-487d-80e3-f85bbff75b57","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=242609","data_source_category":"HTML","path":"data_math/mathisfunforum/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bde1e0ee-59e6-4c89-b5e8-3daf22c554ad","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=171971","data_source_category":"HTML","path":"data_math/mathisfunforum/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2189b150-8095-40cb-b093-a5a354139d85","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=154876","data_source_category":"HTML","path":"data_math/mathisfunforum/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7fb83bdd-e9c0-47bf-a118-b745ef6bdd2d","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=126927","data_source_category":"HTML","path":"data_math/mathisfunforum/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c11b49d0-05fe-4a85-9176-0aab5f6ec6bb","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=32013","data_source_category":"HTML","path":"data_math/mathisfunforum/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c269ffe0-7e3b-4477-8a0f-a23d336bec06","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=138196","data_source_category":"HTML","path":"data_math/mathisfunforum/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c63ba164-06f8-4a13-9808-de99747ae5c8","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=243922","data_source_category":"HTML","path":"data_math/mathisfunforum/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"472d5eff-1a34-4739-9c40-71c21bc1beb6","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=219101","data_source_category":"HTML","path":"data_math/mathisfunforum/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aedcec67-1142-4c98-8909-030ed085b265","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=126518","data_source_category":"HTML","path":"data_math/mathisfunforum/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f8522036-1f1b-4944-bc90-eb3cf32bfd4d","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=24102","data_source_category":"HTML","path":"data_math/mathisfunforum/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"335b92a2-de2b-4e58-b3f2-f8600cb6855b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=175230","data_source_category":"HTML","path":"data_math/mathisfunforum/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0c80d090-e0b4-4c33-84e1-35c55c2fd430","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=124693","data_source_category":"HTML","path":"data_math/mathisfunforum/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"767e71b9-9a80-4a1d-bf72-89f7d8a80ded","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=1612","data_source_category":"HTML","path":"data_math/mathisfunforum/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca1a45ce-83d8-4693-8dbf-eb391d6d1f9d","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=240466","data_source_category":"HTML","path":"data_math/mathisfunforum/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"161f5885-9930-43be-bbc5-d7164ef5c6a7","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=120947","data_source_category":"HTML","path":"data_math/mathisfunforum/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"af0a6b68-5a95-4436-899c-cfbeda596ed1","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=8753","data_source_category":"HTML","path":"data_math/mathisfunforum/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04e8621b-8007-4a1d-a3c3-3bcf4630ddcb","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=245427","data_source_category":"HTML","path":"data_math/mathisfunforum/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"568dc601-6af2-4449-8c9d-9e9e750129dc","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=168034","data_source_category":"HTML","path":"data_math/mathisfunforum/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a98811c9-5f35-4d10-9012-62b3a00e7af0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=10225","data_source_category":"HTML","path":"data_math/mathisfunforum/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"25718ef4-c3ab-45ac-a582-244b93bee160","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=240559","data_source_category":"HTML","path":"data_math/mathisfunforum/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad529f7e-51fc-4ce8-976d-938b4e319b71","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=92016","data_source_category":"HTML","path":"data_math/mathisfunforum/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4287a693-47f4-4ace-92bf-efd6c7b9d421","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=145721","data_source_category":"HTML","path":"data_math/mathisfunforum/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8ec71cc-a050-416e-b016-f58468ee5c73","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=219206","data_source_category":"HTML","path":"data_math/mathisfunforum/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee836c1f-fdaf-461e-870b-6d3258048be8","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=134600","data_source_category":"HTML","path":"data_math/mathisfunforum/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b2affc74-fa5b-4fd3-9a76-8f47ca28faa0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=107838","data_source_category":"HTML","path":"data_math/mathisfunforum/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fc8320ac-38fb-4d2e-b362-15c61f5f4cd0","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=181578","data_source_category":"HTML","path":"data_math/mathisfunforum/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3410a479-79ff-4cf9-91b3-1f2ea2825e28","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=243060","data_source_category":"HTML","path":"data_math/mathisfunforum/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"32852aed-4ddb-46b8-a834-8b9ce296bcbb","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=246267","data_source_category":"HTML","path":"data_math/mathisfunforum/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eabb434b-ef26-478e-b7b3-596891bb8e55","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=156914","data_source_category":"HTML","path":"data_math/mathisfunforum/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4d6a3ffe-09aa-4f4a-8963-8e5287567b30","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=372","data_source_category":"HTML","path":"data_math/mathisfunforum/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e04c87b3-f59a-4526-b8d1-94302e1fa86a","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=83712","data_source_category":"HTML","path":"data_math/mathisfunforum/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2e9306e8-15d4-4a13-99c9-b9810582d80a","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=295","data_source_category":"HTML","path":"data_math/mathisfunforum/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d2ef434d-8d78-42fd-b32c-7a4800c67bf4","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=183496","data_source_category":"HTML","path":"data_math/mathisfunforum/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f4e65b2-f495-4a46-9353-c1859a0baf77","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=131808","data_source_category":"HTML","path":"data_math/mathisfunforum/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"31093358-c398-4bd7-a9d8-97d4f84b04c1","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=7452","data_source_category":"HTML","path":"data_math/mathisfunforum/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eaa52036-3d12-4cb6-9179-572ac81b140b","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=140920","data_source_category":"HTML","path":"data_math/mathisfunforum/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e4020d7d-068a-45ee-92ec-1d087f266f73","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=5664","data_source_category":"HTML","path":"data_math/mathisfunforum/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aac9cabb-51ba-4ffc-92ac-840c337ec6c4","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=161954","data_source_category":"HTML","path":"data_math/mathisfunforum/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b4a1392f-3573-46ea-a1f6-1ed31d71345e","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=144363","data_source_category":"HTML","path":"data_math/mathisfunforum/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"74088f24-6d6b-4d6a-913e-584a0a10e603","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=138442","data_source_category":"HTML","path":"data_math/mathisfunforum/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"70be7813-d849-4ce7-a8c1-73a77375e09c","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=41145","data_source_category":"HTML","path":"data_math/mathisfunforum/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1343c92b-d0f4-4c40-8198-157f081f0835","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=93853","data_source_category":"HTML","path":"data_math/mathisfunforum/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"24ba411a-f833-4b0f-a8c8-0483d4b90a05","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=135237","data_source_category":"HTML","path":"data_math/mathisfunforum/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"396ed06e-4be2-47d4-b825-7e842c3518bd","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=240708","data_source_category":"HTML","path":"data_math/mathisfunforum/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"81e72737-1854-471f-b6cc-7f2ae62ea2af","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=177706","data_source_category":"HTML","path":"data_math/mathisfunforum/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ade252bb-6edb-45dd-befa-be3f21b7c015","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=246066","data_source_category":"HTML","path":"data_math/mathisfunforum/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8c876309-75da-40ab-9e03-4e53edbc39a3","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=223445","data_source_category":"HTML","path":"data_math/mathisfunforum/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11b8177c-818d-49ba-bd2f-3de7d129ff15","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=184741","data_source_category":"HTML","path":"data_math/mathisfunforum/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7a7b01e3-b2c1-45f4-a068-aa3e8363d4cc","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=143623","data_source_category":"HTML","path":"data_math/mathisfunforum/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"72f38409-08a8-4cdc-88aa-f9b5ba347582","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=126295","data_source_category":"HTML","path":"data_math/mathisfunforum/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9a30b0b3-6414-46a1-b653-03e7d94c3ccb","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=157555","data_source_category":"HTML","path":"data_math/mathisfunforum/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ffb4687-f817-495d-a17a-b40b599876bf","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=219818","data_source_category":"HTML","path":"data_math/mathisfunforum/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c5c2f34c-0293-4590-9eb8-7cd89c2785e6","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=237328","data_source_category":"HTML","path":"data_math/mathisfunforum/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4c7dbd5e-2686-458b-8642-86974e55baa7","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=153130","data_source_category":"HTML","path":"data_math/mathisfunforum/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eb7c57ab-8298-4b03-b902-0f1201f56b5f","dataset_name":"eval_pipeline_suit","url":"https://www.mathisfunforum.com/profile.php?id=148558","data_source_category":"HTML","path":"data_math/mathisfunforum/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b1324e9-604a-43a3-a48f-8bc2a992969b","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/community/","data_source_category":"HTML","path":"data_math/physicshelpforum/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"85d4242e-4512-4ac3-bf15-0ab746a16f78","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/waves/","data_source_category":"HTML","path":"data_math/physicshelpforum/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dfa32039-b0f2-427e-9587-85be0460cb48","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/general-physics/","data_source_category":"HTML","path":"data_math/physicshelpforum/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ecfe1e7b-d84d-46b0-a7a0-d35e36debcca","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/theoretical-physics/","data_source_category":"HTML","path":"data_math/physicshelpforum/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4df066fb-2b60-442b-b284-0a4b49563774","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/%D0%92%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0-%D0%BB%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D0%BE%D0%B1%D1%89%D0%B5%D0%B9-%D0%BA%D0%BE%D1%80%D0%BF%D1%83%D1%81%D0%BA%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE-%D0%B2%D0%BE%D0%BB%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9-%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%BA%D0%B8-%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%8E%D1%89%D0%B5%D0%B9-%D0%B2-%D1%81%D0%B5%D0%B1%D1%8F-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E-%D0%B8-%D0%BA%D0%B2%D0%B0%D0%BD%D1%82%D0%BE%D0%B2%D1%83%D1%8E-%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%BA%D1%83.17600/","data_source_category":"HTML","path":"data_math/physicshelpforum/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b168bced-bb46-4d46-9f79-89fa69bb5f24","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/is-my-conclusion-right.17468/","data_source_category":"HTML","path":"data_math/physicshelpforum/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3355b45c-a465-45ff-b077-3df4b1f5e955","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/quantising-gravity.17461/","data_source_category":"HTML","path":"data_math/physicshelpforum/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"860f1d24-0692-44c0-81e3-8c3ba5256ebf","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/can-someone-interpret-this-coffee-cooling-math-for-me.17583/","data_source_category":"HTML","path":"data_math/physicshelpforum/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b8291e0d-fc6c-4cef-bb12-75af470184b2","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/find-the-speed-of-the-molecule.16048/","data_source_category":"HTML","path":"data_math/physicshelpforum/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"87429bed-0f87-4895-98b8-84cb9c9cb270","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/contact/","data_source_category":"HTML","path":"data_math/physicshelpforum/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8828c96-521f-4b88-9745-96d18806232c","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/photon-mapping.17603/","data_source_category":"HTML","path":"data_math/physicshelpforum/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0b6f95ac-e8a7-4a74-8570-28cf06321c9b","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/vacumm-pump-sizing.17559/","data_source_category":"HTML","path":"data_math/physicshelpforum/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7ae42af1-7fb8-4361-9695-6b91e9da5287","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/i-managed-to-calculate-the-gravitational-constant-g-i-would-like-to-ask-someone-to-independently-verify-it-thanks.17587/","data_source_category":"HTML","path":"data_math/physicshelpforum/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c9f2fe07-5fd1-475b-a910-aeb197072767","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/electromagnetism-magnetism-homework-help.17605/","data_source_category":"HTML","path":"data_math/physicshelpforum/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fb5ddcfb-d5a1-4863-bbf8-4c81354d6d32","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/atomic-solid-state-physics/","data_source_category":"HTML","path":"data_math/physicshelpforum/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1f841014-cf34-4bbd-a331-c64096e0f298","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/the-efficiency-of-a-heat-pump.17502/","data_source_category":"HTML","path":"data_math/physicshelpforum/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f1ca309e-1146-44f7-ad64-360622a02d97","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/electricity-magnetism/","data_source_category":"HTML","path":"data_math/physicshelpforum/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5fb69b70-6d34-4c09-9459-f1f903ae75e4","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/a-big-float-inside-the-pascals-hydrostatic-scales-may-lead-to-a-false-perpetuum-mobile.16717/","data_source_category":"HTML","path":"data_math/physicshelpforum/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d34ea4b-0b30-4f0a-8b4b-21027ba82d1a","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/latex-upgrade-physics-forum-powered-by-mathjax-v3.17489/","data_source_category":"HTML","path":"data_math/physicshelpforum/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0ba38565-bcf2-466d-9b0b-fcf2dd9d8f8f","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/horizontal-component-of-the-gravity.17582/","data_source_category":"HTML","path":"data_math/physicshelpforum/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e0b355ea-ff4e-467e-abaa-94640c5ea339","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/misc/style","data_source_category":"HTML","path":"data_math/physicshelpforum/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1effaaf0-f992-4110-a3e0-f93a511ecdcd","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/gravitational-expulsion-of-plasma-antigravity.15650/page-3","data_source_category":"HTML","path":"data_math/physicshelpforum/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f41e18cc-52c6-47dc-a639-0186d01409b8","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/e-mc-2.16662/","data_source_category":"HTML","path":"data_math/physicshelpforum/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"beda0d00-65d8-400f-acb8-e48656fdd38d","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/gravitational-expulsion-of-plasma-antigravity.15650/","data_source_category":"HTML","path":"data_math/physicshelpforum/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83de3699-80ba-408a-9ea6-1e7548ac751e","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/equation.14973/","data_source_category":"HTML","path":"data_math/physicshelpforum/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9085a20b-4447-4edb-8a99-67b88bce182b","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/bernoullis-principle/","data_source_category":"HTML","path":"data_math/physicshelpforum/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7275bf7a-1958-49f3-bf6f-aa4ac1f3497f","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/gravitational-expulsion-of-plasma-antigravity.15650/page-2","data_source_category":"HTML","path":"data_math/physicshelpforum/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8881e4a-b738-4c0f-9b91-da58a0e6497d","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/microtesla-measurement-from-smart-tv.17348/","data_source_category":"HTML","path":"data_math/physicshelpforum/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64676be3-fd8f-4659-91b2-0afb8e8bcbdf","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/coil-around-a-tube-iron-cylinder-inside-tube-how-to-determine-how-many-wire-turns-and-power-required-to-hold-about-500-pounds-on-iron-cylinder.17240/","data_source_category":"HTML","path":"data_math/physicshelpforum/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4b0dd40c-5086-4186-b169-ef7f01c51a24","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/i-need-to-check-my-solution-for-last-year-exam-question-electric-field-for-hemisphere.17549/","data_source_category":"HTML","path":"data_math/physicshelpforum/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0f2413ea-6f66-453e-b207-fa7897ced5b2","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/raman-scattering.10895/","data_source_category":"HTML","path":"data_math/physicshelpforum/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1cb5a05c-14a2-45af-9a39-7044f16c7256","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/","data_source_category":"HTML","path":"data_math/physicshelpforum/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"506dbff8-3d95-425b-9ebc-71b552b06d43","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/potential-energy-of-suspended-mass-expressed-in-kwh.17064/page-2","data_source_category":"HTML","path":"data_math/physicshelpforum/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"37ea64dd-65ee-4ff0-9978-f2e54527c057","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/in-the-double-slit-experiment-how-the-uncertainty-principle-contribute-to-verify-the-complementary-principle.16305/","data_source_category":"HTML","path":"data_math/physicshelpforum/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d2c2ec4e-d65a-4ad2-840e-99c1ded5c301","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/momentum/","data_source_category":"HTML","path":"data_math/physicshelpforum/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ad27ba9f-e5c6-4b57-974b-ee7c5a856f76","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/pendulum/","data_source_category":"HTML","path":"data_math/physicshelpforum/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"71c559b1-28da-4549-9aea-633be452d7dc","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/rate/","data_source_category":"HTML","path":"data_math/physicshelpforum/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dfcbe9a9-4007-4b1c-a014-c8fb59e4749d","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/tension/","data_source_category":"HTML","path":"data_math/physicshelpforum/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1dfae01-69d6-485c-af24-022277274e0a","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/spring/","data_source_category":"HTML","path":"data_math/physicshelpforum/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba010949-be7a-429c-9141-51d846374dc2","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/questions/","data_source_category":"HTML","path":"data_math/physicshelpforum/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"32c569e6-2154-4b4e-8a30-a7cb663c6e35","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/water/","data_source_category":"HTML","path":"data_math/physicshelpforum/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e26185a1-86a8-4ce9-8cf6-8e8c5636e9d2","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/rotational/","data_source_category":"HTML","path":"data_math/physicshelpforum/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d5ab659-e6ba-421b-9215-bac7b244f8ff","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/wave/","data_source_category":"HTML","path":"data_math/physicshelpforum/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7af8958c-7ae4-42dc-b172-a17718d9a0de","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/speed/","data_source_category":"HTML","path":"data_math/physicshelpforum/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c42c13c3-86ff-4bd3-87b2-13e377c9e855","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/problem/","data_source_category":"HTML","path":"data_math/physicshelpforum/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"463b7abc-4bed-4189-b939-dcb85219aef4","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/density/","data_source_category":"HTML","path":"data_math/physicshelpforum/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7115d0d-05b0-4d82-8ff9-2a511370d914","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/ball/","data_source_category":"HTML","path":"data_math/physicshelpforum/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fa019449-8427-4616-b4d9-7fe2bab1cb51","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/searching-for-proper-formula-for-calculating-kinetic-energy.16977/","data_source_category":"HTML","path":"data_math/physicshelpforum/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03130033-4ce1-4f05-8bd6-177e6d4c8446","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/pressure/","data_source_category":"HTML","path":"data_math/physicshelpforum/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4f5d1e02-b1bf-415a-84b7-83368b3efefe","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/how-long-does-it-take-for-light-to-pass-through-a-double-slit-and-hit-a-target-behind.16969/","data_source_category":"HTML","path":"data_math/physicshelpforum/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eb91b670-254c-40cf-b707-97a7b30b1cb0","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/surface-tension-and-dropping-need-help-%C4%B0n-problem.11639/","data_source_category":"HTML","path":"data_math/physicshelpforum/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3a3f7a85-f73a-410b-9578-58dc8f69c71c","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/tension-and-definition-of-elasticity.15479/","data_source_category":"HTML","path":"data_math/physicshelpforum/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e39f6c85-c791-421f-b876-c11e7c679aaa","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/wave/page-2","data_source_category":"HTML","path":"data_math/physicshelpforum/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"252d0c2f-7d62-4137-898d-fe55e657d9f0","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/the-wave-equation.13334/","data_source_category":"HTML","path":"data_math/physicshelpforum/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"920ec2f1-e020-422e-aab7-4c2118106e5e","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/orbital-momentum.13312/","data_source_category":"HTML","path":"data_math/physicshelpforum/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bdd6cad0-9971-4ea1-9bd4-686b5927d9b0","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/free-particle-hits-potential-step-wavelength-of-particle-and-amplitude-of-wave.12225/","data_source_category":"HTML","path":"data_math/physicshelpforum/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1a724ce5-cc1d-47d6-bce7-7f162474a0a6","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/what-to-assume-in-this-problem-of-static-equilibrium.15420/","data_source_category":"HTML","path":"data_math/physicshelpforum/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1917ff6d-8803-42c6-921c-711f970d8d1c","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/statics-problem-help-needed.15232/","data_source_category":"HTML","path":"data_math/physicshelpforum/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2530057b-558c-4b10-8e79-ca3e146ca350","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/how-to-find-tension-given-pulse-equation.11468/","data_source_category":"HTML","path":"data_math/physicshelpforum/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9a77d8ad-1de7-4d60-97be-9f8aceee12e8","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/2-blocks-on-top-of-each-other-exerting-pressure-on-the-ground.14874/","data_source_category":"HTML","path":"data_math/physicshelpforum/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53cb6cd9-8628-446f-adf7-72079324c53a","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/collisions-with-rotations-problems.15905/","data_source_category":"HTML","path":"data_math/physicshelpforum/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"43d307f7-0b34-4433-909c-6ee51d5ae288","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/which-optical-component-spatial-filter-can-achieve-this.11440/","data_source_category":"HTML","path":"data_math/physicshelpforum/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6d0ba9f4-cda2-4f8c-a966-a6c36d0098d1","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/air-plane-pressure.14893/","data_source_category":"HTML","path":"data_math/physicshelpforum/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"21da440a-d103-4dc8-aeca-dc997b77fc94","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/question-related-to-the-delayed-choice-quantum-eraser-experiment.11090/","data_source_category":"HTML","path":"data_math/physicshelpforum/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"316a648a-c47c-4ee5-95b1-852951d283e9","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/question-regarding-transverse-wave-on-a-string.10919/","data_source_category":"HTML","path":"data_math/physicshelpforum/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3c32e041-8955-4b8b-9831-15b7aaab28d4","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/wavelength/","data_source_category":"HTML","path":"data_math/physicshelpforum/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"054ff316-011d-429c-ac90-d19e99b93737","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/assume/","data_source_category":"HTML","path":"data_math/physicshelpforum/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a301ace3-98ec-4d20-8775-d6dfb2c15676","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/potential-step-and-tunneling.16319/","data_source_category":"HTML","path":"data_math/physicshelpforum/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e43f98bd-7734-46e3-b4ca-ffb6daf76a08","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/find-the-height-of-the-cliff-using-speed-of-sound.17169/","data_source_category":"HTML","path":"data_math/physicshelpforum/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"daea8cb1-7c3d-4657-a432-953e3bcfd8e4","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/em-wave-attempt-at-isolating-f-and-b-amplitude.16213/","data_source_category":"HTML","path":"data_math/physicshelpforum/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"466d49e2-efac-4b76-a254-9ef46a77861b","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/the-slope-of-a-normal-force-vs-applied-force-graph.6213/","data_source_category":"HTML","path":"data_math/physicshelpforum/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92dad4ed-bc6f-4440-8a00-d1863c0e0c4e","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/hits/","data_source_category":"HTML","path":"data_math/physicshelpforum/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f58764f-a94f-477a-9178-8db0626129be","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/quantum-eraser/","data_source_category":"HTML","path":"data_math/physicshelpforum/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"90545fd9-2d80-491b-9507-ea846aca43b7","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/delayed-choice/","data_source_category":"HTML","path":"data_math/physicshelpforum/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc7d7a31-162c-4357-b91a-f944cd444ae5","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/delayed/","data_source_category":"HTML","path":"data_math/physicshelpforum/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd8c19a5-9fa3-471a-8670-2f2f269decbe","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/string/","data_source_category":"HTML","path":"data_math/physicshelpforum/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52273063-dfd4-494a-9c9b-355f7dc5c408","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/normal/","data_source_category":"HTML","path":"data_math/physicshelpforum/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed1c9dbf-512b-4660-a95e-b1fc76e78b12","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/applied/","data_source_category":"HTML","path":"data_math/physicshelpforum/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cef8f61f-efe5-49b1-9a7a-f80fc8c2b7ab","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/math/","data_source_category":"HTML","path":"data_math/physicshelpforum/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8f786b8b-237c-4b04-9aa0-a17118d7c27f","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/finding-mass-of-an-object-using-acceleration-kinetic-friction-coefficient-and-applied-force.16671/","data_source_category":"HTML","path":"data_math/physicshelpforum/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54f8603b-25f5-4ab1-959c-3ae67c569f2c","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/slope/","data_source_category":"HTML","path":"data_math/physicshelpforum/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5b2c59a5-ef2b-4a07-be85-ec96715a1b2c","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/velocity-as-it-hits-the-ground.354/","data_source_category":"HTML","path":"data_math/physicshelpforum/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"02923cd1-dd0d-4e6d-bd1c-4fc5ed527234","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/electricity-mechanics-type-question.16574/","data_source_category":"HTML","path":"data_math/physicshelpforum/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e36f4dd5-2b23-4b7d-b0ba-04461f74aaaf","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/graph/","data_source_category":"HTML","path":"data_math/physicshelpforum/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"01817671-d0f1-4496-bc70-6d13ddbcd269","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/sound-waves-and-string-theory.14639/","data_source_category":"HTML","path":"data_math/physicshelpforum/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fac33535-8446-4048-80f0-03b04b04f9ef","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/abou-tension-in-the-string.6148/","data_source_category":"HTML","path":"data_math/physicshelpforum/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66a63586-0730-4b08-b022-6548512c4707","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/stretching-of-string-and-tearing-of-string.13327/","data_source_category":"HTML","path":"data_math/physicshelpforum/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"67dcd5ea-7a82-4a8c-bdba-80951df7a932","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/amplitude-of-string-when-the-string-breaks.10151/","data_source_category":"HTML","path":"data_math/physicshelpforum/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"da6d765f-2a52-41f2-b1aa-74c74c27b9df","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/recommend-me-math-cources-for-physics-major.2590/","data_source_category":"HTML","path":"data_math/physicshelpforum/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9dc4239c-89e9-42fe-8826-0ce2419c990e","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/question-about-force-in-transverse-waves-on-a-string.11194/","data_source_category":"HTML","path":"data_math/physicshelpforum/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bdc57aab-04d6-4e16-b48d-8c9da2ca35e7","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/inclined-slope-b-degrees.892/","data_source_category":"HTML","path":"data_math/physicshelpforum/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c6d3fa07-8b88-4d93-b145-23c37b3af206","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/friction-coefficient-and-slope.11268/","data_source_category":"HTML","path":"data_math/physicshelpforum/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2c0186f5-cd05-4b6a-b377-cea276bc2ee6","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/why-does-touching-a-guitar-string-make-it-sound-different-to-pressing-down-on-it.10917/","data_source_category":"HTML","path":"data_math/physicshelpforum/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"94c3beda-a2e5-4075-a6f9-cc2d447ab192","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/coefficient-of-friction/","data_source_category":"HTML","path":"data_math/physicshelpforum/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"134e2bfd-01a0-4658-b400-b17258a0b2a9","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/motor/","data_source_category":"HTML","path":"data_math/physicshelpforum/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"09938b5d-db24-4903-8453-1d0e28bcf391","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/tags/electricty/","data_source_category":"HTML","path":"data_math/physicshelpforum/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"baaff52a-6e56-4ae4-931d-5dcf73014d07","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/speed-vs-distance-graph.12208/","data_source_category":"HTML","path":"data_math/physicshelpforum/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d7562513-540e-4d92-8514-31ba08599940","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/what-is-the-current-based-on-the-graph.14495/","data_source_category":"HTML","path":"data_math/physicshelpforum/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d37d7df6-3507-45ba-8a39-b611679b78cb","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/simple-momentum-force-v-time-graph.5980/","data_source_category":"HTML","path":"data_math/physicshelpforum/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"35f5c405-4ffd-4419-a668-642c30e541ed","dataset_name":"eval_pipeline_suit","url":"https://physicshelpforum.com/t/what-is-the-true-way-to-determine-time-parameters-from-semilog-graph.15237/","data_source_category":"HTML","path":"data_math/physicshelpforum/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1095bd474bca0f21b00339304ea00a88","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=1&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1095bd474bca0f21b00339304ea00a88","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=1&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1095bd474bca0f21b00339304ea00a88","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=1&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1095bd474bca0f21b00339304ea00a88","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=1&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83746d5250e7689f84a10ab616e161d0","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=O&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83746d5250e7689f84a10ab616e161d0","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=O&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1095bd474bca0f21b00339304ea00a88","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=1&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6b97d7b530408401462a9d1469d662b7","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=0&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a19ada91ab9f8bb52df1fbc94880c9df","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=B&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"190a24adccb0cb8549c725082e4b7398","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=A&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e885ffbd1e2297a1c1c385a52b933072","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=E&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b73472bb9b56065829542a53881a4915","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=%E9%A6%96%E9%A1%B5&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83746d5250e7689f84a10ab616e161d0","dataset_name":"eval_pipeline_suit","url":"https://www.bananaspace.org/w/index.php?title=O&action=edit","data_source_category":"HTML","path":"data_math/bananaspace/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"664077bed678da04554592ec44913b0a","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=30200&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca5192005701fa6f172cfbf71728f1f7","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38963&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5cf73a9952098c08fdee246ca626ea34","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38864&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2d74c63def5b361b5afae5376486429f","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38434&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0a0884e5cacd44b415b52a8f2e2e1de3","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38494&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b7ac6feff3faa6c2de718422bb4cff9a","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39129&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1717652bc344ef78c669d1efd70ac580","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36072&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b6153a53624bfd07c312879a08cde1e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37758&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e3f47ff3a8e66ce425339ef8a0ee024a","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=32743&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce2a94f846f26102a765acfa52fc715c","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38217&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b30edb2861678b26a119b683859ce69b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38595&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c301a61ec522cd591a45a0ac3bda5faf","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38931&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"28d4261d2998ce9d696809b87ac10b8c","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38578&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7cd08220ef15d787f153655531d7a627","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38178&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"add4633384feb0d9f1f84cacb7b6e7bb","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38431&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"923fbc6af8f58cd1557981ec3bd6116e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38567&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"06869dc23bfcbc0cdc46498b85cf4a0e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38204&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a4fd3811e74bc1afa73f6fcb7b19c636","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38499&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60384c614cfa9e21d0c4f5b4ebb78422","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38495&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e703b4a1cc11184da61c41993c80383b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38166&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"afa7ce25ce2cc7b2f4288ecfa3833a5b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38369&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"841bd09fc931a5231201dc1e39361c46","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39131&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f09bfdea460720dd2bb1df5181dd33c3","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38161&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"88566f42a9e8d01c47c185b042151ea8","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38165&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"716f0b4c162c002e34b6cb715d42b4d7","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38357&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5cc2da27f933a2dc48ad34c1242ddc08","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37969&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"09ce40019cf31dd4aced8032cfcf30be","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39128&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"33ee29d36c2ecc5de796a91055d61570","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38140&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0ade593aaf3021e154d8780dbdf2c648","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38164&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"16b7d4caa3cf75d6a5bbfad61ec060f4","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36995&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b178ce0e3d5023e83bded77fd8f8c69e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39127&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"260c888b807dce4bed479b568d7c3f9a","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=365&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"843ff8df0f9794ca59d2b0bd945cee29","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37985&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7776bdf25f247b72fa2ea63a5c70a6da","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36813&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4156c6f346303a9c88df42434dae317b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38058&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"03c02d68013abceb18cb522f779b9591","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37982&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a0e7051c529b13951bfe58288401adb3","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39126&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8ab36657c9eb651c20e79fb4d4b0f1c6","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37950&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1f47204f5d9cc896ab3177ea238d2024","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36894&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"477b876dc646629ca8f59032e0163c02","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38057&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d5c16ba3f0a80ac806f246ed9951ffe","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37586&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5136d4e7e0fea587d479b1348622c427","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=35283&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"166a3423e0fe693752f3729800266dfa","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39125&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"946fb5eb794b0c912c9ec6e3edb86f69","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38016&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f8ca10190caa1973cc5756a7f6ad69bb","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37289&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"70d63f6a4ef9bf6d1fa2018160eb21bf","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38003&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73fbd370f429da9febc2a5eec6a6924e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38112&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4e6effbb580b8df89c32ee16f77ef5a4","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37842&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7bae210069ca7254ca5081103db9f65f","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37647&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0c55f5e2289dbb3add7cb95173235a48","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37296&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e137aaa317685782e9f2604cfb54bab9","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39059&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"076d7c228399e7e6de056e2b36a13aad","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38008&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e5a641fa772890ccb94f978e3b163705","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36795&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"075298b85af251177bfab93985110706","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37965&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b9033cd76f7c6e51bb51b8054b6d268b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37554&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"083da004aebe3b9c83e68998af63f907","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36971&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2dde0919e4fb20f3e11451117dc5b21","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39115&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6858eda0dc07a77ef33fe42844fb41c7","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37949&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1150602926bbe4c638e6d8ba90951071","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37858&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11a25c16b389465778747751c7fd85b7","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36955&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c1c35cd4dc08dc1f62cd05ceb28af29b","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39052&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2c1d4d6a12be69b6cc67b0e3381fa9f8","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37846&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2989ae41d833654681a1b36e405cc820","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36843&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3fc4bf11f5848f986c3c58f0dc92c98f","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=39045&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4b3fb1e15a609486612f9852748437c4","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37785&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"83b1ac4983da3a530f970a4144f48a56","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36751&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"821aeb99efd74d92bdeb214b698a0317","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38993&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bf23ca065c4de370668a3f93e89470a5","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=32806&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9db713ee4a659a1316dd7dbdd2ae6ac0","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38973&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2effa989f41195a5691dfab11d4f40f6","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37757&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"53cc6a77174196b809fc56c1753d44e1","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37744&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d74c71b2190a21ad9bad5519b17faeee","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36801&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"40339570239cd147f2c5fe0074b850b1","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37732&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"aa78b84e68dbca5210677e402922b051","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37746&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"994f0041f9854c6fa4d3b95a999224b3","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38910&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12751bbf01b6dfd8b0542b6753de0cb6","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36798&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"817ae32b66218c8208010ba38600aa77","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37358&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"669a75c39ff1fb0d1c4dc9adfc3f2f2c","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38906&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"82f5c3b6ce7facce488400a38d886f39","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36791&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eceaa3d0e2a45dc3c6bfe9cba5f9eef0","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37603&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d476f93eb4b2fd18885cbab25352d2cb","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37419&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3a28a44ba11cb76e9e1638b53ca1d22c","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36711&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52e07df39bdaf83b4cc5622b351a7209","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37615&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b6a64772e539239d17253a5f444886e5","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38880&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4140774bbbb2028cb6d23f46e4dd9104","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37552&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"974397184b9b167d684d45202479c289","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36740&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"061cac7d894c564da742ee74175a3a2e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37605&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d11cf6bd59520d0f2ce3dc3e1c644d76","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38859&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b30bcf9d0a0335a33c6ea824ba8ef488","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37460&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cff4a452af3bac68c71c05d7cfca6792","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37612&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"697fe7e417e6e5a3ab8ce0af36fa350e","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37477&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"08e204f31a0ea1032e44624a5e04f71f","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36708&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4d9db253a83673eeb5fd6f6109f16e06","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=35733&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"580855e74c8ce67ae1c77bddfd7d87c3","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38833&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"829b0ea1148f603eb1f52b5769829065","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37406&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"41f6976961f8c8f3285061eee64d8ef6","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36663&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6a141a9b8d36f5b61f2bb3e6e919c763","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=37570&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dc5bd60b931c2e878f86fc3e06e0e179","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=38829&extra=page%3D1","data_source_category":"HTML","path":"data_math/mathorg/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf5a7a352a191753977efe1dbeae2150","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=36687&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"99c6f960104d0c6af6a6506231676e00","dataset_name":"eval_pipeline_suit","url":"https://www.mathorg.cn/forum.php?mod=viewthread&tid=29669&extra=page%3D2","data_source_category":"HTML","path":"data_math/mathorg/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd2db78d-8117-5ddc-9f9c-a348258b497b","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/buachuan/p/18385701","data_source_category":"HTML","path":"data_math/cnblogs/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bbc297e-4dfe-5751-8629-10ec69da0b16","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18740749","data_source_category":"HTML","path":"data_math/cnblogs/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"adb08cd5-7e25-52c8-a8b1-9b8e02b4f939","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/vickyqu115/p/18740110","data_source_category":"HTML","path":"data_math/cnblogs/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c943bab1-dc7f-51fb-aacf-92bb27213f80","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18738299","data_source_category":"HTML","path":"data_math/cnblogs/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d3b9f9d-5b39-5f45-8caf-560007adc149","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/goodtimeggb/p/18740673","data_source_category":"HTML","path":"data_math/cnblogs/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e188660-720c-5c46-b5ab-cae0b134a80e","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/sunkaixuan/p/18740748","data_source_category":"HTML","path":"data_math/cnblogs/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fea76b3-eaaa-5a37-919c-18ab217f1289","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/6112562a/p/18735639","data_source_category":"HTML","path":"data_math/cnblogs/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b29f494-e97b-5023-90da-7b769edb10ce","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18737973","data_source_category":"HTML","path":"data_math/cnblogs/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba63f072-ccd9-54db-bbf4-80261d7e2ff9","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18729302","data_source_category":"HTML","path":"data_math/cnblogs/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"501eaca8-b7c4-5ac1-80a3-5c367e956df6","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/YYJJ1/p/18734332","data_source_category":"HTML","path":"data_math/cnblogs/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62508c80-be7a-54d1-8632-31ba6a5d86a3","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18733041","data_source_category":"HTML","path":"data_math/cnblogs/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3799d66-0092-57cc-9590-ef4569232da7","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/tcjiaan/p/18731997","data_source_category":"HTML","path":"data_math/cnblogs/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47157f47-3cff-567a-8005-0d23ccdf0c39","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/cyfj/p/18731911","data_source_category":"HTML","path":"data_math/cnblogs/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15799b4d-1be9-52b6-b48f-c7f1b0b53acc","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/Dr-Harrison-Wells/p/18731013","data_source_category":"HTML","path":"data_math/cnblogs/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b63951db-f977-5532-a6ab-deaf836f40da","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/MrHanBlog/p/18730730","data_source_category":"HTML","path":"data_math/cnblogs/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12a3dfa0-1a05-5861-8d51-390aaa2bfd0a","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/lindexi/p/18730521","data_source_category":"HTML","path":"data_math/cnblogs/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d5ae3f2-4293-5385-af2c-b9fd1f4b8f70","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/moegarn/p/18730512","data_source_category":"HTML","path":"data_math/cnblogs/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f14ed33-53d0-5249-98e7-e643e1f125dd","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18730294","data_source_category":"HTML","path":"data_math/cnblogs/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2da5fc6f-7cc1-55ff-9f06-2d7a71f4d5a0","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18715438","data_source_category":"HTML","path":"data_math/cnblogs/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81bf445-7441-51e8-b463-0d97fe0fb1ea","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/DOMLX/p/18729664","data_source_category":"HTML","path":"data_math/cnblogs/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bbc297e-4dfe-5751-8629-10ec69da0b16","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18740749","data_source_category":"HTML","path":"data_math/cnblogs/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e188660-720c-5c46-b5ab-cae0b134a80e","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/sunkaixuan/p/18740748","data_source_category":"HTML","path":"data_math/cnblogs/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d3b9f9d-5b39-5f45-8caf-560007adc149","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/goodtimeggb/p/18740673","data_source_category":"HTML","path":"data_math/cnblogs/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"adb08cd5-7e25-52c8-a8b1-9b8e02b4f939","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/vickyqu115/p/18740110","data_source_category":"HTML","path":"data_math/cnblogs/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd2db78d-8117-5ddc-9f9c-a348258b497b","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/buachuan/p/18385701","data_source_category":"HTML","path":"data_math/cnblogs/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c943bab1-dc7f-51fb-aacf-92bb27213f80","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18738299","data_source_category":"HTML","path":"data_math/cnblogs/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fea76b3-eaaa-5a37-919c-18ab217f1289","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/6112562a/p/18735639","data_source_category":"HTML","path":"data_math/cnblogs/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b29f494-e97b-5023-90da-7b769edb10ce","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18737973","data_source_category":"HTML","path":"data_math/cnblogs/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba63f072-ccd9-54db-bbf4-80261d7e2ff9","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18729302","data_source_category":"HTML","path":"data_math/cnblogs/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"501eaca8-b7c4-5ac1-80a3-5c367e956df6","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/YYJJ1/p/18734332","data_source_category":"HTML","path":"data_math/cnblogs/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62508c80-be7a-54d1-8632-31ba6a5d86a3","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18733041","data_source_category":"HTML","path":"data_math/cnblogs/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47157f47-3cff-567a-8005-0d23ccdf0c39","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/cyfj/p/18731911","data_source_category":"HTML","path":"data_math/cnblogs/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3799d66-0092-57cc-9590-ef4569232da7","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/tcjiaan/p/18731997","data_source_category":"HTML","path":"data_math/cnblogs/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15799b4d-1be9-52b6-b48f-c7f1b0b53acc","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/Dr-Harrison-Wells/p/18731013","data_source_category":"HTML","path":"data_math/cnblogs/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b63951db-f977-5532-a6ab-deaf836f40da","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/MrHanBlog/p/18730730","data_source_category":"HTML","path":"data_math/cnblogs/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12a3dfa0-1a05-5861-8d51-390aaa2bfd0a","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/lindexi/p/18730521","data_source_category":"HTML","path":"data_math/cnblogs/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d5ae3f2-4293-5385-af2c-b9fd1f4b8f70","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/moegarn/p/18730512","data_source_category":"HTML","path":"data_math/cnblogs/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f14ed33-53d0-5249-98e7-e643e1f125dd","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18730294","data_source_category":"HTML","path":"data_math/cnblogs/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2da5fc6f-7cc1-55ff-9f06-2d7a71f4d5a0","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18715438","data_source_category":"HTML","path":"data_math/cnblogs/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81bf445-7441-51e8-b463-0d97fe0fb1ea","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/DOMLX/p/18729664","data_source_category":"HTML","path":"data_math/cnblogs/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bbc297e-4dfe-5751-8629-10ec69da0b16","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18740749","data_source_category":"HTML","path":"data_math/cnblogs/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e188660-720c-5c46-b5ab-cae0b134a80e","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/sunkaixuan/p/18740748","data_source_category":"HTML","path":"data_math/cnblogs/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d3b9f9d-5b39-5f45-8caf-560007adc149","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/goodtimeggb/p/18740673","data_source_category":"HTML","path":"data_math/cnblogs/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"adb08cd5-7e25-52c8-a8b1-9b8e02b4f939","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/vickyqu115/p/18740110","data_source_category":"HTML","path":"data_math/cnblogs/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd2db78d-8117-5ddc-9f9c-a348258b497b","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/buachuan/p/18385701","data_source_category":"HTML","path":"data_math/cnblogs/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b29f494-e97b-5023-90da-7b769edb10ce","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18737973","data_source_category":"HTML","path":"data_math/cnblogs/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c943bab1-dc7f-51fb-aacf-92bb27213f80","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18738299","data_source_category":"HTML","path":"data_math/cnblogs/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fea76b3-eaaa-5a37-919c-18ab217f1289","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/6112562a/p/18735639","data_source_category":"HTML","path":"data_math/cnblogs/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba63f072-ccd9-54db-bbf4-80261d7e2ff9","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18729302","data_source_category":"HTML","path":"data_math/cnblogs/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"501eaca8-b7c4-5ac1-80a3-5c367e956df6","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/YYJJ1/p/18734332","data_source_category":"HTML","path":"data_math/cnblogs/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62508c80-be7a-54d1-8632-31ba6a5d86a3","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18733041","data_source_category":"HTML","path":"data_math/cnblogs/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47157f47-3cff-567a-8005-0d23ccdf0c39","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/cyfj/p/18731911","data_source_category":"HTML","path":"data_math/cnblogs/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3799d66-0092-57cc-9590-ef4569232da7","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/tcjiaan/p/18731997","data_source_category":"HTML","path":"data_math/cnblogs/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15799b4d-1be9-52b6-b48f-c7f1b0b53acc","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/Dr-Harrison-Wells/p/18731013","data_source_category":"HTML","path":"data_math/cnblogs/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b63951db-f977-5532-a6ab-deaf836f40da","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/MrHanBlog/p/18730730","data_source_category":"HTML","path":"data_math/cnblogs/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12a3dfa0-1a05-5861-8d51-390aaa2bfd0a","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/lindexi/p/18730521","data_source_category":"HTML","path":"data_math/cnblogs/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d5ae3f2-4293-5385-af2c-b9fd1f4b8f70","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/moegarn/p/18730512","data_source_category":"HTML","path":"data_math/cnblogs/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f14ed33-53d0-5249-98e7-e643e1f125dd","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18730294","data_source_category":"HTML","path":"data_math/cnblogs/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2da5fc6f-7cc1-55ff-9f06-2d7a71f4d5a0","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18715438","data_source_category":"HTML","path":"data_math/cnblogs/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81bf445-7441-51e8-b463-0d97fe0fb1ea","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/DOMLX/p/18729664","data_source_category":"HTML","path":"data_math/cnblogs/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bbc297e-4dfe-5751-8629-10ec69da0b16","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18740749","data_source_category":"HTML","path":"data_math/cnblogs/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e188660-720c-5c46-b5ab-cae0b134a80e","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/sunkaixuan/p/18740748","data_source_category":"HTML","path":"data_math/cnblogs/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"adb08cd5-7e25-52c8-a8b1-9b8e02b4f939","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/vickyqu115/p/18740110","data_source_category":"HTML","path":"data_math/cnblogs/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d3b9f9d-5b39-5f45-8caf-560007adc149","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/goodtimeggb/p/18740673","data_source_category":"HTML","path":"data_math/cnblogs/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c943bab1-dc7f-51fb-aacf-92bb27213f80","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18738299","data_source_category":"HTML","path":"data_math/cnblogs/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd2db78d-8117-5ddc-9f9c-a348258b497b","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/buachuan/p/18385701","data_source_category":"HTML","path":"data_math/cnblogs/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b29f494-e97b-5023-90da-7b769edb10ce","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18737973","data_source_category":"HTML","path":"data_math/cnblogs/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fea76b3-eaaa-5a37-919c-18ab217f1289","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/6112562a/p/18735639","data_source_category":"HTML","path":"data_math/cnblogs/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba63f072-ccd9-54db-bbf4-80261d7e2ff9","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18729302","data_source_category":"HTML","path":"data_math/cnblogs/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"501eaca8-b7c4-5ac1-80a3-5c367e956df6","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/YYJJ1/p/18734332","data_source_category":"HTML","path":"data_math/cnblogs/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62508c80-be7a-54d1-8632-31ba6a5d86a3","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18733041","data_source_category":"HTML","path":"data_math/cnblogs/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3799d66-0092-57cc-9590-ef4569232da7","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/tcjiaan/p/18731997","data_source_category":"HTML","path":"data_math/cnblogs/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47157f47-3cff-567a-8005-0d23ccdf0c39","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/cyfj/p/18731911","data_source_category":"HTML","path":"data_math/cnblogs/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15799b4d-1be9-52b6-b48f-c7f1b0b53acc","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/Dr-Harrison-Wells/p/18731013","data_source_category":"HTML","path":"data_math/cnblogs/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12a3dfa0-1a05-5861-8d51-390aaa2bfd0a","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/lindexi/p/18730521","data_source_category":"HTML","path":"data_math/cnblogs/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b63951db-f977-5532-a6ab-deaf836f40da","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/MrHanBlog/p/18730730","data_source_category":"HTML","path":"data_math/cnblogs/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d5ae3f2-4293-5385-af2c-b9fd1f4b8f70","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/moegarn/p/18730512","data_source_category":"HTML","path":"data_math/cnblogs/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f14ed33-53d0-5249-98e7-e643e1f125dd","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18730294","data_source_category":"HTML","path":"data_math/cnblogs/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81bf445-7441-51e8-b463-0d97fe0fb1ea","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/DOMLX/p/18729664","data_source_category":"HTML","path":"data_math/cnblogs/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2da5fc6f-7cc1-55ff-9f06-2d7a71f4d5a0","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18715438","data_source_category":"HTML","path":"data_math/cnblogs/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e188660-720c-5c46-b5ab-cae0b134a80e","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/sunkaixuan/p/18740748","data_source_category":"HTML","path":"data_math/cnblogs/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1bbc297e-4dfe-5751-8629-10ec69da0b16","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18740749","data_source_category":"HTML","path":"data_math/cnblogs/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d3b9f9d-5b39-5f45-8caf-560007adc149","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/goodtimeggb/p/18740673","data_source_category":"HTML","path":"data_math/cnblogs/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"adb08cd5-7e25-52c8-a8b1-9b8e02b4f939","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/vickyqu115/p/18740110","data_source_category":"HTML","path":"data_math/cnblogs/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd2db78d-8117-5ddc-9f9c-a348258b497b","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/buachuan/p/18385701","data_source_category":"HTML","path":"data_math/cnblogs/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c943bab1-dc7f-51fb-aacf-92bb27213f80","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18738299","data_source_category":"HTML","path":"data_math/cnblogs/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b29f494-e97b-5023-90da-7b769edb10ce","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/forges/p/18737973","data_source_category":"HTML","path":"data_math/cnblogs/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2fea76b3-eaaa-5a37-919c-18ab217f1289","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/6112562a/p/18735639","data_source_category":"HTML","path":"data_math/cnblogs/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba63f072-ccd9-54db-bbf4-80261d7e2ff9","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18729302","data_source_category":"HTML","path":"data_math/cnblogs/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"501eaca8-b7c4-5ac1-80a3-5c367e956df6","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/YYJJ1/p/18734332","data_source_category":"HTML","path":"data_math/cnblogs/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b3799d66-0092-57cc-9590-ef4569232da7","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/tcjiaan/p/18731997","data_source_category":"HTML","path":"data_math/cnblogs/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62508c80-be7a-54d1-8632-31ba6a5d86a3","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18733041","data_source_category":"HTML","path":"data_math/cnblogs/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47157f47-3cff-567a-8005-0d23ccdf0c39","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/cyfj/p/18731911","data_source_category":"HTML","path":"data_math/cnblogs/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15799b4d-1be9-52b6-b48f-c7f1b0b53acc","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/Dr-Harrison-Wells/p/18731013","data_source_category":"HTML","path":"data_math/cnblogs/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b63951db-f977-5532-a6ab-deaf836f40da","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/MrHanBlog/p/18730730","data_source_category":"HTML","path":"data_math/cnblogs/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"12a3dfa0-1a05-5861-8d51-390aaa2bfd0a","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/lindexi/p/18730521","data_source_category":"HTML","path":"data_math/cnblogs/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9d5ae3f2-4293-5385-af2c-b9fd1f4b8f70","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/moegarn/p/18730512","data_source_category":"HTML","path":"data_math/cnblogs/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6f14ed33-53d0-5249-98e7-e643e1f125dd","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/chenshibao/p/18730294","data_source_category":"HTML","path":"data_math/cnblogs/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d81bf445-7441-51e8-b463-0d97fe0fb1ea","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/DOMLX/p/18729664","data_source_category":"HTML","path":"data_math/cnblogs/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2da5fc6f-7cc1-55ff-9f06-2d7a71f4d5a0","dataset_name":"eval_pipeline_suit","url":"https://www.cnblogs.com/1312mn/p/18715438","data_source_category":"HTML","path":"data_math/cnblogs/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1efa92c3-27c2-587e-ab0a-f834e1c7a534","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/can-someone-help-me.41493","data_source_category":"HTML","path":"data_math/mathforums/0.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"db0825b9-6fa5-51cc-ba57-9b94cf512d57","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/5x-x-1-x-x-1-4x-1-x-1-x-x-1-answers.41314","data_source_category":"HTML","path":"data_math/mathforums/1.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8614e8c4-c97d-5f5c-9cdf-b03534872b4a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/find-intercept-with-radicals.41257","data_source_category":"HTML","path":"data_math/mathforums/2.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63a667f4-5c09-55ab-a282-16d5539855e3","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/the-cost-price.41218","data_source_category":"HTML","path":"data_math/mathforums/3.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8121cab3-67fb-5496-8aff-5dd4e9c6b374","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/find-their-ages.41220","data_source_category":"HTML","path":"data_math/mathforums/4.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1c6cbb0a-9b33-56aa-a6a0-f91410ca114c","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/graphs-involving-quadratic-equations.41108","data_source_category":"HTML","path":"data_math/mathforums/5.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"97cf8283-5a7a-505e-86c6-10c7855c1223","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/find-the-ratio-of-his-usual-speed-to-his-speed-that-day.40804","data_source_category":"HTML","path":"data_math/mathforums/6.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"047ec002-107a-59ea-aaab-d2d0bc81cf62","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/to-leave-a-film-that-has-4-doors.41117","data_source_category":"HTML","path":"data_math/mathforums/7.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e725c753-dccd-5806-a2e3-d79c614a10de","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/what-fraction-of-the-oil-tanker-will-be-filled-by-4-pipes-in.41071","data_source_category":"HTML","path":"data_math/mathforums/8.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d49f8a52-2309-549e-9ebe-00591ad4ba0a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/repeating-decimals.40901","data_source_category":"HTML","path":"data_math/mathforums/9.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f827dfe3-e2de-5db4-b2bc-0f59eb32d830","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/percentage-equation-logic.31922","data_source_category":"HTML","path":"data_math/mathforums/10.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"27327bd5-d63c-52ea-88e7-2a6e98fba0da","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/how-many-men-and-how-much-paint-does-he-need-to-paint-a-fenc.40865","data_source_category":"HTML","path":"data_math/mathforums/11.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"65ffb7a5-98fb-5335-947e-19483c7cd743","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/equation-problem.40705","data_source_category":"HTML","path":"data_math/mathforums/12.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5be52c21-2c13-57f6-a7f2-ecf5cdaaa897","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/circumference-of-a-circle.38687","data_source_category":"HTML","path":"data_math/mathforums/13.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92cfd780-65cd-5ce4-bfb9-ca332e6fc2e4","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/simplify.40896","data_source_category":"HTML","path":"data_math/mathforums/14.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"05cf87d3-d38c-525b-af6c-352e2e624a56","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/quadratic-equation.40880","data_source_category":"HTML","path":"data_math/mathforums/15.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f2c56a19-9ffa-5803-98c1-f40c7b86c013","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/boltzmann-factor-integers-divide-is-not-inverse-of-multiply.40849","data_source_category":"HTML","path":"data_math/mathforums/16.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ecfc0ba7-f626-5ec6-833b-a6f15169b91a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/arithmetic-reasoning-word-problems.40681","data_source_category":"HTML","path":"data_math/mathforums/17.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1adad4e6-adb3-50f9-9ef6-7e603468df32","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/mathematical-magic.40738","data_source_category":"HTML","path":"data_math/mathforums/18.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"df0f1f0d-8a76-5458-929f-123540d7ff04","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/fractions-problem.40745","data_source_category":"HTML","path":"data_math/mathforums/19.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73c68cb0-2fd9-563e-8774-dcc30f7c1fbd","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/decimal-multiplication.40661","data_source_category":"HTML","path":"data_math/mathforums/20.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7a2e5e15-4f05-5c0b-b4b9-b8bd8779a325","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/tricky-problem-i-need-help-with.40395","data_source_category":"HTML","path":"data_math/mathforums/21.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c84c8dcb-1ae8-506b-95b7-0204f3a5d7c7","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/fractions-and-the-real-line.40656","data_source_category":"HTML","path":"data_math/mathforums/22.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"726b364f-a579-50ae-96eb-a47fafdcb40a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/i-invented-a-new-maths-squaring-formula.40644","data_source_category":"HTML","path":"data_math/mathforums/23.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c7903f0b-116d-59d8-823c-f46c2f79d190","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/complex-fractions.40628","data_source_category":"HTML","path":"data_math/mathforums/24.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"58fa5aba-a1ae-5067-8010-5552af1659f2","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/disrupting-discounts-across-items.40607","data_source_category":"HTML","path":"data_math/mathforums/25.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"328f0cc8-aac9-55c6-b89a-6c878da77c6f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/middle-school-level-word-problems-help-needed-immediately.40600","data_source_category":"HTML","path":"data_math/mathforums/26.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5149d609-e8c9-5c28-84b1-1c03469fb88e","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/from-the-square-of-1.40204","data_source_category":"HTML","path":"data_math/mathforums/27.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"97919dea-8be7-575e-948f-7b07a271ec56","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/middle-elementary-maths-problems.40504","data_source_category":"HTML","path":"data_math/mathforums/28.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7e29e8b9-4571-56c1-bb3e-40f0b61aba5d","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/integer-solutions-to-z%C2%B2-sz-p-0.40533","data_source_category":"HTML","path":"data_math/mathforums/29.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b771434-d2ba-547f-866d-a5f376b25215","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/inequation.40033","data_source_category":"HTML","path":"data_math/mathforums/30.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"52231280-ae48-5382-897e-af9d8ee489e8","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/ratio-type-problem.40479","data_source_category":"HTML","path":"data_math/mathforums/31.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0667c88d-9387-5e5b-90cb-0417e1df18dc","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/rearranging-simultaneous-equations-how.31660","data_source_category":"HTML","path":"data_math/mathforums/32.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b1148660-77ab-5c26-be7b-602cc5cfbb99","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/partial-fractions-question-mind-helping.40007","data_source_category":"HTML","path":"data_math/mathforums/33.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6ef4f429-39fc-5fbd-85f4-7fe058ec9322","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/proving-algebraic-equations.40014","data_source_category":"HTML","path":"data_math/mathforums/34.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0f092906-ee62-5257-bd25-b4415fcd9473","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/speed-word-problem.40013","data_source_category":"HTML","path":"data_math/mathforums/35.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"908c9ae6-f277-5b8d-9f1a-4fd93ce38258","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/in-division-how-do-you-calculate-an-answer-below-zero.40436","data_source_category":"HTML","path":"data_math/mathforums/36.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c478823b-f930-5af9-be81-b740930d7a61","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/approximation-problem.39973","data_source_category":"HTML","path":"data_math/mathforums/37.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15c81f6e-685c-558a-a08c-d17c1d68228f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/can-anyone-sove-these-maths-sums-for-me.39521","data_source_category":"HTML","path":"data_math/mathforums/38.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e0814ca0-7828-5803-8a7d-b4f468da8a03","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/i-need-help-with-two-problems.40289","data_source_category":"HTML","path":"data_math/mathforums/39.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee219c8a-b0ca-5d92-89f3-2c9ea31bfa7e","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/simple-question-about-percentage.40105","data_source_category":"HTML","path":"data_math/mathforums/40.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c2f9f1a-25ca-56cd-8800-5bc84285f240","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/equation-challenge.39976","data_source_category":"HTML","path":"data_math/mathforums/41.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2de70776-92a1-562d-b3d6-1504e8eb4d3f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/regarding-polynomials-tips-tricks.39917","data_source_category":"HTML","path":"data_math/mathforums/42.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"724ed76e-9956-50a0-a65e-c12801a01b41","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/proportions.39891","data_source_category":"HTML","path":"data_math/mathforums/43.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1b30c5c8-711e-5847-970e-28e776ea788f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/fertiliser-percentage-problem.39889","data_source_category":"HTML","path":"data_math/mathforums/44.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ba411f15-c651-5ce4-90f5-05624767113e","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/factorising-polynomials.39840","data_source_category":"HTML","path":"data_math/mathforums/45.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"65346d67-a2ef-51a7-95d5-265b8f9cdb4e","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/a-question.39572","data_source_category":"HTML","path":"data_math/mathforums/46.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"01716250-85d3-5af9-8de2-cfedf054df1b","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/a-dragon.39659","data_source_category":"HTML","path":"data_math/mathforums/47.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"42b62f3c-6a97-520f-9c8b-6a6b12b322ec","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/chicken-and-egg-problem.39593","data_source_category":"HTML","path":"data_math/mathforums/48.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0bdf91e4-480b-5a05-b554-3c747c33ecea","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/please-show-me-the-process-to-solve-these-math-problems.39560","data_source_category":"HTML","path":"data_math/mathforums/49.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d3ff79c5-2b59-5961-af7f-0db74ad1655e","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/puzzle.39547","data_source_category":"HTML","path":"data_math/mathforums/50.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b87b8f26-439d-5e54-8a54-46ac2310ceb5","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/is-0-9-repeater-equal-to-1.39213","data_source_category":"HTML","path":"data_math/mathforums/51.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8089f173-7927-5698-96cb-c9e1b7431e62","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/in-between-rationals.39517","data_source_category":"HTML","path":"data_math/mathforums/52.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92818492-7585-55e8-8a11-1227d26f1181","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/simplify-algebraic-equation-with-fractions.39512","data_source_category":"HTML","path":"data_math/mathforums/53.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9550d41c-7b89-5cd0-a404-628fa6aa576d","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/help-with-an-equation.39453","data_source_category":"HTML","path":"data_math/mathforums/54.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2c35c506-45f9-553e-b669-265c8ba5bc04","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/compound-interest-q1.37339","data_source_category":"HTML","path":"data_math/mathforums/55.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e049da4-a213-5b6f-9c1f-f04ee35a8b25","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/i-need-help-with-these-questions.39345","data_source_category":"HTML","path":"data_math/mathforums/56.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7b6ae008-03a2-5938-a085-4b4d6395141b","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/timetable-problem.39369","data_source_category":"HTML","path":"data_math/mathforums/57.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd73f678-94e7-5ae4-9773-1d4f32e58bca","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/combinations-problem.39349","data_source_category":"HTML","path":"data_math/mathforums/58.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"eef87f0c-b330-5f53-9c7c-fa1757e55d9d","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/how-to-combine-these-inequalities.37335","data_source_category":"HTML","path":"data_math/mathforums/59.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4964f8b5-68de-53cb-a2a1-835a48288807","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/problem.39176","data_source_category":"HTML","path":"data_math/mathforums/60.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3a529360-d273-5a7e-aa0c-24ace28e6b91","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/findin-unknown-main-number-percentage.38717","data_source_category":"HTML","path":"data_math/mathforums/61.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ec04c2ef-0e62-5712-afcf-261b92b5b349","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/logarithmic-linear-equation-need-guidance.39261","data_source_category":"HTML","path":"data_math/mathforums/62.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5264fba8-20bf-5697-aa06-bf5ab599b530","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/word-problem-involving-speed-and-distance.39177","data_source_category":"HTML","path":"data_math/mathforums/63.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e4d5afb-d384-58ae-bcbe-4825de192892","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/question-about-significant-digits-after-decimal-point.39114","data_source_category":"HTML","path":"data_math/mathforums/64.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7d340c92-4e96-508d-a9db-4ce13740c012","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/compound-interest-q3.37341","data_source_category":"HTML","path":"data_math/mathforums/65.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"485f5ec4-0c13-54a0-a20c-52b8ca45f828","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/profit-loss.38985","data_source_category":"HTML","path":"data_math/mathforums/66.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"08bde5d8-559f-5681-bcdd-4f01623c9d50","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/amount-of-sugar-and-butter.39011","data_source_category":"HTML","path":"data_math/mathforums/67.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"695f50ba-d2a0-5242-806a-f9e162b2d579","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/amount.38904","data_source_category":"HTML","path":"data_math/mathforums/68.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80119e23-35e1-50a2-84e3-86466f1329a4","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/ratio.38652","data_source_category":"HTML","path":"data_math/mathforums/69.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9f2383eb-77d2-5da4-8ee2-2e9065d2652f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/negative-value-in-a-percentage.38778","data_source_category":"HTML","path":"data_math/mathforums/70.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3244e851-1c4f-5b1a-ab24-77544af1f0ea","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/finding-an-unknown.38665","data_source_category":"HTML","path":"data_math/mathforums/71.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8bf7415d-69ce-564f-809f-7dfa47360fd3","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/please-help-to-prove-following-equation.38797","data_source_category":"HTML","path":"data_math/mathforums/72.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"467b76af-b0af-5be9-a4ba-6cd0603685cd","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/need-help-with-an-algorithm-for-dividing-money.38510","data_source_category":"HTML","path":"data_math/mathforums/73.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"89bd22d2-5dc9-599a-84ba-b89dd7a64601","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/how-much-to-place-on-a-bet.38581","data_source_category":"HTML","path":"data_math/mathforums/74.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d9908426-cb39-5f7e-a8de-45f1a69f5f88","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/maths-on-ipad.38521","data_source_category":"HTML","path":"data_math/mathforums/75.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"11926a5b-40c9-5d8b-8183-77aea709ed37","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/check-my-math-price-per-unit.38420","data_source_category":"HTML","path":"data_math/mathforums/76.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7c7efa0a-71bb-5171-80dd-d690744f32d4","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/newbie-factorisation.38270","data_source_category":"HTML","path":"data_math/mathforums/77.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"297832f2-a9b9-5b46-ab44-2c1bde6ba0ae","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/basic-word-problem.37936","data_source_category":"HTML","path":"data_math/mathforums/78.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"722a6eeb-3090-56ce-a2a1-881abb068185","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/simplification.38055","data_source_category":"HTML","path":"data_math/mathforums/79.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7b7cffd-d860-5b7c-98f8-516a5629740f","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/calculating-keyword-permutations.37982","data_source_category":"HTML","path":"data_math/mathforums/80.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d0012a5c-da97-5392-bf00-f98cdde2751a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/problem-with-equation.37966","data_source_category":"HTML","path":"data_math/mathforums/81.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"18f33c2c-a7a4-536d-a9bc-480bff949a28","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/please-help-me-while-solving-this-problem.32290","data_source_category":"HTML","path":"data_math/mathforums/82.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6600a090-27c5-5b82-8c98-1c9032d4dbb6","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/inequality-problem.34946","data_source_category":"HTML","path":"data_math/mathforums/83.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3d4c5ffa-9c04-56b5-b19d-aa92e40cfc9a","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/help-reversing-formula.37885","data_source_category":"HTML","path":"data_math/mathforums/84.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8d7d0e14-7c80-5ed0-b736-772ff51fa803","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/inequality-equation.37787","data_source_category":"HTML","path":"data_math/mathforums/85.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"05c7d0cf-8c0e-518c-89a9-52de902d0002","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/cant-solve-a-simple-fraction-need-advise.37792","data_source_category":"HTML","path":"data_math/mathforums/86.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a5d7633-950b-5956-bdab-67ebf9f87e4b","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/help-me-with-this-problem.37791","data_source_category":"HTML","path":"data_math/mathforums/87.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"30bb8c4f-c149-5889-92b1-b27be84188ed","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/multiplication-rewritten-as-a-sum-can-i-rewrite-division.37773","data_source_category":"HTML","path":"data_math/mathforums/88.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1230a7c-bba0-5f08-a9b9-d53d8fda5acd","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/data-interpretation-question.37543","data_source_category":"HTML","path":"data_math/mathforums/89.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4c7dc6e4-4cf9-5bd5-8457-562c928946d1","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/grandfather-father-and-son.37661","data_source_category":"HTML","path":"data_math/mathforums/90.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a8630404-6095-56ed-9245-2979aa757efe","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/problems-on-inequality.37542","data_source_category":"HTML","path":"data_math/mathforums/91.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"82c66602-c630-5ad7-8332-06bdfb0b5421","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/help-converting-1666-to-a-fraction.37540","data_source_category":"HTML","path":"data_math/mathforums/92.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca14527d-eb49-5628-b24f-bc47f8d0ebd9","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/this-just-doesnt-make-sense-to-me.37527","data_source_category":"HTML","path":"data_math/mathforums/93.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9efc7a44-b2e6-5ff5-a7c0-07be606aa1b3","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/multiplication.37389","data_source_category":"HTML","path":"data_math/mathforums/94.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a4ef8f42-b41c-5d04-a6d4-be87d62f3682","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/performace.37428","data_source_category":"HTML","path":"data_math/mathforums/95.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"67de4c1e-c385-528b-84f1-f67667f58532","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/need-help.37401","data_source_category":"HTML","path":"data_math/mathforums/96.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3b219172-ba10-5678-bc28-5b7a62fd6de9","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/addition-of-unlike-fractions.37363","data_source_category":"HTML","path":"data_math/mathforums/97.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f9d42d3-636d-5864-9aa0-20a8947db745","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/compound-interest-q2.37340","data_source_category":"HTML","path":"data_math/mathforums/98.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"77df2876-c68a-5d22-888e-780a97266825","dataset_name":"eval_pipeline_suit","url":"https://mathforums.com/t/compound-interest-q4.37342","data_source_category":"HTML","path":"data_math/mathforums/99.html","file_bytes":1000,"page_layout_type":"forum","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c9aeb0c4-f42d-11ef-8e79-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/648186168","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca276ef5-f42d-11ef-aa54-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/513968284","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca65efac-f42d-11ef-985a-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/264562080","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"caef7eee-f42d-11ef-929a-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/34058435","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cb471de6-f42d-11ef-8a51-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30522098","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cbad19d7-f42d-11ef-a5ac-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/24741687","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc005fe5-f42d-11ef-9c90-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/24086589","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cc879f68-f42d-11ef-8b79-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25037182","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ccef7326-f42d-11ef-9079-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25055735","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd1f3fc0-f42d-11ef-9ba7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25301636","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cd868692-f42d-11ef-9d93-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25360417","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cde07b58-f42d-11ef-99f0-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25579927","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ce566a0e-f42d-11ef-8696-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25676060","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ceb7358f-f42d-11ef-b7f0-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25987067","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf0be13a-f42d-11ef-b3f7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/26471601","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cf60952e-f42d-11ef-899d-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/26758486","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cfa68661-f42d-11ef-b087-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27029239","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d03f8c86-f42d-11ef-a501-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27157514","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d09ee2ef-f42d-11ef-91c9-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27388009","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d112919c-f42d-11ef-bd72-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27488105","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d18144c8-f42d-11ef-9303-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27919958","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d1c7f427-f42d-11ef-83f8-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/28050270","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d21bfa56-f42d-11ef-a290-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/28280560","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d25b025c-f42d-11ef-bff1-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/29125681","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d2b96478-f42d-11ef-9781-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/29769808","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d33020c0-f42d-11ef-b860-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30959033","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d38ab4d7-f42d-11ef-8c50-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30391149","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d3e35fee-f42d-11ef-87ed-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31162892","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d443ae02-f42d-11ef-8b57-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31278469","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d4b79789-f42d-11ef-a071-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31514272","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d51125ee-f42d-11ef-9157-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31821054","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d564cf22-f42d-11ef-bca9-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31868458","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d59a7144-f42d-11ef-8036-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32294980","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d5dd0219-f42d-11ef-92f4-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32413565","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d656e9c0-f42d-11ef-a69a-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32571671","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d6b1002f-f42d-11ef-a14a-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32790706","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d7277830-f42d-11ef-9a23-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32939628","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d7934e4b-f42d-11ef-801c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32974225","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d7f4344b-f42d-11ef-a4ff-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33389507","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d850759d-f42d-11ef-b4e7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33689003","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54b3c882-f42f-11ef-b669-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/36509956","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"550bbbbd-f42f-11ef-b0a5-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/522230646","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"556d3c1a-f42f-11ef-b4e8-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/341866191","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"55c43547-f42f-11ef-978e-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/35807294","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"562da753-f42f-11ef-b79d-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30959033","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56846bf1-f42f-11ef-944b-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/24741687","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56f5e1ec-f42f-11ef-bb4f-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/24086589","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"574c0ac1-f42f-11ef-a2a8-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25037182","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"57a585fb-f42f-11ef-8d2c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25055735","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"57fe1f5e-f42f-11ef-91f2-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25301636","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"585274bd-f42f-11ef-a728-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25360417","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"58a79a11-f42f-11ef-b3b6-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25579927","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"59277ecf-f42f-11ef-9a8d-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25676060","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5988c203-f42f-11ef-85cc-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/25987067","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"59df3c9f-f42f-11ef-ac29-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/26471601","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a366660-f42f-11ef-84c7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/26758486","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5a94cd90-f42f-11ef-b9a1-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27029239","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5af0901c-f42f-11ef-bd93-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27157514","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5b47f4e0-f42f-11ef-bc05-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27388009","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5b99d8cd-f42f-11ef-a3c5-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27488105","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c367dfc-f42f-11ef-bf9c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/27919958","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5c907ec6-f42f-11ef-8970-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/28050270","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5cf7c762-f42f-11ef-81b8-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/28280560","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5d527e32-f42f-11ef-8b82-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/29125681","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5dba67f0-f42f-11ef-b6a3-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/29769808","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e123363-f42f-11ef-b114-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30391149","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5e6da340-f42f-11ef-9821-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31162892","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5ee13030-f42f-11ef-aa81-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/30522098","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f40a77d-f42f-11ef-9f5b-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31278469","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5f9ae2bc-f42f-11ef-8ed1-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31514272","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5fef219b-f42f-11ef-b0d7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31821054","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"605c5037-f42f-11ef-8e09-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/31868458","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60af014b-f42f-11ef-bef8-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32294980","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"610824ac-f42f-11ef-9edb-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32413565","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"615bc0bd-f42f-11ef-a79c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32571671","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"61b4b4ec-f42f-11ef-947f-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32790706","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"624e30f2-f42f-11ef-b554-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32939628","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62a7f457-f42f-11ef-a26f-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/32974225","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"62fcd306-f42f-11ef-921e-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33389507","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6333a546-f42f-11ef-a2a0-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33689003","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63913bde-f42f-11ef-99c7-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33902012","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"63ed60c3-f42f-11ef-970c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/58202717","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6444c2f5-f42f-11ef-969f-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/34058435","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64a1d272-f42f-11ef-b042-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/42361055","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"64f5e2b0-f42f-11ef-ac2e-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/46079282","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6562fd19-f42f-11ef-a062-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/87105169","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"65b7c9f7-f42f-11ef-b0f0-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/106338297","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"662a9749-f42f-11ef-942c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/144758561","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"667e8330-f42f-11ef-879d-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/388399710","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66dcbe2b-f42f-11ef-a700-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/264562080","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"672fd541-f42f-11ef-8b39-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/378283423","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"679df0e8-f42f-11ef-a0c5-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/648186168","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"67f4c3ca-f42f-11ef-9dca-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/513968284","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d88ecc4a-f42d-11ef-a43e-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/35807294","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d8f1644f-f42d-11ef-9b1c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/33902012","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d92f0935-f42d-11ef-99d0-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/58202717","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d97c8d8c-f42d-11ef-b92c-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/42361055","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d9e352f0-f42d-11ef-a983-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/46079282","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"da41a797-f42d-11ef-a647-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/87105169","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"da9879cc-f42d-11ef-92fb-da2ffbbbab99","dataset_name":"eval_pipeline_suit","url":"https://zhuanlan.zhihu.com/p/106338297","data_source_category":"HTML","path":"data_math/zhuanlan.zhihu.com/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a228dfb9-a46e-47fe-8ca9-cd3ed6bc1eb9","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/7084","data_source_category":"HTML","path":"data_math/matrix67/0.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"00d0cd14-2ef4-4a66-80db-bbbc007bca3f","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/7178","data_source_category":"HTML","path":"data_math/matrix67/1.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1e7ed1d5-ad7d-4950-bfd5-260e3b752642","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/7135","data_source_category":"HTML","path":"data_math/matrix67/2.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"b8b93b10-9a83-498a-8500-89c3cdfc8053","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/7132","data_source_category":"HTML","path":"data_math/matrix67/3.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bd82ce69-00df-48ee-a540-44dd29f5d29f","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/7149","data_source_category":"HTML","path":"data_math/matrix67/4.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3f63e55f-5ce4-4fa1-8c1e-3333f16dda81","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/105","data_source_category":"HTML","path":"data_math/matrix67/5.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7eb0ae9c-cc22-47f1-8648-6d6b8b054dd6","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e7%ae%97%e6%b3%95","data_source_category":"HTML","path":"data_math/matrix67/6.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"66cbcfad-dc44-441c-a2ab-c6a17f00ab7b","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%a4%8d%e6%9d%82%e5%ba%a6","data_source_category":"HTML","path":"data_math/matrix67/7.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f7f893d9-a4c8-4d67-8707-10ffc0dec681","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%b8%b8%e6%88%8f","data_source_category":"HTML","path":"data_math/matrix67/8.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"54a16c4b-b9d5-4f71-89bb-2fdfcc0e8035","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e8%b6%a3%e9%a2%98","data_source_category":"HTML","path":"data_math/matrix67/9.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4693ab13-3071-4b09-a819-dfd36bc7a666","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%8d%9a%e5%bc%88","data_source_category":"HTML","path":"data_math/matrix67/10.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ca8d1e56-fe09-4066-a434-acc1caee857a","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e7%bb%84%e5%90%88%e6%95%b0%e5%ad%a6","data_source_category":"HTML","path":"data_math/matrix67/11.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ee828017-90a1-4383-9bf6-cf6cd4e2e9d3","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e4%ba%8c%e8%bf%9b%e5%88%b6","data_source_category":"HTML","path":"data_math/matrix67/12.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"07b95c3a-501a-4045-a913-0c5fc61d450e","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%87%a0%e4%bd%95","data_source_category":"HTML","path":"data_math/matrix67/13.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"fd9abb0d-5470-4d9c-9eeb-cd111bb20f4f","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%83%8a%e5%a5%87%e6%95%b0%e5%ad%a6%e4%ba%8b%e5%ae%9e","data_source_category":"HTML","path":"data_math/matrix67/14.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"bbdd7a39-a28b-4f67-a45a-a7bb609a0e86","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5387","data_source_category":"HTML","path":"data_math/matrix67/15.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5947f313-4221-495b-b2b7-75bd9ec23243","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5342","data_source_category":"HTML","path":"data_math/matrix67/16.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8399d0e8-8b86-4e4e-9689-5930d1777cf7","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5850","data_source_category":"HTML","path":"data_math/matrix67/17.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7ddc4975-167a-425c-a2f0-2b045fae8717","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6896","data_source_category":"HTML","path":"data_math/matrix67/18.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"56422df6-fa1d-46a9-950a-1ae366f3ceb1","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6333","data_source_category":"HTML","path":"data_math/matrix67/19.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ec4bbb61-ced0-4e81-9acd-75ebe1e945c4","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5036","data_source_category":"HTML","path":"data_math/matrix67/20.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"69d850c9-add5-49d8-9d32-44b99153e991","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4361","data_source_category":"HTML","path":"data_math/matrix67/21.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"377cb8e6-2652-45c0-ae71-4c574f956bc7","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5822","data_source_category":"HTML","path":"data_math/matrix67/22.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4bc76dda-8f14-4e84-9606-284bc19a50af","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6513","data_source_category":"HTML","path":"data_math/matrix67/23.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a16d290d-0670-46a8-89c3-3f8a45fd1110","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5941","data_source_category":"HTML","path":"data_math/matrix67/24.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"948ab99c-c158-4209-b56d-94211f465215","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4690","data_source_category":"HTML","path":"data_math/matrix67/25.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d08a743b-71aa-4d25-96fb-6c7a0f4e88d1","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6877","data_source_category":"HTML","path":"data_math/matrix67/26.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2605f0c3-1d3b-4ad1-a408-e0e8b2fde509","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6151","data_source_category":"HTML","path":"data_math/matrix67/27.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"34fd4c8a-dac7-48fc-8005-acc107d4c183","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%8d%8f%e8%ae%ae","data_source_category":"HTML","path":"data_math/matrix67/28.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"75c56a7f-1470-44ae-827e-62f465ec36c2","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e9%80%92%e5%bd%92","data_source_category":"HTML","path":"data_math/matrix67/29.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d086403e-e7ad-493e-b278-6415f6ec327a","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%95%b0%e5%88%97","data_source_category":"HTML","path":"data_math/matrix67/30.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dac333e0-74a2-42ca-943c-3a9655f6f180","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6371","data_source_category":"HTML","path":"data_math/matrix67/31.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"726e1cde-2fa9-443b-99a1-c4f038166e74","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6386","data_source_category":"HTML","path":"data_math/matrix67/32.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"90dc02fa-ab87-4312-97ea-31e9ef4c0bd7","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5100","data_source_category":"HTML","path":"data_math/matrix67/33.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cdbec861-f53a-4522-9f02-1c037db62a06","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4966","data_source_category":"HTML","path":"data_math/matrix67/34.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6a5ec9b1-46d1-4691-9407-7f98162cd796","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%a6%82%e7%8e%87","data_source_category":"HTML","path":"data_math/matrix67/35.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"cef5a5b0-661f-4a6c-b726-4cfea8cfca3b","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/844","data_source_category":"HTML","path":"data_math/matrix67/36.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"60a1f553-7565-4527-ac85-32a81339ef58","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/655","data_source_category":"HTML","path":"data_math/matrix67/37.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"19aa7dc3-ab33-4465-84ef-79fba3306878","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6231","data_source_category":"HTML","path":"data_math/matrix67/38.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8e32c901-de3e-46cd-b217-b8231971eac1","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5881","data_source_category":"HTML","path":"data_math/matrix67/39.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3bb4181d-a93f-444c-b45a-feb637b5f0cc","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6105","data_source_category":"HTML","path":"data_math/matrix67/40.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"85fcf062-a1ce-4d1b-a7c9-30b72b268ddd","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6063","data_source_category":"HTML","path":"data_math/matrix67/41.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"36fdf573-babe-48f6-8d1e-a49f99e9efd7","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6377","data_source_category":"HTML","path":"data_math/matrix67/42.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"23d9851e-fbae-4072-a676-50fed6ea1921","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5424","data_source_category":"HTML","path":"data_math/matrix67/43.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6d2dd905-23cb-4700-a91f-979ca88cc216","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5453","data_source_category":"HTML","path":"data_math/matrix67/44.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c9e2fbec-5604-49e4-890c-c6fa6dd13fc4","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e8%b4%a8%e6%95%b0","data_source_category":"HTML","path":"data_math/matrix67/45.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"057980d0-375a-4f4b-98d2-87b0879de93e","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5409","data_source_category":"HTML","path":"data_math/matrix67/46.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73c97bc2-69c5-48ca-802e-c34cd9f2700a","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/?s=Conway","data_source_category":"HTML","path":"data_math/matrix67/47.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"35621903-5ca7-4c7c-b3aa-c797f5df49f3","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5362","data_source_category":"HTML","path":"data_math/matrix67/48.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"4a685ffa-29aa-45a2-99a1-c217b257e278","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4548","data_source_category":"HTML","path":"data_math/matrix67/49.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a43a1ded-3378-49c8-a56b-ff625af37409","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e9%9a%8f%e6%9c%ba","data_source_category":"HTML","path":"data_math/matrix67/50.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e1c1c083-141c-411d-ba0a-71685fdb2e61","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3638","data_source_category":"HTML","path":"data_math/matrix67/51.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15595d6d-6d97-4857-8161-86ac190a10b9","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4349","data_source_category":"HTML","path":"data_math/matrix67/52.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"206b5446-f7e7-450d-9db2-c92580bfa396","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5165","data_source_category":"HTML","path":"data_math/matrix67/53.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"86c2eae1-5648-457d-b48f-801b97b8a15b","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4429","data_source_category":"HTML","path":"data_math/matrix67/54.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"520dcb8a-1821-46cf-9d7c-6f27559535fa","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5296","data_source_category":"HTML","path":"data_math/matrix67/55.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"04e46857-e970-431c-8f27-c5be81ede84d","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4534","data_source_category":"HTML","path":"data_math/matrix67/56.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"f6654b25-85f8-487e-96d2-d35a18be0ac9","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4238","data_source_category":"HTML","path":"data_math/matrix67/57.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1a0e28f6-6de6-4aca-869f-952953144a46","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3870","data_source_category":"HTML","path":"data_math/matrix67/58.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"14dc6faf-fa53-4719-9dc9-71a193e81bfd","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/5013","data_source_category":"HTML","path":"data_math/matrix67/59.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0d6669df-e1ea-42f8-a4ac-eed13ce67205","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3819","data_source_category":"HTML","path":"data_math/matrix67/60.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"1693b85d-d142-4e9e-bbd3-169d2a81ea56","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/1523","data_source_category":"HTML","path":"data_math/matrix67/61.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"dfd54524-01e3-4ac8-84d2-8091d819cc07","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/2700","data_source_category":"HTML","path":"data_math/matrix67/62.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8c11a3d2-da6c-4590-9282-f243cb246fbd","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3507","data_source_category":"HTML","path":"data_math/matrix67/63.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5bd4f81f-f44c-41f4-ae5a-80c98106e529","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4125","data_source_category":"HTML","path":"data_math/matrix67/64.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"791d031e-3c36-436a-904b-f06c452a8e43","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/1810","data_source_category":"HTML","path":"data_math/matrix67/65.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0af6bc1f-3d9b-40fc-a1ed-871eea386860","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%87%bd%e6%95%b0","data_source_category":"HTML","path":"data_math/matrix67/66.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7addc959-fbbc-40b9-9ef6-55fe13092e79","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3791","data_source_category":"HTML","path":"data_math/matrix67/67.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"939bec29-b524-40a1-964d-d6885ed31f66","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4035","data_source_category":"HTML","path":"data_math/matrix67/68.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8530cbb9-d768-42b7-b6a0-cfbed6f685e0","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/mathematica","data_source_category":"HTML","path":"data_math/matrix67/69.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"410bf4a2-7db9-4e9f-8e47-da1f8679077f","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/504","data_source_category":"HTML","path":"data_math/matrix67/70.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"710d2918-e2bb-4978-bf3c-ad819a63a94b","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4447","data_source_category":"HTML","path":"data_math/matrix67/71.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e118d2de-1641-4df2-89b0-0e2963b342fb","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/6533","data_source_category":"HTML","path":"data_math/matrix67/72.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"47a73abf-04ae-4076-8be5-80e2171ca141","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/1270","data_source_category":"HTML","path":"data_math/matrix67/73.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"73e07a83-0a3a-4037-a2a8-6a4d7fe2a48c","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3682","data_source_category":"HTML","path":"data_math/matrix67/74.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ed77081f-32fb-449e-9013-9e931883bfbf","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/156","data_source_category":"HTML","path":"data_math/matrix67/75.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"ac5bab00-5733-4042-8739-b398a8c229ec","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3422","data_source_category":"HTML","path":"data_math/matrix67/76.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"040a3755-6e07-4a63-ad74-31ab25eb47a8","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/2728","data_source_category":"HTML","path":"data_math/matrix67/77.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"8b122078-2846-47c5-ae54-6f38f696d345","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4139","data_source_category":"HTML","path":"data_math/matrix67/78.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"35247c52-665f-47aa-afde-fb8f6176ed80","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4619","data_source_category":"HTML","path":"data_math/matrix67/79.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"15af6a17-ef5f-4dec-82e9-b9a415d5f65f","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4313","data_source_category":"HTML","path":"data_math/matrix67/80.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"0e895494-8073-40c4-999d-da252c67298e","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4675","data_source_category":"HTML","path":"data_math/matrix67/81.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"6d4c23c8-c598-4bcf-acde-5e3f389f7218","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e8%bd%af%e4%bb%b6%e4%bb%8b%e7%bb%8d","data_source_category":"HTML","path":"data_math/matrix67/82.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"2958d088-2f68-4e41-9503-7b28fcb1822a","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/301","data_source_category":"HTML","path":"data_math/matrix67/83.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e28fbad4-6362-4edc-b972-15ae064af935","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/223","data_source_category":"HTML","path":"data_math/matrix67/84.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"627b32d9-7d63-48c1-98ab-0bd8bc60f7ae","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e5%8e%86%e5%8f%b2","data_source_category":"HTML","path":"data_math/matrix67/85.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"a1d5f8d9-7efb-4f23-a204-04d737be6966","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3035","data_source_category":"HTML","path":"data_math/matrix67/86.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"c8158b12-e978-4a37-a313-0d1d225cabcb","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/135","data_source_category":"HTML","path":"data_math/matrix67/87.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"9b9ea1cc-ae94-4d19-a7c5-d888cd96604b","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e4%b8%89%e7%bb%b4","data_source_category":"HTML","path":"data_math/matrix67/88.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"80ab803a-3e22-46fd-9231-b75e06917e57","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%88%aa%e5%b1%8f","data_source_category":"HTML","path":"data_math/matrix67/89.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"d5de13d8-7877-49d6-b5c7-4e3e8f9dd3e2","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3803","data_source_category":"HTML","path":"data_math/matrix67/90.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"250b381b-b885-496d-a78d-196da56ad2c4","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4152","data_source_category":"HTML","path":"data_math/matrix67/91.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"299b590e-b484-4f62-989b-37dc3c7a80bb","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/4169","data_source_category":"HTML","path":"data_math/matrix67/92.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"7c3a1dfd-5ccd-4c0c-8928-f73524e9afc6","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/tag/%e6%8b%93%e6%89%91%e5%ad%a6","data_source_category":"HTML","path":"data_math/matrix67/93.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"3fca4f88-cbe3-4375-a030-b5731dbb7146","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/2907","data_source_category":"HTML","path":"data_math/matrix67/94.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"e4945521-360b-4188-aa14-cff9745cfb13","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3120","data_source_category":"HTML","path":"data_math/matrix67/95.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"387b5988-9763-48bf-a818-7b80034966c2","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/3314","data_source_category":"HTML","path":"data_math/matrix67/96.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"92312ab7-b078-4fe5-ade2-bcec9412da13","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/2810","data_source_category":"HTML","path":"data_math/matrix67/97.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"5dbc8fc2-f749-49fe-ae95-5d7c850f0c96","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/290","data_source_category":"HTML","path":"data_math/matrix67/98.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} +{"track_id":"31e91039-839d-40c0-9db2-f4cab899bdc2","dataset_name":"eval_pipeline_suit","url":"http://www.matrix67.com/blog/archives/462","data_source_category":"HTML","path":"data_math/matrix67/99.html","file_bytes":1000,"page_layout_type":"article","meta_info":{"input_datetime":"2025-03-17 15:00:00"}} diff --git a/bench/config/ours_config.jsonc b/bench/config/ours_config.jsonc index 2665412e..e602e8bb 100644 --- a/bench/config/ours_config.jsonc +++ b/bench/config/ours_config.jsonc @@ -1,16 +1,15 @@ { - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "eval_pipeline_suit", //数据集名称 - "enable": true, //是否跳过这个数据集 + "dataset_name": "eval_pipeline_suit", + "enable": true, "formatter_pipe": { - "enable": false, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 + "enable": false, + "debug": false, "raw_input_data_path": [ "s3://llm-raw-input/bbc/v001/", "s3://llm-raw-input/cctv/v001/" ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/html/v002/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 + "formatted_raw_input_data_output_path": "s3://llm-raw-output/html/v002/", "formatter": [{ "enable": true, "python_class": "llm_web_kit.pipeline.formatter.html.formatter.HTMLFormatter", @@ -18,29 +17,34 @@ }] }, - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 + "extractor_pipe": { "enable": true, - "validate_input_format": false, //是否校验输入格式,默认是true, 这里设置为false,这样非标准DataJson就可以传入 + "validate_input_format": false, "pre_extractor": [ { "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.pre_extractor.TestHTMLFileFormatFilterPreExtractor", + "python_class": "llm_web_kit.extractor.html.pre_extractor.TestHTMLFileFormatFilterPreExtractor", "class_init_kwargs": { - "html_parent_dir": "tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/" + "html_parent_dir": "bench/" } + }, + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatCleanTagsPreExtractor", + "class_init_kwargs": {} } ], "extractor": [ { "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.extractor.HTMLFileFormatExtractor", + "python_class": "llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor", "class_init_kwargs": {} } ], "post_extractor": [ { "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.post_extractor.ContentListStaticsPostExtractor" + "python_class": "llm_web_kit.extractor.html.post_extractor.ContentListStaticsPostExtractor" } ] }, @@ -52,11 +56,11 @@ "enable": true, "python_class": "llm_web_kit.model.WebChecker", "kwargs": {} - }, //自定义的处理程序 + }, { "enable": true, "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 + } ] } } diff --git a/bench/config/ours_data_config.jsonl b/bench/config/ours_data_config.jsonl deleted file mode 100644 index 58f9daf6..00000000 --- a/bench/config/ours_data_config.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"track_id": "f7b3b1b4-0b1b", "dataset_name": "eval_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"1.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} diff --git a/bench/data/all.json b/bench/data/all.json deleted file mode 100644 index 0ab274f1..00000000 --- a/bench/data/all.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "code_1":{ - "url": "https://stackoverflow.com/questions/18327314/how-to-allow-http-content-within-an-iframe-on-a-https-site", - "origin_filepath":"origin/code_1.html", - "groundtruth_filepath":"groundtruth/code_1.jsonl", - "layout_type": "forum" - }, - "code_2":{ - "url": "https://www.rdocumentation.org/packages/sparklyr/versions/0.8.0/topics/ft_one_hot_encoder", - "origin_filepath":"origin/code_2.html", - "groundtruth_filepath":"groundtruth/code_2.jsonl", - "layout_type": "article" - }, - "code_3":{ - "url": "https://uk.mathworks.com/help/fixedpoint/ug/single-precision-conversion-verification-best-practices.html", - "origin_filepath":"origin/code_3.html", - "groundtruth_filepath":"groundtruth/code_3.jsonl", - "layout_type": "article" - }, - "code_4":{ - "url": "https://www.geeksforgeeks.org/using-ordereddict-python-check-order-characters-string/", - "origin_filepath":"origin/code_4.html", - "groundtruth_filepath":"groundtruth/code_4.jsonl", - "layout_type": "article" - }, - "code_5":{ - "url": "https://source.android.com/reference/tradefed/com/android/tradefed/result/suite/XmlSuiteResultFormatter?hl=zh-cn", - "origin_filepath":"origin/code_5.html", - "groundtruth_filepath":"groundtruth/code_5.jsonl", - "layout_type": "article" - }, - "code_6":{ - "url": "https://supermarket.chef.io/cookbooks/chef-arkserver/versions/0.1.0", - "origin_filepath":"origin/code_6.html", - "groundtruth_filepath":"groundtruth/code_6.jsonl", - "layout_type": "article" - }, - "code_7":{ - "url": "https://www.educba.com/python-exception-handling/?source=leftnav", - "origin_filepath":"origin/code_7.html", - "groundtruth_filepath":"groundtruth/code_7.jsonl", - "layout_type": "article" - }, - "code_8":{ - "url": "https://kodyaz.com/sap-abap/sqlscript-locate-string-function-sample-code.aspx", - "origin_filepath":"origin/code_8.html", - "groundtruth_filepath":"groundtruth/code_8.jsonl", - "layout_type": "article" - }, - "code_9":{ - "url": "https://www.mrexcel.com/board/threads/defining-range-with-set-keyword.642167/", - "origin_filepath":"origin/code_9.html", - "groundtruth_filepath":"groundtruth/code_9.jsonl", - "layout_type": "article" - }, - "code_10":{ - "url": "https://www.php.net/manual/tr/function.preg-grep.php", - "origin_filepath":"origin/code_10.html", - "groundtruth_filepath":"groundtruth/code_10.jsonl", - "layout_type": "article" - }, - "code_11":{ - "url": "https://www.telerik.com/forums/radcombobox-selectedindexchanged-inside-advanced-edit-template", - "origin_filepath":"origin/code_11.html", - "groundtruth_filepath":"groundtruth/code_11.jsonl", - "layout_type": "article" - }, - "code_12":{ - "url": "https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module", - "origin_filepath":"origin/code_12.html", - "groundtruth_filepath":"groundtruth/code_12.jsonl", - "layout_type": "article" - }, - "code_13":{ - "url": "https://learn.microsoft.com/zh-cn/visualstudio/debugger/quickstart-debug-with-cplusplus?view=vs-2022", - "origin_filepath":"origin/code_13.html", - "groundtruth_filepath":"groundtruth/code_13.jsonl", - "layout_type": "article" - }, - "code_14":{ - "url": "https://juejin.cn/post/6844903960826888206", - "origin_filepath":"origin/code_14.html", - "groundtruth_filepath":"groundtruth/code_14.jsonl", - "layout_type": "article" - }, - "code_15":{ - "url": "https://blog.51cto.com/u_15214399/5880761", - "origin_filepath":"origin/code_15.html", - "groundtruth_filepath":"groundtruth/code_15.jsonl", - "layout_type": "article" - }, - "code_16":{ - "url": "https://www.cnblogs.com/xu-tao/p/16324793.html", - "origin_filepath":"origin/code_16.html", - "groundtruth_filepath":"groundtruth/code_16.jsonl", - "layout_type": "article" - }, - "code_17_csdn":{ - "url": "https://blog.csdn.net/moon_sky1999/article/details/52744845", - "origin_filepath":"origin/code_17_csdn.html", - "groundtruth_filepath":"groundtruth/code_17_csdn.jsonl", - "layout_type": "article" - }, - "code_18_csdn":{ - "url": "https://wenku.csdn.net/answer/4e4a79149fc949aa9b2550c138ecce92#buttons", - "origin_filepath":"origin/code_18_csdn.html", - "groundtruth_filepath":"groundtruth/code_18_csdn.jsonl", - "layout_type": "article" - }, - "img_1":{ - "url": "http://15.demooo.pl/produkt/okulary-ochronne/", - "origin_filepath":"origin/img_1.html", - "groundtruth_filepath":"groundtruth/img_1.jsonl", - "layout_type": "article" - }, - "img_2":{ - "url": "https://www.terrasoleil.com/collections/bestsellers/products/luna-soleil-tarot-deck", - "origin_filepath":"origin/img_2.html", - "groundtruth_filepath":"groundtruth/img_2.jsonl", - "layout_type": "article" - }, - "img_3":{ - "url": "https://villarichic.com/collections/dresses/products/dont-hang-up-faux-suede-shirt-dress1?variant=45860191863029", - "origin_filepath":"origin/img_3.html", - "groundtruth_filepath":"groundtruth/img_3.jsonl", - "layout_type": "article" - }, - "img_4":{ - "url": "https://orenburg.shtaketniki.ru/evroshtaketnik-uzkij.html", - "origin_filepath":"origin/img_4.html", - "groundtruth_filepath":"groundtruth/img_4.jsonl", - "layout_type": "article" - }, - "img_5":{ - "url": "https://bukoda.gov.ua/npas/pro-nadannia-zghody-na-podil-zemelnoi-dilianky-derzhavnoi-vlasnosti-chernivetskomu-fakhovomu-koledzhu-tekhnolohii-ta-dyzainu", - "origin_filepath":"origin/img_5.html", - "groundtruth_filepath":"groundtruth/img_5.jsonl", - "layout_type": "article" - }, - "math_katex_latex_1":{ - "url": "https://uniteasy.com/solver/cubicequation/x%5E3%2B2x%5E2%2B8x%2B1%3D0/", - "origin_filepath":"origin/math_katex_latex_1.html", - "groundtruth_filepath":"groundtruth/math_katex_latex_1.jsonl", - "layout_type": "article" - }, - "math_katex_latex_2":{ - "url": "https://github.com/KaTeX/KaTeX/tree/main/contrib/mathtex-script-type", - "origin_filepath":"origin/math_katex_latex_2.html", - "groundtruth_filepath":"groundtruth/math_katex_latex_2.jsonl", - "layout_type": "article" - }, - "math_katex_latex_3":{ - "url": "https://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/3332/1/bc/b/2027/1/", - "origin_filepath":"origin/math_katex_latex_3.html", - "groundtruth_filepath":"groundtruth/math_katex_latex_3.jsonl", - "layout_type": "article" - }, - "math_mathjax_asciimath_1":{ - "url": "https://www.wjagray.co.uk/maths/ASCIIMathTutorial.html", - "origin_filepath":"origin/math_mathjax_asciimath_1.html", - "groundtruth_filepath":"groundtruth/math_mathjax_asciimath_1.jsonl", - "layout_type": "article" - }, - "math_mathjax_latex_1":{ - "url": "https://mathjax.github.io/MathJax-demos-web/tex-chtml.html", - "origin_filepath":"origin/math_mathjax_latex_1.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_1.jsonl", - "layout_type": "article" - }, - "math_mathjax_latex_2":{ - "url": "https://mathjax.github.io/MathJax-demos-web/equation-numbers.html", - "origin_filepath":"origin/math_mathjax_latex_2.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_2.jsonl", - "layout_type": "article" - }, - "math_mathjax_latex_3":{ - "url": "https://physics.stackexchange.com/questions/621479/how-to-interpret-charge-continuity-equation-for-conductors-that-obey-ohms-law", - "origin_filepath":"origin/math_mathjax_latex_3.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_3.jsonl", - "layout_type": "forum" - }, - "math_mathjax_latex_4":{ - "url": "https://math.stackexchange.com/questions/4082284/solving-for-vector-contained-in-a-diagonal-matrix", - "origin_filepath":"origin/math_mathjax_latex_4.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_4.jsonl", - "layout_type": "forum" - }, - "math_mathjax_latex_5":{ - "url": "https://math.stackexchange.com/questions/1561951/integral-over-conditional-pdf", - "origin_filepath":"origin/math_mathjax_latex_5.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_5.jsonl", - "layout_type": "forum" - }, - "math_mathjax_latex_6":{ - "url": "https://mathoverflow.net/questions/62764/a-natural-refinement-of-the-a-n-arrangement-is-to-consider-all-2n-1-hyperpl?rq=1", - "origin_filepath":"origin/math_mathjax_latex_6.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_6.jsonl", - "layout_type": "forum" - }, - "math_mathjax_latex_7":{ - "url": "https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers", - "origin_filepath":"origin/math_mathjax_latex_7.html", - "groundtruth_filepath":"groundtruth/math_mathjax_latex_7.jsonl", - "layout_type": "article" - }, - "math_mathjax_mathml_1":{ - "url": "https://mathjax.github.io/MathJax-demos-web/mml-chtml.html", - "origin_filepath":"origin/math_mathjax_mathml_1.html", - "groundtruth_filepath":"groundtruth/math_mathjax_mathml_1.jsonl", - "layout_type": "article" - }, - "math_none_latex_1":{ - "url": "https://geoenergymath.com/2017/03/04/the-chandler-wobble-challenge/", - "origin_filepath":"origin/math_none_latex_1.html", - "groundtruth_filepath":"groundtruth/math_none_latex_1.jsonl", - "layout_type": "article" - }, - "math_none_mathml_1":{ - "url": "https://en.m.wikipedia.org/wiki/Variance", - "origin_filepath":"origin/math_none_mathml_1.html", - "groundtruth_filepath":"groundtruth/math_none_mathml_1.jsonl", - "layout_type": "article" - }, - "table_1":{ - "url": "https://grondwerken-overzicht.nl/noordwolde/gwy", - "origin_filepath":"origin/table_1.html", - "groundtruth_filepath":"groundtruth/table_1.jsonl", - "layout_type": "article" - }, - "table_2":{ - "url": "https://10bestreviewz.com/automotive/best-underbody-underglow-kits", - "origin_filepath":"origin/table_2.html", - "groundtruth_filepath":"groundtruth/table_2.jsonl", - "layout_type": "article" - }, - "table_3":{ - "url": "https://cavaliers.co.uk/results/judges/Mrs%20S%20Hindle.htm", - "origin_filepath":"origin/table_3.html", - "groundtruth_filepath":"groundtruth/table_3.jsonl", - "layout_type": "article" - }, - "table_4":{ - "url": "https://112sport.hcc.edu.tw/Module/Score/FinalsReport_List.php?LID=203", - "origin_filepath":"origin/table_4.html", - "groundtruth_filepath":"groundtruth/table_4.jsonl", - "layout_type": "article" - } -} diff --git a/bench/data/groundtruth/artical_health_com.jsonl b/bench/data/groundtruth/artical_health_com.jsonl new file mode 100644 index 00000000..d2d976c6 --- /dev/null +++ b/bench/data/groundtruth/artical_health_com.jsonl @@ -0,0 +1 @@ +{"url": "https://www.health.com/fruits-high-in-magnesium-8787394", "content": "​\n", "main_html": "", "content_list": [[{"type": "paragraph", "raw_content": "", "content": [{"c": "​", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAApUlEQVRIie2QsQ2DMBBFXxcWiIEmdQqGYCtaVmAYJJosEZAyQiQmoEuaszghC4wJUgo/6Qrr6/7/Z4hE/oEK+Djm9JCfkgJjaIABGuCyYj6IqQ7xNu9loQOSFf0F5MzftcvcTqsuMar5IG9LvWV+BZ6qWQm81SU3R3NvdPNewgAK5j+elG4cHt7Ns4V+V5e49KDmSwrgwc7myNKW+SFss1PMI5FwvjqQP9IOLcOzAAAAAElFTkSuQmCC", "alt": null, "title": null, "caption": null}}]], "html": "\n\n\n\n\n\n\n\n\n\n\n\n\n11 Fruits That Are High in Magnesium\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n\n\n\n\n\n
Skip to content\n
\n
\n\n
\n
\n
Health
\n\n\n
\n
\n
    \n
  • \n
    \n
    \n
    \n\n\n
    \n\n\n\n\n
    \n
    \n
    \n\n\n\nPlease fill out this field.\n\n
    \n
    \n
  • \n
  • Newsletters\n
  • \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
  • Wellness\n\n\n
  • \n
  • Nutrition\n\n\n
  • \n
  • Eat Well
\n
\n

11 Fruits That Are High in Magnesium

\n
\nBy\n
Jillian Kubala, MS, is a registered dietitian based in Westhampton, NY. Jillian uses a unique and personalized approach to help her clients achieve optimal wellness through nutrition and lifestyle changes. In addition to her private practice, Jillian works as a writer and editor and has written hundreds of articles on nutrition and wellness for top digital health publishers.

\" tabindex=\"0\" data-inline-tooltip=\"true\"> Jillian Kubala, RD\n
\n
\n
\n\n\n
\n
\nJillian Kubala, RD\n
\n

Jillian Kubala, MS, is a registered dietitian based in Westhampton, NY. Jillian uses a unique and personalized approach to help her clients achieve optimal wellness through nutrition and lifestyle changes. In addition to her private practice, Jillian works as a writer and editor and has written hundreds of articles on nutrition and wellness for top digital health publishers.

\n
\n
\n
\nhealth's editorial guidelines\n
\n
\n
\n
Published on February 24, 2025
\n
\n\n\nMedically reviewed by\n
Aviv Joshua, MS, RDN\n
\n
\n
\n\n\n
\n
\n\n\nMedically reviewed by\nAviv Joshua, MS, RDN\n
\nAviv Joshua, MS, RDN, LDN, is a clinical dietitian with over 10 years of experience in healthcare.\n
\n
\n
\nlearn more\n
\n
\n
\n
\n
  • \n\n\n\n\n\n
  • \n
  • \n\n\n\n\n\n
  • \n
  • \n\n\n\n\n\n
  • \n
\n
\n
\n
\n
\n
\n\n\n
\n

Westend61 / Getty Images

\n
\n

Magnesium is a mineral that's needed for important processes such as nerve function, blood pressure and blood sugar regulation, bone health maintenance, and more.\n

\n
\n

Your daily magnesium needs depend on factors like your age and gender. Adult males need 400-420 milligrams of magnesium per day, and adult females require 310-400 milligrams per day.\n

\n
\n

Nearly half of the United States population falls short of their daily magnesium intake needs, which can increase their risk of conditions like heart disease. Eating more magnesium-rich foods, like fruit, can help boost magnesium intake. \n

\n
\n

1. Prickly Pear

\n
\n
\n\n\n
\n

lacaosa / Getty Images

\n
\n

Prickly pear is a plant native to Mexico. It grows oval-shaped fruits that have a sweet, berry-like flavor.\n

\n
\n

Prickly pears are healthy and high in several vitamins, minerals, and healthy plant compounds. These fruits are one of the best sources of magnesium you can eat. \n

\n
\n

A 1-cup serving of raw prickly pear fruit contains 127 milligrams of magnesium, which is 30% of the Daily Value (DV) for magnesium.\n

\n
\n

Prickly pears are also rich in vitamin C and fiber. Vitamin C is essential for immune function, while fiber promotes gut health by supporting regular bowel movements and encouraging the growth of healthy bacteria in your digestive tract. A cup of raw prickly pear provides 23% of your DV for vitamin C and 19.2% for fiber.\n

\n
\n

2. Dried Figs

\n
\n
\n\n\n
\n

Inga Rasmussen / Getty Images

\n
\n

Dried figs are an excellent source of magnesium. One cup provides 101 milligrams, 24% of the DV.\n

\n
\n

In addition to magnesium, figs are high in fiber and other vitamins and minerals, like vitamin B6 and calcium. A cup of dried figs contains 14.6 grams of fiber, which covers over 50% of the DV for fiber.\n

\n
\n

Figs are also packed with polyphenol antioxidants, which protect against cellular damage and regulate inflammation.\n

\n
\n

3. Durian

\n
\n
\n\n\n
\n

Fajrul Islam / Getty Images

\n
\n

Durian is a large tropical fruit native to Southeast Asia. It has a creamy texture and a sweet yet bitter taste. Durian is known for its strong smell—sometimes described as a combination of sulfur and rotten onions.\n

\n
\n

Durian is a good source of fiber and several vitamins and minerals, including vitamin C, potassium, B vitamins, and magnesium. A cup of raw durian contains 72.9 milligrams of magnesium, 17% of the DV.\n

\n
\n

The same serving contains 53% of the DV for vitamin C, which functions as an antioxidant in the body and is required for immune function, collagen synthesis, and neurotransmitter production.\n

\n
\n

4. Passion Fruit

\n
\n
\n\n\n
\n

Sutthiwat Srikhrueadam / Getty Images

\n
\n

Passion fruit is a vining plant native to South America. The plant produces small fruits with hard rinds ranging from green to purple, depending on ripeness. \n

\n
\n

The soft, seed-filled flesh of passion fruit is a good source of several nutrients, including magnesium. A cup of passionfruit contains 68.4 milligrams of magnesium, 16.2% of the DV.\n

\n
\n

It's also a good source of vitamin A, providing 16.7% of the DV. Vitamin A is needed for vision, reproductive health, immune function, and normal growth and development.\n

\n
\n

5. Jackfruit

\n
\n
\n\n\n
\n

Flori Vasilescu / Getty Images

\n
\n

Jackfruit is the fruit of the Artocarpus heterophyllus tree, which is native to India. Jackfruits are the largest edible fruit in the world and can grow up to 110 pounds.\n

\n
\n

A cup of raw jackfruit contains 47 milligrams of magnesium, 11% of the DV.\n

\n
\n

The same serving covers 16% of the DV for potassium. Like magnesium, potassium is necessary for blood pressure regulation. Eating more foods high in potassium and magnesium may help reduce high blood pressure and lower the risk of heart disease.
\n

\n
\n

6. Avocado

\n
\n
\n\n\n
\n

Milan Krasula / Getty Images

\n
\n

Avocados are one of the healthiest fruits you can eat. They are rich in a number of nutrients, including fiber, healthy fats, and minerals like magnesium. A cup of cubed avocado contains 43.5 milligrams of magnesium, 10.35% of the DV.\n

\n
\n

Unlike most other fruits, avocados are low in carbohydrates and high in healthy fats, making them a good option for those on low-carbohydrate diets, like keto diets, and those with diabetes.\n

\n
\n

They're also high in fiber, which promotes healthy blood sugar control by slowing the absorption of sugar into the bloodstream. A cup of cubed avocado provides 35% of the DV for fiber.\n

\n
\n

7. Dried Apricots

\n
\n
\n\n\n
\n

BURCU ATALAY TANKUT / Getty Images

\n
\n

Dried apricots are sweet and chewy, making them an excellent option for those craving a healthy alternative to sweets like candy. \n

\n
\n

A cup of dried apricots provides 41.6 milligrams of magnesium, 9.9% of the DV. They are also packed with other nutrients, such as potassium and iron.\n

\n
\n

The same serving of dried apricots covers 19.2% of the DV for iron, which is needed for oxygen transportation, growth, energy production, hormone synthesis, and neurological development.\n

\n
\n

8. Bananas

\n
\n
\n\n\n
\n

Vera_Petrunina / Getty Images

\n
\n

Bananas are tropical fruits that contain an impressive amount of nutrients. A cup of banana slices contains 40.6 milligrams of magnesium, 9.6% of the DV.\n

\n
\n

Bananas are also high in vitamin B6, a B vitamin needed for metabolism, immune function, neurotransmitter production, and the formation of hemoglobin, the oxygen-carrying part of red blood cells.\n

\n
\n

9. Guava

\n
\n
\n\n\n
\n

RBB / Getty Images

\n
\n

Guava is a tropical fruit with a sweet but tart taste. It's a good source of magnesium, with a cup of guava providing 36.4 milligrams of magnesium, or 8.6% of the DV.\n

\n
\n

Guava stands out from other fruits because it's relatively high in protein, providing 4.21 grams per cup. This fruit is also rich in vitamin C, with the same serving covering over 400% of the DV.
\n

\n
\n

10. Papaya

\n
\n
\n\n\n
\n

Anucha Muphasa / Getty Images

\n
\n

Papayas are large tropical fruits with bright orange, sweet-tasting flesh. Papaya is a good source of vitamins and minerals, including magnesium. A cup of papaya contains 34.6 milligrams of magnesium, 8.2% of the DV.\n

\n
\n

Papayas are also high in folate, vitamin C, and carotenoid antioxidants. They are especially high in lycopene, a carotenoid pigment with powerful heart-protective properties. Research shows that following a diet high in lycopene is an effective way to lower heart disease risk.\n

\n
\n

11. Blackberries

\n
\n
\n\n\n
\n

Iuliia Bondar / Getty Images

\n
\n

A cup of blackberries contains 28.8 milligrams of magnesium, 7% of the DV. They are also high in vitamins C and K and manganese, a mineral involved in immune health, energy metabolism, and nervous system function.\n

\n
\n

Blackberries contain concentrated antioxidants, such as phenolic acids and anthocyanins, which give them powerful anti-inflammatory and cellular protective properties.\n

\n
\n
\n
\n
\n
\n

Other Food Sources of Magnesium

\n

In addition to fruits, magnesium can be found in nuts, vegetables, seeds, and beans.\n

\n
\n

Here are some of the best dietary sources of magnesium:\n

\n
\n
  • Spinach: 156 milligrams (mg) per cooked cup, or 37% of the Daily Value (DV)
  • Pumpkin seeds: 156 mg per ounce, or 37% of the DV
  • Chia seeds: 111 mg per ounce, or 26% of the DV
  • Black beans: 120 mg per cup, or 28% of the DV
  • Edamame: 100 mg per cup, or 24% of the DV
  • Brown rice: 84 mg per cup, or 20% of the DV
  • Almonds: 80 mg per ounce, or 19% of the DV
  • Cashews: 74 mg per ounce, or 18% of the DV
  • Soy milk: 61 mg per cup, or 15% of the DV
  • Yogurt: 42 mg per 8 ounces, or 10% of the DV
  • \n
\n
\n

To ensure you hit your daily magnesium requirements, try consuming a variety of magnesium-rich foods, like greens, beans, nuts, and seeds. \n

\n
\n

A Quick Review

\n

Magnesium is a mineral needed to regulate blood pressure, nerve function, and many other critical body processes. \n

\n
\n

Some fruits, like prickly pear, jackfruit, durian, and blackberries, are high in magnesium. Try incorporating these and other magnesium-rich foods into your diet to help you meet your daily magnesium needs.
\n

\n
\n
Was this page helpful?
\n\n
\n
\n
\n
\n\n\n\nThanks for your feedback!\n\n\n
\n
\n\n
\n
29 Sources\n\n\n\n\n\n
\n
Health.com uses only high-quality sources, including peer-reviewed studies, to support the facts within our articles. Read our editorial process to learn more about how we fact-check and keep our content accurate, reliable, and trustworthy.
\n
    \n
  1. National Institutes of Health: Office of Dietary Supplements. Magnesium.

  2. \n
  3. Rosique-Esteban N, Guasch-Ferré M, Hernández-Alonso P, Salas-Salvadó J. Dietary magnesium and cardiovascular disease: A review with emphasis in epidemiological studies. Nutrients. 2018;10(2):168. doi:10.3390/nu10020168

  4. \n
  5. The University of Arizona Cooperative Extension. Prickly pear cactus: Food of the desert.

  6. \n
  7. Madrigal-Santillán E, Portillo-Reyes J, Madrigal-Bujaidar E, et al. Opuntia spp. In human health: A comprehensive summary on its pharmacological, therapeutic and preventive properties. Part 2. Plants (Basel). 2022;11(18):2333. doi:10.3390/plants11182333

  8. \n
  9. U.S. Department of Agriculture: FoodData Central. Prickly pears, raw.

  10. \n
  11. Akbar A, Shreenath AP. High fiber diet. In: StatPearls. StatPearls Publishing; 2023.

  12. \n
  13. U.S. Department of Agriculture: FoodData Central. Figs, dried, uncooked.

  14. \n
  15. Sandhu AK, Islam M, Edirisinghe I, Burton-Freeman B. Phytochemical composition and health benefits of figs (fresh and dried): A review of literature from 2000 to 2022. Nutrients. 2023;15(11):2623. doi:10.3390/nu15112623

  16. \n
  17. Lee J, Che Hamzah J, Mohd Khialdin S, Naffi AA. Bilateral open globe injury secondary to the king of fruits: Durian fall. Cureus. 15(5):e39153. doi:10.7759/cureus.39153

  18. \n
  19. U.S. Department of Agriculture: FoodData Central. Durian, raw or frozen.

  20. \n
  21. National Institutes of Health: Office of Dietary Supplements. Vitamin C.

  22. \n
  23. U.S. Department of Agriculture: FoodData Central. Passion fruit, raw.

  24. \n
  25. U.S. Department of Agriculture: FoodData Central. Passion-fruit, (granadilla), purple, raw.

  26. \n
  27. National Institutes of Health: Office of Dietary Supplements. Vitamin A.

  28. \n
  29. Ranasinghe RASN, Maduwanthi SDT, Marapana RAUJ. Nutritional and health benefits of jackfruit (Artocarpus heterophyllus Lam.): A review. Int J Food Sci. 2019;2019:4327183. doi:10.1155/2019/4327183

  30. \n
  31. U.S. Department of Agriculture. FoodData Central. Jackfruit, raw.

  32. \n
  33. Han M, Zhang Y, Fang J, et al. Associations between dietary magnesium intake and hypertension, diabetes, and hyperlipidemia. Hypertens Res. 2024;47(2):331-341. doi:10.1038/s41440-023-01439-z

  34. \n
  35. Filippini T, Naska A, Kasdagli MI, et al. Potassium intake and blood pressure: A dose-response meta-analysis of randomized controlled trials. J Am Heart Assoc. 2020;9(12):e015719. doi:10.1161/JAHA.119.015719

  36. \n
  37. U.S. Department of Agriculture: FoodData Central. Avocados, raw, all commercial varieties.

  38. \n
  39. U.S. Department of Agriculture: FoodData Central. Apricots, dried, sulfured, uncooked.

  40. \n
  41. National Institutes of Health: Office of Dietary Supplements. Iron.

  42. \n
  43. U.S. Department of Agriculture: FoodData Central. Bananas, raw.

  44. \n
  45. National Institutes of Health: Office of Dietary Supplements. Vitamin B6.

  46. \n
  47. U.S. Department of Agriculture: FoodData Central. Guava, common, raw.

  48. \n
  49. U.S. Department of Agriculture: FoodData Central. Papaya, raw

  50. \n
  51. Przybylska S, Tokarczyk G. Lycopene in the prevention of cardiovascular diseases. Int J Mol Sci. 2022;23(4):1957. Published 2022 Feb 10. doi:10.3390/ijms23041957

  52. \n
  53. U.S. Department of Agriculture: FoodData Central. Blackberries, raw.

  54. \n
  55. National Institutes of Health: Office of Dietary Supplements. Manganese.

  56. \n
  57. Vahapoglu B, Erskine E, Gultekin Subasi B, Capanoglu E. Recent studies on berry bioactives and their health-promoting roles. Molecules. 2021;27(1):108. doi:10.3390/molecules27010108

  58. \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Related Articles

\n
\n
\n
\n
\n
\nNewsletter Sign Up\n\n
\n
\n
\n
\n\n\n\n\n\n\n\n\n\n\n", "statics": {"paragraph": 1, "paragraph.text": 1, "image": 1}} diff --git a/bench/data/groundtruth/blog_plainspot.jsonl b/bench/data/groundtruth/blog_plainspot.jsonl new file mode 100644 index 00000000..6fd8ddcb --- /dev/null +++ b/bench/data/groundtruth/blog_plainspot.jsonl @@ -0,0 +1 @@ +{"url": "http://plainblogaboutpolitics.blogspot.com/2011/12/acceptable.html?m=1", "content": "asking that very question\n\npointed out\n", "main_html": "
\nSince I've commented quite a bit on polling that as I read it shows Mitt Romney broadly acceptable to most Republican voters, I definitely need to say something about a new poll today that doesn't exactly show that. Gallup got around to actually asking that very question (\"Please tell me if you would find ___ to be an acceptable  nominee for president from the Republican Party, or not\"). The answers mostly showed the weakness of the field, with six of the eight candidates asked about scoring well below 50% acceptable. But the clear most-acceptable candidate is Newt Gingrich, with a 62/34 acceptable/not acceptable ratio, while Romney is only at 54/41.
\n
\nThere are a lot of ways to look at this, but overall it's certainly a piece of evidence that the anti-Romney vote is, well, around 40%. Only a piece of evidence, however. It's not clear how hard these kinds of numbers might be, in either direction. On the positive side, it seems unlikely that Newt would remain over 60% once more Republicans know that he's been lobbying for Freddie Mac, and supported the individual mandate on health insurance, and made a climate change ad with Nancy Pelosi, and all the rest of it. On the other hand, it's certainly possible that the \"unacceptable\" answers are awful soft, for Romney and for everyone else.
\n
\nIn particular, as Greg pointed out, Romney only does three points better on the \"acceptable\" scale with moderate Republicans than does Newt. This isn't the first indication we've had that Romney isn't doing as well with moderate Republicans as one would think he should be. Whether that means he has some room to grow or that he's just not an appealing politician is, I guess, still entirely up in the air at this point.
\n
\nI still overall don't see a low cap on Romney's support, but of course all the evidence counts, and polling in general begins to be a little more important the closer we get to actual voting. I'll be continuing to track anything more we get on this one.\n\n
\n", "content_list": [[{"type": "paragraph", "raw_content": "
asking that very question
", "content": [{"c": "asking that very question", "t": "text"}]}, {"type": "paragraph", "raw_content": "
pointed out
", "content": [{"c": "pointed out", "t": "text"}]}]], "html": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nA plain blog about politics: Acceptable\n\n\n\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n

Monday, December 5, 2011

\n
\n
\n
\n\n\n\n

\nAcceptable\n

\n
\n
\n
\n
\nSince I've commented quite a bit on polling that as I read it shows Mitt Romney broadly acceptable to most Republican voters, I definitely need to say something about a new poll today that doesn't exactly show that. Gallup got around to actually asking that very question (\"Please tell me if you would find ___ to be an acceptable  nominee for president from the Republican Party, or not\"). The answers mostly showed the weakness of the field, with six of the eight candidates asked about scoring well below 50% acceptable. But the clear most-acceptable candidate is Newt Gingrich, with a 62/34 acceptable/not acceptable ratio, while Romney is only at 54/41.
\n
\nThere are a lot of ways to look at this, but overall it's certainly a piece of evidence that the anti-Romney vote is, well, around 40%. Only a piece of evidence, however. It's not clear how hard these kinds of numbers might be, in either direction. On the positive side, it seems unlikely that Newt would remain over 60% once more Republicans know that he's been lobbying for Freddie Mac, and supported the individual mandate on health insurance, and made a climate change ad with Nancy Pelosi, and all the rest of it. On the other hand, it's certainly possible that the \"unacceptable\" answers are awful soft, for Romney and for everyone else.
\n
\nIn particular, as Greg pointed out, Romney only does three points better on the \"acceptable\" scale with moderate Republicans than does Newt. This isn't the first indication we've had that Romney isn't doing as well with moderate Republicans as one would think he should be. Whether that means he has some room to grow or that he's just not an appealing politician is, I guess, still entirely up in the air at this point.
\n
\nI still overall don't see a low cap on Romney's support, but of course all the evidence counts, and polling in general begins to be a little more important the closer we get to actual voting. I'll be continuing to track anything more we get on this one.\n
\n
\n\n
\n
\n\n

14 comments:

\n
\n\n\n
\n
  1. \"\"/

    Kudos for adapting your views a bit as new data comes in. I think you've been a step behind on the Newt thing because your analysis is so thoroughly grounded in political theory, data and historical precedent. Sure, that stuff still matters, but in the 2012 Republican primaries, all bets are off. The GOP and their base went nuts after Obama won, pretending otherwise only weakens your analysis.

    ReplyDelete
  2. \"\"/

    "I still overall don't see a low cap on Romney's support..."

    .

    Well as I say, there's no gettin' through to the terminally perceptive. ;-)

    And you're right, polling does begin to be a little more important the closer we get to actual voting. But there are exceptions to that rule, for candidates who are well known. Unknowns can see late movement, as they become known (Huntsman?). But knowns, a month out from an election, are captive to events and fortune, because everybody already knows who they are. That's why you see Romney panicking the last few days. He's captive to events and fortune, things like NEWT FRICKING GINGRICH stealing his nomination, if you can believe it.

    Willard is a known, and the ABR bloc is at 40% and counting. Heck, that's even bigger than I thought it was.

    ReplyDelete
  3. \"\"/

    Anon 4:41, I don't understand -- Mitt Romney's numbers can't move much because he's so well known to the GOP base, while Gingrich's numbers have shifted by tens and dozens of points (depending on the question)? Romney is so much better known than Newt Gingrich that such widespread openness to reevaluating Gingrich doesn't suggest potential willingness to reevaluate Romney? How could that possibly be the case?

    ReplyDelete
  4. \"\"/

    Of course the numbers are soft, but I would think they are soft more in the sense that once there is a Republican nominee and everyone starts singing from the same hymnal (see Rushbo's rhetorical gymnastics to support nominee McCain), anyone they nominate will eventually be "acceptable" to 80-90% of Republican primary voters.

    This is how Alan Keyes got 27% as a carpet bagging IL Senate candidate when the original nominee was forced out by a sex scandal. Even the most ridiculous campaign by a painfully flawed replacement candidate gets 27% of Republicans. It's an utter floor.

    However, that doesn't happen until there is an actual nominee - and it's during the upcoming primaries where these numbers still matter to some degree. Even still, second place?

    THIS IS EXCELLENT NEWS FOR MITT ROMNEY!

    ReplyDelete
  5. \"\"/

    You'd have to reference my discussion of the other day, but I'll repeat a bit of it here. Gingrich's movement is directly related to the existence of the ABR bloc. The fact that the ABR crowd is circling back around to Gingrich, the guy that they summarily rejected at the commencement of their long slog through the ABR process, is the final proof of the magnitude of the ABR bloc (and I doubt there's anybody but the terminally perceptive who need that final proof, but here it is.).

    These people are coming back around, full circle, to NEWT FRICKING GINGRICH. Anybody who doesn't get the significance of this must be trapped in an impenetrable bubble somewhere.

    Gingrich is one of the events and fortunes that poor Willard has to accept, because he can't move the needle on his own. And Gingrich is just fortunate that Willard is out there. This all has nothing to do with him... he's just like Willard in that way. That's why I'm expecting him to step on a landmine soon, like he does. He thinks he's standing on 3rd because he hit a triple.

    ReplyDelete
  6. \"\"/

    You lefties should really be paying me for this commentary. ;-)

    ReplyDelete
  7. \"\"/

    Who do we make the check out to?

    ReplyDelete
  8. \"\"/

    Did they conduct this poll earlier in the race, when Cain/Bachmann/Perry/Trump/et al were in the lead? If they did, it might give us a clue how useful this metric really is. If, for example, Trump was considered broadly "acceptable" by GOP voters at the time of his surge, that would be evidence that this metric is pretty meaningless.

    ReplyDelete
  9. \"\"/

    Unfortunately, no; it's the first time they've run it this cycle. And I spent some time looking for their 2008 results, but couldn't find them, so either I'm lame with the Google or they didn't do it. Both are possible!

    ReplyDelete
  10. \"\"/

    Jon:

    http://www.gallup.com/poll/23764/nearly-republicans-would-find-mccain-acceptable-nominee.aspx

    http://www.gallup.com/poll/28162/giuliani-would-acceptable-nominee-nearly-republicans.aspx

    ReplyDelete
  11. \"\"/

    Wow. I am officially way lame.

    As far as substance...Romney is about where McCain was. FWIW. And in the earlier one, Newt was 43/52, again FWIW.

    I'll stick with what I said: it's evidence, but it's not anything close to definitive. As usual, the most important thing to remember is that most GOP voters have paid very little attention to the nomination race so far, and there's good reason to believe that their opinions are very soft.

    ReplyDelete
  12. \"\"/

    Yeah, but the McCain one was from mid-2006. Notice that Obama isn't even mentioned, yet several candidates who never entered the race (Condi, Jeb, Newt, Al Gore, etc.) are included in the poll. I'd take a poll from a few weeks before the primary just a tad more seriously than one from eighteen months before.

    (I got to these results simply by typing site:gallup.com "acceptable nominees" into Google. It turned up nine hits, most of them references to the recent poll.)

    ReplyDelete
  13. \"\"/

    Anon 5:39: okay, so it's a more complicated claim: they know Newt and know they don't like him, but he looks very different against just Romney than he does against the whole field. In the former context, he's more than acceptable. Is that right?

    So, that makes sense and is perfectly plausible, but isn't it circular? "We can tell ABR supporters won't change their minds about Romney, because they'll even change their minds about Gingrich rather than support Romney" partially relies on the claim it's trying to prove. This could certainly still be right -- not all circles are vicious -- but I had thought you were making the stronger claim that this provided independent evidence for the hardness of the hard core of ABR.

    So, this goes back to your epistemological critique, which is both broad and deep (it's pretty hard to get out of a self-reinforcing bubble!). Liberals can't correctly interpret the information they're -- we're -- given, so it's pointless to try to reason by offering isolated facts, even in response to purely empirical questions (like this one about the strength of the ABR bloc). Rather, the best strategy is to present a coherent alternative worldview, so that we can see our bubble, and that there's something outside it.

    -- Am I understanding you correctly? If so, that's a very deep puzzle about justification, and probably the best case one could make for gadfly behavior. Hm...

    ReplyDelete
  14. \"\"/

    Not too mucb interested in what you formulate as conclusion, classicist. You can go on ahead with that, alone.

    We have what we have, right in front of our faces. We don't have what we don't have in front of our faces. The only question is, are we paying attention to what we have, and what we don't have, right in front of our faces?

    The terminally perceptive aren't, for sure. ;-)

    ReplyDelete
\n
\n
\n
\n\n

\n

\n

Note: Only a member of this blog may post a comment.

\n\n\n\n\n
\n

\n\n
\n
\n
\n
\n
\n
\n\n\n\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n\n\n", "statics": {"paragraph": 2, "paragraph.text": 2}} diff --git a/bench/data/groundtruth/code_1.jsonl b/bench/data/groundtruth/code_1.jsonl index f3654a22..a430bcde 100644 --- a/bench/data/groundtruth/code_1.jsonl +++ b/bench/data/groundtruth/code_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

", "content": [{"c": "I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

", "content": [{"c": "[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Is there any way to turn this off or any way to get around it?

", "content": [{"c": "Is there any way to turn this off or any way to get around it?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The iframe has no src attribute and the contents are set using:

", "content": [{"c": "The iframe has no", "t": "text"}, {"c": "src", "t": "code-inline"}, {"c": "attribute and the contents are set using:", "t": "text"}]}, {"type": "code", "raw_content": "frame.open();\nframe.write(html);\nframe.close();\n", "inline": false, "content": {"code_content": "frame.open();\nframe.write(html);\nframe.close();", "by": "tag_pre_code"}}]], "main_html": "

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

Is there any way to turn this off or any way to get around it?

The iframe has no src attribute and the contents are set using:

frame.open();\nframe.write(html);\nframe.close();\n", "statics": {"paragraph": 4, "paragraph.text": 5, "paragraph.code-inline": 1, "code": 1}, "url": "https://stackoverflow.com/questions/18327314/how-to-allow-http-content-within-an-iframe-on-a-https-site", "content": "I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:\n\n[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}\n\nIs there any way to turn this off or any way to get around it?\n\nThe iframe has no `src` attribute and the contents are set using:\n\n```\nframe.open();\nframe.write(html);\nframe.close();\n```\n", "html": "\n\n\n\n\n \n\n \n\n html - How to allow http content within an iframe on a https site - Stack Overflow\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n \n \n \n \n\n\n
\n\n\n\n\n\n
\n
\n
\n\n\n
\n Skip to main content\n\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\n\n\n\n\t\t\t
    \n\n\t\t\t\t\t
  1. \n\t\t\t\t\t\tAbout\n\t\t\t\t\t
  2. \n\n\t\t\t\t
  3. \n\t\t\t\t\t\n\t\t\t\t\t\t\tProducts\n\t\t\t\t\t\n\t\t\t\t
  4. \n\n
  5. \n OverflowAI\n
  6. \n\n\t\t\t
\n\t\t\t\n\n\n\t\t \n\n\n\n\n\n\t
\n
\n\n\t\n\n\n\n\n\n
\n\n\n\n
\n\n
\n
\n \n
\n\n\n
\n
\n
\n \n
Collectives\u2122 on Stack Overflow
\n

Find centralized, trusted content and collaborate around the technologies you use most.

\n \n Learn more about Collectives\n \n
\n
\n\n
\n
\n\n
\n

Teams

\n

Q&A for work

\n

Connect and share knowledge within a single location that is structured and easy to search.

\n \n Learn more about Teams\n \n
\n\n
\n \n
\n
\n\n
\n
\n \n

Get early access and see previews of new features.

\n Learn more about Labs\n
\n\n\n\n
\n\n\n\n
\n\n\n\n
\n \n\n
\n\n\n \n
\n
\n Asked\n \n
\n
\n Modified\n 2 years, 5 months ago\n
\n
\n Viewed\n 512k times\n
\n
\n\n\n\n
\n\n
\n \n
\n
\n\t\t
\n
\n\n
\n
\n\n
\n \n \n
\n176
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n\n

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

\n\n
\n

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

\n
\n\n

Is there any way to turn this off or any way to get around it?

\n\n

The iframe has no src attribute and the contents are set using:

\n\n
frame.open();\nframe.write(html);\nframe.close();\n
\n
\n\n
\n \n
\n\n
\n
\n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n
\n
\n \n
\n
\"David
\n
\n
\n David Ortiz\n
\n 99511 gold badge1414 silver badges2222 bronze badges\n
\n
\n
\n
\n
\n
\n
\n
\n asked Aug 20, 2013 at 5:04\n
\n\n
\n
\n
\"georgephillips's
\n
\n
\n georgephillipsgeorgephillips\n
\n 3,56044 gold badges2424 silver badges3030 bronze badges\n
\n
\n
\n\n\n
\n
\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n stackoverflow.com/questions/9280665/…\n\n
    \n– chiliNUT\n
    \n \n Commented\n Aug 20, 2013 at 5:30\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n made an edit. The src is not set as the content is written into the iframe\n\n
    \n– georgephillips\n
    \n \n Commented\n Aug 20, 2013 at 9:36\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n Thanks for all the answers. Long story short is proxy the content.\n\n
    \n– georgephillips\n
    \n \n Commented\n Aug 17, 2014 at 2:50\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @georgephillips would you share the code for proxying the content?\n\n
    \n– Gintas_\n
    \n \n Commented\n May 5, 2017 at 20:30\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n\n
\n\n\n
\n
\n\t\t
\n
\n\n\n
\n \n
\n
\n
\n

\n 10 Answers\n 10\n

\n
\n
\n\n\n
\n
\n \n \n Reset to default\n \n
\n
\n \n
\n
\n\n\n
\n
\n\n
\n\n\n\n\n
\n
\n
\n\n
\n \n \n
\n151
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n
\n\n
\n\n
\n +100\n
\n\n
\n
\n\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n
\n

Note: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an iframe embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.

\n
\n\n

The best solution I created is to simply use google as the ssl proxy...

\n\n
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky\n
\n\n

Tested and works in firefox.

\n\n

Other Methods:

\n\n
    \n
  • Use a Third party such as embed.ly (but it it really only good for well known http APIs).

  • \n
  • Create your own redirect script on an https page you control (a simple javascript redirect on a relative linked page should do the trick. Something like: (you can use any langauge/method)

    \n\n

    https://example.com That has a iframe linking to...

    \n\n

    https://example.com/utilities/redirect.html Which has a simple js redirect script like...

    \n\n

    document.location.href =\"http://thenonsslsite.com\";

  • \n
  • Alternatively, you could add an RSS feed or write some reader/parser to read the http site and display it within your https site.

  • \n
  • You could/should also recommend to the http site owner that they create an ssl connection. If for no other reason than it increases seo.

  • \n
\n\n

Unless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).

\n\n

The real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.

\n\n

Note, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n user149341\n
\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Aug 7, 2014 at 18:27\n
\n\n
\n
\n
\"Matthew
\n
\n
\n Matthew PetersMatthew Peters\n
\n 1,85922 gold badges1414 silver badges1616 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 17\n
\n
\n
    \n\n
  • \n
    \n
    \n 10\n
    \n
    \n
    \n
    \n\n Great answer, thanks. Just to let you know in chrome the JS redirect method does not work just prevents the change (as it does when you try load it normally).\n\n
    \n– georgephillips\n
    \n \n Commented\n Sep 3, 2014 at 1:52\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 10\n
    \n
    \n
    \n
    \n\n The redirect trick seems to work in Firefox only. Chrome still denies loading the insecure content. Are there any other known workarounds?\n\n
    \n– Andreas Gohr\n
    \n \n Commented\n Nov 25, 2014 at 15:07\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 49\n
    \n
    \n
    \n
    \n\n Just wanted to signal out that the "Create your own redirect script on an https page you control" method no longer works with current versions of Chrom(e|ium) and Firefox, even using JS.\n\n
    \n– kako-nawao\n
    \n \n Commented\n Feb 10, 2015 at 15:39\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 18\n
    \n
    \n
    \n
    \n\n This answer is invalid to date, any other solutions\n\n
    \n– Sam Denty\n
    \n \n Commented\n Feb 9, 2017 at 22:15\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 28\n
    \n
    \n
    \n
    \n\n The answer should have an option to be labeled as 'deprecated'. It creates confusion unless you read all the comments.\n\n
    \n– Nitin\n
    \n \n Commented\n May 16, 2017 at 19:44\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n
\n
\n\t\t
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n33
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Based on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:

\n\n
    \n
  • Prepare your proxy server - install IIS, Apache
  • \n
  • Get valid SSL certificate to avoid security errors (free from startssl.com for example)
  • \n
  • Write a wrapper, which will download insecure content (how to below)
  • \n
  • From your site/app get https://yourproxy.com/?page=http://insecurepage.com
  • \n
\n\n

If you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Aug 14, 2014 at 3:09\n
\n\n
\n
\n
\"panpernicek's
\n
\n
\n panpernicekpanpernicek\n
\n 67666 silver badges1111 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 2\n
\n
\n
    \n\n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This will not work, since many pages behind iframe don't want to be embedded in an iframe and thus set X-Frame-Options Header to SAMEORIGIN. Even if you are able to bypass this using the proxy, the page would try to load something like /insecurepage.css and your browser will request yourdomain/insecurepage.css\n\n
    \n– antidote\n
    \n \n Commented\n Jul 25, 2019 at 12:46\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/…\n\n
    \n– Rob10e\n
    \n \n Commented\n Feb 5, 2021 at 16:33\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n32
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

I know this is an old post, but another solution would be to use cURL, for example:

\n\n

redirect.php:

\n\n
<?php\nif (isset($_GET['url'])) {\n    $url = $_GET['url'];\n    $ch = curl_init();\n    $timeout = 5;\n    curl_setopt($ch, CURLOPT_URL, $url);\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);\n    $data = curl_exec($ch);\n    curl_close($ch);\n    echo $data;\n}\n
\n\n

then in your iframe tag, something like:

\n\n
<iframe src=\"/redirect.php?url=http://www.example.com/\"></iframe>\n
\n\n

This is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.

\n\n

The upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.

\n\n

Plus -- I'm a little weary of relying on Javascript redirects for anything important.

\n\n

Cheers!

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered May 19, 2015 at 6:10\n
\n\n
\n
\n
\"David
\n
\n
\n David R.David R.\n
\n 68466 silver badges1313 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n 4\n
    \n
    \n
    \n
    \n\n This is pretty working, but the links inside the site are getting invalid. For example, I have a domain called example.com which has a SSL. I am embedding a iframe with example.net which has no SSL. The example.com has a link like href="/path/file.html" and while clicking it, it is opening as https://example.com/path/file.html instead of http://example.net/path/file.html\n\n
    \n– Sibidharan\n
    \n \n Commented\n Feb 15, 2016 at 15:13\n \n \n \n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n The link cannot be relative if you would like this to work. In other words, specify the full URL within the href. If this is dynamic there are libraries to grab each segment of the URL in Javascript as well as server side.\n\n
    \n– Anthony Mason\n
    \n \n Commented\n Jul 13, 2016 at 19:55\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n css of the target site under iframe is broken . Please check\n\n
    \n– Jeff Bootsholz\n
    \n \n Commented\n Feb 28, 2019 at 9:21\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This way somehow works but css doesnt work at all.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Nov 1, 2023 at 9:04\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n
\n
\n\t\t
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n17
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

add <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> in head

\n
\n

reference: http://thehackernews.com/2015/04/disable-mixed-content-warning.html

\n

browser compatibility: http://caniuse.com/#feat=upgradeinsecurerequests

\n
\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Community's
\n
\n
\n CommunityBot\n
\n 111 silver badge\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Jan 30, 2017 at 18:41\n
\n\n
\n
\n
\"user2523022's
\n
\n
\n user2523022user2523022\n
\n 27522 silver badges55 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 5\n
\n
\n
    \n\n
  • \n
    \n
    \n 37\n
    \n
    \n
    \n
    \n\n This solution doesn't allow you to serve http content on a https site. All this does is force http requests as https requests. If the resource doesn't exist on https you'll just get a 404 error instead.\n\n
    \n– Felix\n
    \n \n Commented\n Feb 20, 2017 at 21:12\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This is actually works at least for my needs.. tested it with firefox and confirmed working. My issue is source URL isn't HTTPS compliance while my own website is using HTTPS.\n\n
    \n– Fernan Vecina\n
    \n \n Commented\n Dec 14, 2017 at 3:41\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Working like charm in chrome Version 76.0.3809.132 (Official Build)\n\n \n \n Commented\n Sep 9, 2019 at 7:10\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution chang http to https and do not add content from http site to https site.\n\n
    \n– Kashif Munir\n
    \n \n Commented\n Jan 31, 2021 at 16:46\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n Not working anymore.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Mar 15, 2022 at 13:13\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n9
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Using Google as the SSL proxy is not working currently,

\n\n

Why?

\n\n

If you opened any page from google, you will find there is a x-frame-options field in the header.\n\"Google

\n\n
\n

The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame>, <iframe> or <object>. Sites can use this to avoid clickjacking attacks, by ensuring\n that their content is not embedded into other sites.

\n
\n\n

(Quote from MDN)

\n\n

One of the solution

\n\n

Below is my work around for this problem:

\n\n

Upload the content to AWS S3, and it will create a https link for the resource.
\nNotice: set the permission to the html file for allowing everyone view it.

\n\n

After that, we can using it as the src of iframe in the https websites.\n\"AWS\"

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"JW.'s
\n
\n
\n JW.\n
\n 2,25111 gold badge2222 silver badges2525 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 2, 2017 at 10:17\n
\n\n
\n
\n
\"David
\n
\n
\n David GuanDavid Guan\n
\n 4,29011 gold badge2626 silver badges3333 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Does this still work? Because I can't seem to get S3 to serve an https link ATM.\n\n
    \n– bobsbeenjamin\n
    \n \n Commented\n Feb 5, 2022 at 0:30\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n7
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

You will always get warnings of blocked content in most browsers when trying to display non secure content on an https page. This is tricky if you want to embed stuff from other sites that aren't behind ssl. You can turn off the warnings or remove the blocking in your own browser but for other visitors it's a problem.

\n\n

One way to do it is to load the content server side and save the images and other things to your server and display them from https.

\n\n

You can also try using a service like embed.ly and get the content through them. They have support for getting the content behind https.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Talha
\n
\n
\n Talha Awan\n
\n 4,61944 gold badges2626 silver badges4040 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Nov 2, 2013 at 21:12\n
\n\n
\n
\n
\"Addeladde's
\n
\n
\n AddeladdeAddeladde\n
\n 78722 gold badges99 silver badges2929 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n if you scrape the content and show it on your site their is Always the risk of cross site scripting. So a god solution is to scrape the content on a separate url and present the data in an iframe from that url with https. In that way you prevent crosssite scripting on your mainsite and session hijacking.\n\n
    \n– Addeladde\n
    \n \n Commented\n May 13, 2014 at 13:41\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

You could try scraping whatever you need with PHP or another server side language, then put the iframe to the scraped content. Here's an example with PHP:

\n\n

scrapedcontent.php:

\n\n
<?php\n$homepage = file_get_contents('http://www.example.com/');\necho $homepage;\n?>\n
\n\n

index.html:

\n\n
<iframe src=\"scrapedcontent.php\"></iframe>\n
\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 24, 2014 at 18:42\n
\n\n
\n
\n
\"Grant's
\n
\n
\n GrantGrant\n
\n 32966 silver badges1414 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n 3\n
    \n
    \n
    \n
    \n\n How will you handle images, included JS and CSS files, hyperlinks, and AJAX requests?\n\n
    \n– dotancohen\n
    \n \n Commented\n May 11, 2014 at 6:54\n \n \n \n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @dotancohen you're right, it isn't a perfect solution, but I think it is the best for this situation. Some sites you won't run into the problems you discussed.\n\n
    \n– Grant\n
    \n \n Commented\n Jun 10, 2014 at 2:57\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This works, but its effectively double loading the content and therefore loading time as your server scrapes and then re-serves the content...\n\n
    \n– ChristoKiwi\n
    \n \n Commented\n Jan 12, 2015 at 0:56\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Doesnt load css from external page.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Nov 1, 2023 at 9:12\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Use your own HTTPS-to-HTTP reverse proxy.

\n\n

If your use case is about a few, rarely changing URLs to embed into the iframe, you can simply set up a reverse proxy for this on your own server and configure it so that one https URL on your server maps to one http URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.

\n\n

If for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n\n
\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Sep 4, 2014 at 17:51\n
\n\n
\n
\n
\"tanius's
\n
\n
\n taniustanius\n
\n 16.7k44 gold badges6060 silver badges6868 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 3\n
\n
\n
    \n\n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n mitmproxy is a debugging tool, not production proxying system. ngrok is tunnelling service, mostly for development servers, I don't understand how it can be useful for this.\n\n
    \n– kolen\n
    \n \n Commented\n Jul 3, 2018 at 15:52\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @kolen It's not about the tools, it's about the idea of using a reverse proxy for this, not mentioned in the other answers yet. Changing to Apache now, which is a much more common way to do a reverse proxy.\n\n
    \n– tanius\n
    \n \n Commented\n Oct 12, 2019 at 18:30\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/…\n\n
    \n– Rob10e\n
    \n \n Commented\n Feb 5, 2021 at 16:31\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n0
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Try to use protocol relative links.

\n

Your link is http://example.com/script.js, use:

\n
<script src="//example.com/script.js" type="text/javascript"></script>\n
\n

In this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.

\n

Seen in: https://developer.mozilla.org/es/docs/Seguridad/MixedContent/arreglar_web_con_contenido_mixto

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Oct 20, 2020 at 11:37\n
\n\n
\n
\n
\"sesperanto's
\n
\n
\n sesperantosesperanto\n
\n 18722 silver badges77 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n 3\n
    \n
    \n
    \n
    \n\n only works if the resource is available as https.\n\n
    \n– dansch\n
    \n \n Commented\n Dec 3, 2020 at 18:35\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n-2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

All you need to do is just use Google as a Proxy server.

\n

https://www.google.ie/gwt/x?u=[YourHttpLink].

\n
<iframe src="https://www.google.ie/gwt/x?u=[Your http link]"></iframe>\n
\n

It worked for me.

\n

Credits:- https://www.wikihow.com/Use-Google-As-a-Proxy

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Subhan's
\n
\n
\n Subhan\n
\n 1,63433 gold badges2727 silver badges5959 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 29, 2020 at 20:20\n
\n\n
\n
\n
\"Star
\n
\n
\n Star TechTricksStar TechTricks\n
\n 3155 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 3\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Where you are trying to use it.\n\n
    \n– Star TechTricks\n
    \n \n Commented\n May 18, 2020 at 4:16\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 2\n
    \n
    \n
    \n
    \n\n Doesn't work for me. And </frame> should be </iframe>.\n\n
    \n– TimTIM Wong\n
    \n \n Commented\n Dec 31, 2021 at 5:21\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n i tried below <iframe src="https://www.google.ie/gwt/x?u=[http://www.mootrack.com/page/share.jsp?mapType=google&token=S1711650600yUyP315023260c762b627b44263e17f998a4272d1c]"></iframe> - it doent work for me\n\n
    \n– Kumaresan Sd\n
    \n \n Commented\n Mar 27, 2024 at 4:33\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n \n
\n \n \n \n

\n Your Answer\n

\n\n\n \n\n\n\n
\n\n\n
\n
\n
\n
\n
\n

Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more

\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n\n \n\n\n\n
\n
Draft saved
\n
Draft discarded
\n
\n\n\n
\n
\n\n
\n \n \n
\n\n
\n\n\n
\n
\n
\n
\n

Sign up or log in

\n \n
\n Sign up using Google\n
\n
\n Sign up using Email and Password\n
\n
\n \n \n \n
\n

Post as a guest

\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n \n

Required, but never shown

\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
\n \n \n\n
\n\n
\n \n \n

\n By clicking \u201cPost Your Answer\u201d, you agree to our terms of service and acknowledge you have read our privacy policy.\n

\n
\n
\n
\n\n\n

\n
\nNot the answer you're looking for? Browse other questions tagged or ask your own question.
\n

\n
\n
\n\n\n
\n\n\n\n \n\n\n
\n
\n\t\t
\n
\n
\n
\n\t\t
\n
\n
\n\n\n\n\n\n \n \n\n\n\n\n\n
\n

\n \n Hot Network Questions\n \n

\n \n\n \n more hot questions\n \n
\n\n \n \n\n
\n\n
\n\n
lang-html
\n\n\n\n\n\n\n\n
\n
\n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

", "content": [{"c": "I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

", "content": [{"c": "[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Is there any way to turn this off or any way to get around it?

", "content": [{"c": "Is there any way to turn this off or any way to get around it?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The iframe has no src attribute and the contents are set using:

", "content": [{"c": "The iframe has no", "t": "text"}, {"c": "src", "t": "code-inline"}, {"c": "attribute and the contents are set using:", "t": "text"}]}, {"type": "code", "raw_content": "frame.open();\nframe.write(html);\nframe.close();\n", "inline": false, "content": {"code_content": "frame.open();\nframe.write(html);\nframe.close();", "by": "tag_pre_code"}}, {"type": "list", "raw_content": "", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "stackoverflow.com/questions/9280665/\u2026", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "chiliNUT", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Aug 20, 2013 at 5:30", "t": "text"}]], [[{"c": "made an edit. The src is not set as the content is written into the iframe", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Aug 20, 2013 at 9:36", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "Thanks for all the answers. Long story short is proxy the content.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Aug 17, 2014 at 2:50", "t": "text"}]], [[{"c": "@georgephillips would you share the code for proxying the content?", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Gintas_", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "May 5, 2017 at 20:30", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

\n 10 Answers\n \n

", "content": {"title_content": "10 Answers", "level": "2"}}, {"type": "paragraph", "raw_content": "

Note: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an iframe embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.

", "content": [{"c": "Note: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an", "t": "text"}, {"c": "iframe", "t": "code-inline"}, {"c": "embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The best solution I created is to simply use google as the ssl proxy...

", "content": [{"c": "The best solution I created is to simply use google as the ssl proxy...", "t": "text"}]}, {"type": "code", "raw_content": "https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky\n", "inline": false, "content": {"code_content": "https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

Tested and works in firefox.

", "content": [{"c": "Tested and works in firefox.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Other Methods:

", "content": [{"c": "Other Methods:", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "Use a Third party such as embed.ly (but it it really only good for well known http APIs).", "t": "text"}]], [[{"c": "Create your own redirect script on an https page you control (a simple javascript redirect on a relative linked page should do the trick. Something like: (you can use any langauge/method)", "t": "text"}, {"c": "https://example.com", "t": "code-inline"}, {"c": " That has a iframe linking to... ", "t": "text"}, {"c": "https://example.com/utilities/redirect.html", "t": "code-inline"}, {"c": " Which has a simple js redirect script like...", "t": "text"}]]], "ordered": false}}, {"type": "code", "raw_content": "document.location.href =\"http://thenonsslsite.com\";", "inline": false, "content": {"code_content": "document.location.href =\"http://thenonsslsite.com\";", "by": "tag_code"}}, {"type": "list", "raw_content": "", "content": {"items": [[], [[{"c": "Alternatively, you could add an RSS feed or write some reader/parser to read the http site and display it within your https site.", "t": "text"}]], [[{"c": "You could/should also recommend to the http site owner that they create an ssl connection. If for no other reason than ", "t": "text"}, {"c": "it increases seo", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

Unless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).

", "content": [{"c": "Unless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.

", "content": [{"c": "The real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Note, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.

", "content": [{"c": "Note, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "10", "t": "text"}, {"c": "Great answer, thanks. Just to let you know in chrome the JS redirect method does not work just prevents the change (as it does when you try load it normally).", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Sep 3, 2014 at 1:52", "t": "text"}]], [[{"c": "10", "t": "text"}, {"c": "The redirect trick seems to work in Firefox only. Chrome still denies loading the insecure content. Are there any other known workarounds?", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Nov 25, 2014 at 15:07", "t": "text"}]], [[{"c": "49", "t": "text"}, {"c": "Just wanted to signal out that the \"Create your own redirect script on an https page you control\" method no longer works with current versions of Chrom(e|ium) and Firefox, even using JS.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "kako-nawao", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 10, 2015 at 15:39", "t": "text"}]], [[{"c": "18", "t": "text"}, {"c": "This answer is invalid to date, any other solutions", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 9, 2017 at 22:15", "t": "text"}]], [[{"c": "28", "t": "text"}, {"c": "The answer should have an option to be labeled as 'deprecated'. It creates confusion unless you read all the comments.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Nitin", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "May 16, 2017 at 19:44", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "
\n33
", "content": [{"c": "33", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Based on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:

", "content": [{"c": "Based on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "Prepare your proxy server - install IIS, Apache", "t": "text"}]], [[{"c": "Get valid SSL certificate to avoid security errors (free from startssl.com for example)", "t": "text"}]], [[{"c": "Write a wrapper, which will download insecure content (how to below)", "t": "text"}]], [[{"c": "From your site/app get ", "t": "text"}, {"c": "https://yourproxy.com/?page=http://insecurepage.com", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

If you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php

", "content": [{"c": "If you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "1", "t": "text"}, {"c": "This will not work, since many pages behind iframe don't want to be embedded in an iframe and thus set X-Frame-Options Header to SAMEORIGIN. Even if you are able to bypass this using the proxy, the page would try to load something like /insecurepage.css and your browser will request ", "t": "text"}, {"c": "yourdomain/insecurepage.css", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "antidote", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jul 25, 2019 at 12:46", "t": "text"}]], [[{"c": "This solution worked perfectly for me. Found directions for IIS here: ", "t": "text"}, {"c": "techcommunity.microsoft.com/t5/iis-support-blog/\u2026", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Rob10e", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 5, 2021 at 16:33", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

I know this is an old post, but another solution would be to use cURL, for example:

", "content": [{"c": "I know this is an old post, but another solution would be to use cURL, for example:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

redirect.php:

", "content": [{"c": "redirect.php:", "t": "text"}]}, {"type": "code", "raw_content": "<?php\nif (isset($_GET['url'])) {\n $url = $_GET['url'];\n $ch = curl_init();\n $timeout = 5;\n curl_setopt($ch, CURLOPT_URL, $url);\n curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);\n $data = curl_exec($ch);\n curl_close($ch);\n echo $data;\n}\n", "inline": false, "content": {"code_content": "

then in your iframe tag, something like:

", "content": [{"c": "then in your iframe tag, something like:", "t": "text"}]}, {"type": "code", "raw_content": "<iframe src=\"/redirect.php?url=http://www.example.com/\"></iframe>\n", "inline": false, "content": {"code_content": "", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

This is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.

", "content": [{"c": "This is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.

", "content": [{"c": "The upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Plus -- I'm a little weary of relying on Javascript redirects for anything important.

", "content": [{"c": "Plus -- I'm a little weary of relying on Javascript redirects for anything important.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Cheers!

", "content": [{"c": "Cheers!", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "4", "t": "text"}, {"c": "This is pretty working, but the links inside the site are getting invalid. For example, I have a domain called ", "t": "text"}, {"c": "example.com", "t": "code-inline"}, {"c": " which has a SSL. I am embedding a iframe with ", "t": "text"}, {"c": "example.net", "t": "code-inline"}, {"c": " which has no SSL. The ", "t": "text"}, {"c": "example.com", "t": "code-inline"}, {"c": " has a link like ", "t": "text"}, {"c": "href=\"/path/file.html\"", "t": "code-inline"}, {"c": " and while clicking it, it is opening as ", "t": "text"}, {"c": "https://example.com/path/file.html", "t": "code-inline"}, {"c": " instead of ", "t": "text"}, {"c": "http://example.net/path/file.html", "t": "code-inline"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Sibidharan", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 15, 2016 at 15:13", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "The link cannot be relative if you would like this to work. In other words, specify the full URL within the href. If this is dynamic there are libraries to grab each segment of the URL in Javascript as well as server side.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jul 13, 2016 at 19:55", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "css of the target site under iframe is broken . Please check", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 28, 2019 at 9:21", "t": "text"}]], [[{"c": "This way somehow works but css doesnt work at all.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Nov 1, 2023 at 9:04", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

add <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\"> in head

", "content": [{"c": "add", "t": "text"}, {"c": "", "t": "code-inline"}, {"c": "in head", "t": "text"}]}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "reference: http://thehackernews.com/2015/04/disable-mixed-content-warning.html", "t": "text"}]}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "browser compatibility: http://caniuse.com/#feat=upgradeinsecurerequests", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "37", "t": "text"}, {"c": "This solution doesn't allow you to serve http content on a https site. All this does is force http requests as https requests. If the resource doesn't exist on https you'll just get a 404 error instead.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Felix", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 20, 2017 at 21:12", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "This is actually works at least for my needs.. tested it with firefox and confirmed working. My issue is source URL isn't HTTPS compliance while my own website is using HTTPS.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 14, 2017 at 3:41", "t": "text"}]], [[{"c": "Working like charm in chrome Version 76.0.3809.132 (Official Build)", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Sep 9, 2019 at 7:10", "t": "text"}]], [[{"c": "This solution chang http to https and do not add content from http site to https site.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jan 31, 2021 at 16:46", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "Not working anymore.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 15, 2022 at 13:13", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

Using Google as the SSL proxy is not working currently,

", "content": [{"c": "Using Google as the SSL proxy is not working currently,", "t": "text"}]}, {"type": "title", "raw_content": "

Why?

", "content": {"title_content": "Why?", "level": "3"}}, {"type": "paragraph", "raw_content": "

If you opened any page from google, you will find there is a x-frame-options field in the header.\n

", "content": [{"c": "If you opened any page from google, you will find there is a", "t": "text"}, {"c": "x-frame-options", "t": "code-inline"}, {"c": "field in the header.", "t": "text"}]}, {"type": "image", "raw_content": "\"Google", "content": {"url": "https://i.sstatic.net/uEYnJ.png", "data": null, "alt": "Google response header", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame>, <iframe> or <object>. Sites can use this to avoid clickjacking attacks, by ensuring\n that their content is not embedded into other sites.

", "content": [{"c": "The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a", "t": "text"}, {"c": "", "t": "code-inline"}, {"c": ",", "t": "text"}, {"c": "", "by": "tag_pre_code"}}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "3", "t": "text"}, {"c": "How will you handle images, included JS and CSS files, hyperlinks, and AJAX requests?", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "dotancohen", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "May 11, 2014 at 6:54", "t": "text"}]], [[{"c": "@dotancohen you're right, it isn't a perfect solution, but I think it is the best for this situation. Some sites you won't run into the problems you discussed.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Grant", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jun 10, 2014 at 2:57", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "This works, but its effectively double loading the content and therefore loading time as your server scrapes and then re-serves the content...", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "ChristoKiwi", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jan 12, 2015 at 0:56", "t": "text"}]], [[{"c": "Doesnt load css from external page.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Nov 1, 2023 at 9:12", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

Use your own HTTPS-to-HTTP reverse proxy.

", "content": [{"c": "Use your own HTTPS-to-HTTP reverse proxy.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

If your use case is about a few, rarely changing URLs to embed into the iframe, you can simply set up a reverse proxy for this on your own server and configure it so that one https URL on your server maps to one http URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.

", "content": [{"c": "If your use case is about a few, rarely changing URLs to embed into the", "t": "text"}, {"c": "iframe", "t": "code-inline"}, {"c": ", you can simply set up a reverse proxy for this on your own server and configure it so that one", "t": "text"}, {"c": "https", "t": "code-inline"}, {"c": "URL on your server maps to one", "t": "text"}, {"c": "http", "t": "code-inline"}, {"c": "URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

If for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.

", "content": [{"c": "If for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "1", "t": "text"}, {"c": "mitmproxy", "t": "code-inline"}, {"c": " is a debugging tool, not production proxying system. ", "t": "text"}, {"c": "ngrok", "t": "code-inline"}, {"c": " is tunnelling service, mostly for development servers, I don't understand how it can be useful for this.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "kolen", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jul 3, 2018 at 15:52", "t": "text"}]], [[{"c": "@kolen It's not about the tools, it's about the idea of using a reverse proxy for this, not mentioned in the other answers yet. Changing to Apache now, which is a much more common way to do a reverse proxy.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "tanius", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Oct 12, 2019 at 18:30", "t": "text"}]], [[{"c": "This solution worked perfectly for me. Found directions for IIS here: ", "t": "text"}, {"c": "techcommunity.microsoft.com/t5/iis-support-blog/\u2026", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Rob10e", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Feb 5, 2021 at 16:31", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

Try to use protocol relative links.

", "content": [{"c": "Try to use protocol relative links.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Your link is http://example.com/script.js, use:

", "content": [{"c": "Your link is http://example.com/script.js, use:", "t": "text"}]}, {"type": "code", "raw_content": "<script src=\"//example.com/script.js\" type=\"text/javascript\"></script>\n", "inline": false, "content": {"code_content": "", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

In this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.

", "content": [{"c": "In this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "Seen in: https://developer.mozilla.org/es/docs/Seguridad/MixedContent/arreglar_web_con_contenido_mixto", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "3", "t": "text"}, {"c": "only works if the resource is available as https.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "dansch", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 3, 2020 at 18:35", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

All you need to do is just use Google as a Proxy server.

", "content": [{"c": "All you need to do is just use Google as a Proxy server.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "https://www.google.ie/gwt/x?u=[YourHttpLink].", "t": "text"}]}, {"type": "code", "raw_content": "<iframe src=\"https://www.google.ie/gwt/x?u=[Your http link]\"></iframe>\n", "inline": false, "content": {"code_content": "", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

It worked for me.

", "content": [{"c": "It worked for me.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "Credits:- https://www.wikihow.com/Use-Google-As-a-Proxy", "t": "text"}]}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "Where you are trying to use it.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "May 18, 2020 at 4:16", "t": "text"}]], [[{"c": "2", "t": "text"}, {"c": "Doesn't work for me. And ", "t": "text"}, {"c": "", "t": "code-inline"}, {"c": " should be ", "t": "text"}, {"c": "", "t": "code-inline"}, {"c": ".", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 31, 2021 at 5:21", "t": "text"}]], [[{"c": "i tried below ", "t": "text"}, {"c": "", "t": "code-inline"}, {"c": " - it doent work for me", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 27, 2024 at 4:33", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

\nNot the answer you're looking for? Browse other questions tagged

", "content": {"title_content": "Not the answer you're looking for? Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": " or ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

or ask your own question.

", "content": {"title_content": "or ask your own question .", "level": "2"}}]], "main_html": "

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

Is there any way to turn this off or any way to get around it?

The iframe has no src attribute and the contents are set using:

frame.open();\nframe.write(html);\nframe.close();\n

\n 10 Answers\n \n

Note: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an iframe embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.

The best solution I created is to simply use google as the ssl proxy...

https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky\n

Tested and works in firefox.

Other Methods:

document.location.href =\"http://thenonsslsite.com\";

Unless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).

The real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.

Note, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.

\n33

Based on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:

If you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php

I know this is an old post, but another solution would be to use cURL, for example:

redirect.php:

<?php\nif (isset($_GET['url'])) {\n $url = $_GET['url'];\n $ch = curl_init();\n $timeout = 5;\n curl_setopt($ch, CURLOPT_URL, $url);\n curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);\n $data = curl_exec($ch);\n curl_close($ch);\n echo $data;\n}\n

then in your iframe tag, something like:

<iframe src=\"/redirect.php?url=http://www.example.com/\"></iframe>\n

This is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.

The upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.

Plus -- I'm a little weary of relying on Javascript redirects for anything important.

Cheers!

add <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\"> in head

Using Google as the SSL proxy is not working currently,

Why?

If you opened any page from google, you will find there is a x-frame-options field in the header.\n

\"Google

The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame>, <iframe> or <object>. Sites can use this to avoid clickjacking attacks, by ensuring\n that their content is not embedded into other sites.

(Quote from MDN)

One of the solution

Below is my work around for this problem:

Upload the content to AWS S3, and it will create a https link for the resource.
\nNotice: set the permission to the html file for allowing everyone view it.

After that, we can using it as the src of iframe in the https websites.\n

\"AWS\"

You will always get warnings of blocked content in most browsers when trying to display non secure content on an https page. This is tricky if you want to embed stuff from other sites that aren't behind ssl. You can turn off the warnings or remove the blocking in your own browser but for other visitors it's a problem.

One way to do it is to load the content server side and save the images and other things to your server and display them from https.

You can also try using a service like embed.ly and get the content through them. They have support for getting the content behind https.

You could try scraping whatever you need with PHP or another server side language, then put the iframe to the scraped content. Here's an example with PHP:

scrapedcontent.php:

<?php\n$homepage = file_get_contents('http://www.example.com/');\necho $homepage;\n?>\n

index.html:

<iframe src=\"scrapedcontent.php\"></iframe>\n

Use your own HTTPS-to-HTTP reverse proxy.

If your use case is about a few, rarely changing URLs to embed into the iframe, you can simply set up a reverse proxy for this on your own server and configure it so that one https URL on your server maps to one http URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.

If for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.

Try to use protocol relative links.

Your link is http://example.com/script.js, use:

<script src=\"//example.com/script.js\" type=\"text/javascript\"></script>\n

In this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.

All you need to do is just use Google as a Proxy server.

<iframe src=\"https://www.google.ie/gwt/x?u=[Your http link]\"></iframe>\n

It worked for me.

\nNot the answer you're looking for? Browse other questions tagged

or

or ask your own question.

", "statics": {"paragraph": 48, "paragraph.text": 59, "paragraph.code-inline": 11, "code": 9, "list": 16, "list.text": 176, "title": 5, "list.code-inline": 13, "image": 2}, "url": "https://stackoverflow.com/questions/18327314/how-to-allow-http-content-within-an-iframe-on-a-https-site", "content": "I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:\n\n[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}\n\nIs there any way to turn this off or any way to get around it?\n\nThe iframe has no `src` attribute and the contents are set using:\n\n```\nframe.open();\nframe.write(html);\nframe.close();\n```\n\n- stackoverflow.com/questions/9280665/\u2026 \u2013 chiliNUT Commented Aug 20, 2013 at 5:30\n- made an edit. The src is not set as the content is written into the iframe Commented Aug 20, 2013 at 9:36\n- 1 Thanks for all the answers. Long story short is proxy the content. Commented Aug 17, 2014 at 2:50\n- @georgephillips would you share the code for proxying the content? \u2013 Gintas_ Commented May 5, 2017 at 20:30\n\n## 10 Answers\n\nNote: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an `iframe` embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.\n\nThe best solution I created is to simply use google as the ssl proxy...\n\n```\nhttps://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky\n```\n\nTested and works in firefox.\n\nOther Methods:\n\n- Use a Third party such as embed.ly (but it it really only good for well known http APIs).\n- Create your own redirect script on an https page you control (a simple javascript redirect on a relative linked page should do the trick. Something like: (you can use any langauge/method) `https://example.com` That has a iframe linking to... `https://example.com/utilities/redirect.html` Which has a simple js redirect script like...\n\n```\ndocument.location.href =\"http://thenonsslsite.com\";\n```\n\n\n- Alternatively, you could add an RSS feed or write some reader/parser to read the http site and display it within your https site.\n- You could/should also recommend to the http site owner that they create an ssl connection. If for no other reason than it increases seo .\n\nUnless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).\n\nThe real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.\n\nNote, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.\n\n- 10 Great answer, thanks. Just to let you know in chrome the JS redirect method does not work just prevents the change (as it does when you try load it normally). Commented Sep 3, 2014 at 1:52\n- 10 The redirect trick seems to work in Firefox only. Chrome still denies loading the insecure content. Are there any other known workarounds? Commented Nov 25, 2014 at 15:07\n- 49 Just wanted to signal out that the \"Create your own redirect script on an https page you control\" method no longer works with current versions of Chrom(e|ium) and Firefox, even using JS. \u2013 kako-nawao Commented Feb 10, 2015 at 15:39\n- 18 This answer is invalid to date, any other solutions Commented Feb 9, 2017 at 22:15\n- 28 The answer should have an option to be labeled as 'deprecated'. It creates confusion unless you read all the comments. \u2013 Nitin Commented May 16, 2017 at 19:44\n\n33\n\nBased on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:\n\n- Prepare your proxy server - install IIS, Apache\n- Get valid SSL certificate to avoid security errors (free from startssl.com for example)\n- Write a wrapper, which will download insecure content (how to below)\n- From your site/app get https://yourproxy.com/?page=http://insecurepage.com\n\nIf you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php\n\n- 1 This will not work, since many pages behind iframe don't want to be embedded in an iframe and thus set X-Frame-Options Header to SAMEORIGIN. Even if you are able to bypass this using the proxy, the page would try to load something like /insecurepage.css and your browser will request yourdomain/insecurepage.css \u2013 antidote Commented Jul 25, 2019 at 12:46\n- This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/\u2026 \u2013 Rob10e Commented Feb 5, 2021 at 16:33\n\nI know this is an old post, but another solution would be to use cURL, for example:\n\nredirect.php:\n\n```\n\n```\n\nThis is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.\n\nThe upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.\n\nPlus -- I'm a little weary of relying on Javascript redirects for anything important.\n\nCheers!\n\n- 4 This is pretty working, but the links inside the site are getting invalid. For example, I have a domain called `example.com` which has a SSL. I am embedding a iframe with `example.net` which has no SSL. The `example.com` has a link like `href=\"/path/file.html\"` and while clicking it, it is opening as `https://example.com/path/file.html` instead of `http://example.net/path/file.html` \u2013 Sibidharan Commented Feb 15, 2016 at 15:13\n- 1 The link cannot be relative if you would like this to work. In other words, specify the full URL within the href. If this is dynamic there are libraries to grab each segment of the URL in Javascript as well as server side. Commented Jul 13, 2016 at 19:55\n- 1 css of the target site under iframe is broken . Please check Commented Feb 28, 2019 at 9:21\n- This way somehow works but css doesnt work at all. Commented Nov 1, 2023 at 9:04\n\nadd `` in head\n\nreference: http://thehackernews.com/2015/04/disable-mixed-content-warning.html\n\nbrowser compatibility: http://caniuse.com/\\#feat=upgradeinsecurerequests\n\n- 37 This solution doesn't allow you to serve http content on a https site. All this does is force http requests as https requests. If the resource doesn't exist on https you'll just get a 404 error instead. \u2013 Felix Commented Feb 20, 2017 at 21:12\n- 1 This is actually works at least for my needs.. tested it with firefox and confirmed working. My issue is source URL isn't HTTPS compliance while my own website is using HTTPS. Commented Dec 14, 2017 at 3:41\n- Working like charm in chrome Version 76.0.3809.132 (Official Build) Commented Sep 9, 2019 at 7:10\n- This solution chang http to https and do not add content from http site to https site. Commented Jan 31, 2021 at 16:46\n- 1 Not working anymore. Commented Mar 15, 2022 at 13:13\n\nUsing Google as the SSL proxy is not working currently,\n\n### Why?\n\nIf you opened any page from google, you will find there is a `x-frame-options` field in the header.\n\nThe X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a `` , `\n```\n\n- 3 How will you handle images, included JS and CSS files, hyperlinks, and AJAX requests? \u2013 dotancohen Commented May 11, 2014 at 6:54\n- @dotancohen you're right, it isn't a perfect solution, but I think it is the best for this situation. Some sites you won't run into the problems you discussed. \u2013 Grant Commented Jun 10, 2014 at 2:57\n- 1 This works, but its effectively double loading the content and therefore loading time as your server scrapes and then re-serves the content... \u2013 ChristoKiwi Commented Jan 12, 2015 at 0:56\n- Doesnt load css from external page. Commented Nov 1, 2023 at 9:12\n\nUse your own HTTPS-to-HTTP reverse proxy.\n\nIf your use case is about a few, rarely changing URLs to embed into the `iframe` , you can simply set up a reverse proxy for this on your own server and configure it so that one `https` URL on your server maps to one `http` URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.\n\nIf for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.\n\n- 1 `mitmproxy` is a debugging tool, not production proxying system. `ngrok` is tunnelling service, mostly for development servers, I don't understand how it can be useful for this. \u2013 kolen Commented Jul 3, 2018 at 15:52\n- @kolen It's not about the tools, it's about the idea of using a reverse proxy for this, not mentioned in the other answers yet. Changing to Apache now, which is a much more common way to do a reverse proxy. \u2013 tanius Commented Oct 12, 2019 at 18:30\n- This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/\u2026 \u2013 Rob10e Commented Feb 5, 2021 at 16:31\n\nTry to use protocol relative links.\n\nYour link is http://example.com/script.js, use:\n\n```\n\n```\n\nIn this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.\n\nSeen in: https://developer.mozilla.org/es/docs/Seguridad/MixedContent/arreglar_web_con_contenido_mixto\n\n- 3 only works if the resource is available as https. \u2013 dansch Commented Dec 3, 2020 at 18:35\n\nAll you need to do is just use Google as a Proxy server.\n\nhttps://www.google.ie/gwt/x?u=[YourHttpLink].\n\n```\n\n```\n\nIt worked for me.\n\nCredits:- https://www.wikihow.com/Use-Google-As-a-Proxy\n\n- Where you are trying to use it. Commented May 18, 2020 at 4:16\n- 2 Doesn't work for me. And `` should be `` . Commented Dec 31, 2021 at 5:21\n- i tried below `` - it doent work for me Commented Mar 27, 2024 at 4:33\n\n## Not the answer you're looking for? Browse other questions tagged\n\n## or ask your own question .\n", "html": "\n\n\n\n\n \n\n \n\n html - How to allow http content within an iframe on a https site - Stack Overflow\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n \n \n \n \n\n\n
\n\n\n\n\n\n
\n
\n
\n\n\n
\n Skip to main content\n\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\n\n\n\n\t\t\t
    \n\n\t\t\t\t\t
  1. \n\t\t\t\t\t\tAbout\n\t\t\t\t\t
  2. \n\n\t\t\t\t
  3. \n\t\t\t\t\t\n\t\t\t\t\t\t\tProducts\n\t\t\t\t\t\n\t\t\t\t
  4. \n\n
  5. \n OverflowAI\n
  6. \n\n\t\t\t
\n\t\t\t\n\n\n\t\t \n\n\n\n\n\n\t
\n
\n\n\t\n\n\n\n\n\n
\n\n\n\n
\n\n
\n
\n \n
\n\n\n
\n
\n
\n \n
Collectives\u2122 on Stack Overflow
\n

Find centralized, trusted content and collaborate around the technologies you use most.

\n \n Learn more about Collectives\n \n
\n
\n\n
\n
\n\n
\n

Teams

\n

Q&A for work

\n

Connect and share knowledge within a single location that is structured and easy to search.

\n \n Learn more about Teams\n \n
\n\n
\n \n
\n
\n\n
\n
\n \n

Get early access and see previews of new features.

\n Learn more about Labs\n
\n\n\n\n
\n\n\n\n
\n\n\n\n
\n \n\n
\n\n\n \n
\n
\n Asked\n \n
\n
\n Modified\n 2 years, 5 months ago\n
\n
\n Viewed\n 512k times\n
\n
\n\n\n\n
\n\n
\n \n
\n
\n\t\t
\n
\n\n
\n
\n\n
\n \n \n
\n176
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n\n

I load some HTML into an iframe but when a file referenced is using http, not https, I get the following error:

\n\n
\n

[blocked] The page at {current_pagename} ran insecure content from {referenced_filename}

\n
\n\n

Is there any way to turn this off or any way to get around it?

\n\n

The iframe has no src attribute and the contents are set using:

\n\n
frame.open();\nframe.write(html);\nframe.close();\n
\n
\n\n
\n \n
\n\n
\n
\n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n
\n
\n \n
\n
\"David
\n
\n
\n David Ortiz\n
\n 99511 gold badge1414 silver badges2222 bronze badges\n
\n
\n
\n
\n
\n
\n
\n
\n asked Aug 20, 2013 at 5:04\n
\n\n
\n
\n
\"georgephillips's
\n
\n
\n georgephillipsgeorgephillips\n
\n 3,56044 gold badges2424 silver badges3030 bronze badges\n
\n
\n
\n\n\n
\n
\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n stackoverflow.com/questions/9280665/…\n\n
    \n– chiliNUT\n
    \n \n Commented\n Aug 20, 2013 at 5:30\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n made an edit. The src is not set as the content is written into the iframe\n\n
    \n– georgephillips\n
    \n \n Commented\n Aug 20, 2013 at 9:36\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n Thanks for all the answers. Long story short is proxy the content.\n\n
    \n– georgephillips\n
    \n \n Commented\n Aug 17, 2014 at 2:50\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @georgephillips would you share the code for proxying the content?\n\n
    \n– Gintas_\n
    \n \n Commented\n May 5, 2017 at 20:30\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n\n
\n\n\n
\n
\n\t\t
\n
\n\n\n
\n \n
\n
\n
\n

\n 10 Answers\n 10\n

\n
\n
\n\n\n
\n
\n \n \n Reset to default\n \n
\n
\n \n
\n
\n\n\n
\n
\n\n
\n\n\n\n\n
\n
\n
\n\n
\n \n \n
\n151
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n
\n\n
\n\n
\n +100\n
\n\n
\n
\n\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n
\n

Note: While this solution may have worked in some browsers when it was written in 2014, it no longer works. Navigating or redirecting to an HTTP URL in an iframe embedded in an HTTPS page is not permitted by modern browsers, even if the frame started out with an HTTPS URL.

\n
\n\n

The best solution I created is to simply use google as the ssl proxy...

\n\n
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky\n
\n\n

Tested and works in firefox.

\n\n

Other Methods:

\n\n
    \n
  • Use a Third party such as embed.ly (but it it really only good for well known http APIs).

  • \n
  • Create your own redirect script on an https page you control (a simple javascript redirect on a relative linked page should do the trick. Something like: (you can use any langauge/method)

    \n\n

    https://example.com That has a iframe linking to...

    \n\n

    https://example.com/utilities/redirect.html Which has a simple js redirect script like...

    \n\n

    document.location.href =\"http://thenonsslsite.com\";

  • \n
  • Alternatively, you could add an RSS feed or write some reader/parser to read the http site and display it within your https site.

  • \n
  • You could/should also recommend to the http site owner that they create an ssl connection. If for no other reason than it increases seo.

  • \n
\n\n

Unless you can get the http site owner to create an ssl certificate, the most secure and permanent solution would be to create an RSS feed grabing the content you need (presumably you are not actually 'doing' anything on the http site -that is to say not logging in to any system).

\n\n

The real issue is that having http elements inside a https site represents a security issue. There are no completely kosher ways around this security risk so the above are just current work arounds.

\n\n

Note, that you can disable this security measure in most browsers (yourself, not for others). Also note that these 'hacks' may become obsolete over time.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n user149341\n
\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Aug 7, 2014 at 18:27\n
\n\n
\n
\n
\"Matthew
\n
\n
\n Matthew PetersMatthew Peters\n
\n 1,85922 gold badges1414 silver badges1616 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 17\n
\n
\n
    \n\n
  • \n
    \n
    \n 10\n
    \n
    \n
    \n
    \n\n Great answer, thanks. Just to let you know in chrome the JS redirect method does not work just prevents the change (as it does when you try load it normally).\n\n
    \n– georgephillips\n
    \n \n Commented\n Sep 3, 2014 at 1:52\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 10\n
    \n
    \n
    \n
    \n\n The redirect trick seems to work in Firefox only. Chrome still denies loading the insecure content. Are there any other known workarounds?\n\n
    \n– Andreas Gohr\n
    \n \n Commented\n Nov 25, 2014 at 15:07\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 49\n
    \n
    \n
    \n
    \n\n Just wanted to signal out that the "Create your own redirect script on an https page you control" method no longer works with current versions of Chrom(e|ium) and Firefox, even using JS.\n\n
    \n– kako-nawao\n
    \n \n Commented\n Feb 10, 2015 at 15:39\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 18\n
    \n
    \n
    \n
    \n\n This answer is invalid to date, any other solutions\n\n
    \n– Sam Denty\n
    \n \n Commented\n Feb 9, 2017 at 22:15\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 28\n
    \n
    \n
    \n
    \n\n The answer should have an option to be labeled as 'deprecated'. It creates confusion unless you read all the comments.\n\n
    \n– Nitin\n
    \n \n Commented\n May 16, 2017 at 19:44\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n
\n
\n\t\t
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n33
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Based on generality of this question, I think, that you'll need to setup your own HTTPS proxy on some server online. Do the following steps:

\n\n
    \n
  • Prepare your proxy server - install IIS, Apache
  • \n
  • Get valid SSL certificate to avoid security errors (free from startssl.com for example)
  • \n
  • Write a wrapper, which will download insecure content (how to below)
  • \n
  • From your site/app get https://yourproxy.com/?page=http://insecurepage.com
  • \n
\n\n

If you simply download remote site content via file_get_contents or similiar, you can still have insecure links to content. You'll have to find them with regex and also replace. Images are hard to solve, but \u00cf found workaround here: http://foundationphp.com/tutorials/image_proxy.php

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Aug 14, 2014 at 3:09\n
\n\n
\n
\n
\"panpernicek's
\n
\n
\n panpernicekpanpernicek\n
\n 67666 silver badges1111 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 2\n
\n
\n
    \n\n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This will not work, since many pages behind iframe don't want to be embedded in an iframe and thus set X-Frame-Options Header to SAMEORIGIN. Even if you are able to bypass this using the proxy, the page would try to load something like /insecurepage.css and your browser will request yourdomain/insecurepage.css\n\n
    \n– antidote\n
    \n \n Commented\n Jul 25, 2019 at 12:46\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/…\n\n
    \n– Rob10e\n
    \n \n Commented\n Feb 5, 2021 at 16:33\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n32
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

I know this is an old post, but another solution would be to use cURL, for example:

\n\n

redirect.php:

\n\n
<?php\nif (isset($_GET['url'])) {\n    $url = $_GET['url'];\n    $ch = curl_init();\n    $timeout = 5;\n    curl_setopt($ch, CURLOPT_URL, $url);\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);\n    $data = curl_exec($ch);\n    curl_close($ch);\n    echo $data;\n}\n
\n\n

then in your iframe tag, something like:

\n\n
<iframe src=\"/redirect.php?url=http://www.example.com/\"></iframe>\n
\n\n

This is just a MINIMAL example to illustrate the idea -- it doesn't sanitize the URL, nor would it prevent someone else using the redirect.php for their own purposes. Consider these things in the context of your own site.

\n\n

The upside, though, is it's more flexible. For example, you could add some validation of the curl'd $data to make sure it's really what you want before displaying it -- for example, test to make sure it's not a 404, and have alternate content of your own ready if it is.

\n\n

Plus -- I'm a little weary of relying on Javascript redirects for anything important.

\n\n

Cheers!

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered May 19, 2015 at 6:10\n
\n\n
\n
\n
\"David
\n
\n
\n David R.David R.\n
\n 68466 silver badges1313 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n 4\n
    \n
    \n
    \n
    \n\n This is pretty working, but the links inside the site are getting invalid. For example, I have a domain called example.com which has a SSL. I am embedding a iframe with example.net which has no SSL. The example.com has a link like href="/path/file.html" and while clicking it, it is opening as https://example.com/path/file.html instead of http://example.net/path/file.html\n\n
    \n– Sibidharan\n
    \n \n Commented\n Feb 15, 2016 at 15:13\n \n \n \n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n The link cannot be relative if you would like this to work. In other words, specify the full URL within the href. If this is dynamic there are libraries to grab each segment of the URL in Javascript as well as server side.\n\n
    \n– Anthony Mason\n
    \n \n Commented\n Jul 13, 2016 at 19:55\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n css of the target site under iframe is broken . Please check\n\n
    \n– Jeff Bootsholz\n
    \n \n Commented\n Feb 28, 2019 at 9:21\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This way somehow works but css doesnt work at all.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Nov 1, 2023 at 9:04\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n
\n
\n\t\t
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n17
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

add <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> in head

\n
\n

reference: http://thehackernews.com/2015/04/disable-mixed-content-warning.html

\n

browser compatibility: http://caniuse.com/#feat=upgradeinsecurerequests

\n
\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Community's
\n
\n
\n CommunityBot\n
\n 111 silver badge\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Jan 30, 2017 at 18:41\n
\n\n
\n
\n
\"user2523022's
\n
\n
\n user2523022user2523022\n
\n 27522 silver badges55 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 5\n
\n
\n
    \n\n
  • \n
    \n
    \n 37\n
    \n
    \n
    \n
    \n\n This solution doesn't allow you to serve http content on a https site. All this does is force http requests as https requests. If the resource doesn't exist on https you'll just get a 404 error instead.\n\n
    \n– Felix\n
    \n \n Commented\n Feb 20, 2017 at 21:12\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This is actually works at least for my needs.. tested it with firefox and confirmed working. My issue is source URL isn't HTTPS compliance while my own website is using HTTPS.\n\n
    \n– Fernan Vecina\n
    \n \n Commented\n Dec 14, 2017 at 3:41\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Working like charm in chrome Version 76.0.3809.132 (Official Build)\n\n \n \n Commented\n Sep 9, 2019 at 7:10\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution chang http to https and do not add content from http site to https site.\n\n
    \n– Kashif Munir\n
    \n \n Commented\n Jan 31, 2021 at 16:46\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n Not working anymore.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Mar 15, 2022 at 13:13\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n9
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Using Google as the SSL proxy is not working currently,

\n\n

Why?

\n\n

If you opened any page from google, you will find there is a x-frame-options field in the header.\n\"Google

\n\n
\n

The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame>, <iframe> or <object>. Sites can use this to avoid clickjacking attacks, by ensuring\n that their content is not embedded into other sites.

\n
\n\n

(Quote from MDN)

\n\n

One of the solution

\n\n

Below is my work around for this problem:

\n\n

Upload the content to AWS S3, and it will create a https link for the resource.
\nNotice: set the permission to the html file for allowing everyone view it.

\n\n

After that, we can using it as the src of iframe in the https websites.\n\"AWS\"

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"JW.'s
\n
\n
\n JW.\n
\n 2,25111 gold badge2222 silver badges2525 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 2, 2017 at 10:17\n
\n\n
\n
\n
\"David
\n
\n
\n David GuanDavid Guan\n
\n 4,29011 gold badge2626 silver badges3333 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Does this still work? Because I can't seem to get S3 to serve an https link ATM.\n\n
    \n– bobsbeenjamin\n
    \n \n Commented\n Feb 5, 2022 at 0:30\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n7
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

You will always get warnings of blocked content in most browsers when trying to display non secure content on an https page. This is tricky if you want to embed stuff from other sites that aren't behind ssl. You can turn off the warnings or remove the blocking in your own browser but for other visitors it's a problem.

\n\n

One way to do it is to load the content server side and save the images and other things to your server and display them from https.

\n\n

You can also try using a service like embed.ly and get the content through them. They have support for getting the content behind https.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Talha
\n
\n
\n Talha Awan\n
\n 4,61944 gold badges2626 silver badges4040 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Nov 2, 2013 at 21:12\n
\n\n
\n
\n
\"Addeladde's
\n
\n
\n AddeladdeAddeladde\n
\n 78722 gold badges99 silver badges2929 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n if you scrape the content and show it on your site their is Always the risk of cross site scripting. So a god solution is to scrape the content on a separate url and present the data in an iframe from that url with https. In that way you prevent crosssite scripting on your mainsite and session hijacking.\n\n
    \n– Addeladde\n
    \n \n Commented\n May 13, 2014 at 13:41\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

You could try scraping whatever you need with PHP or another server side language, then put the iframe to the scraped content. Here's an example with PHP:

\n\n

scrapedcontent.php:

\n\n
<?php\n$homepage = file_get_contents('http://www.example.com/');\necho $homepage;\n?>\n
\n\n

index.html:

\n\n
<iframe src=\"scrapedcontent.php\"></iframe>\n
\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 24, 2014 at 18:42\n
\n\n
\n
\n
\"Grant's
\n
\n
\n GrantGrant\n
\n 32966 silver badges1414 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 4\n
\n
\n
    \n\n
  • \n
    \n
    \n 3\n
    \n
    \n
    \n
    \n\n How will you handle images, included JS and CSS files, hyperlinks, and AJAX requests?\n\n
    \n– dotancohen\n
    \n \n Commented\n May 11, 2014 at 6:54\n \n \n \n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @dotancohen you're right, it isn't a perfect solution, but I think it is the best for this situation. Some sites you won't run into the problems you discussed.\n\n
    \n– Grant\n
    \n \n Commented\n Jun 10, 2014 at 2:57\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n This works, but its effectively double loading the content and therefore loading time as your server scrapes and then re-serves the content...\n\n
    \n– ChristoKiwi\n
    \n \n Commented\n Jan 12, 2015 at 0:56\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Doesnt load css from external page.\n\n
    \n– Goran_Ilic_Ilke\n
    \n \n Commented\n Nov 1, 2023 at 9:12\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Use your own HTTPS-to-HTTP reverse proxy.

\n\n

If your use case is about a few, rarely changing URLs to embed into the iframe, you can simply set up a reverse proxy for this on your own server and configure it so that one https URL on your server maps to one http URL on the proxied server. Since a reverse proxy is fully serverside, the browser cannot discover that it is \"only\" talking to a proxy of the real website, and thus will not complain as the connection to the proxy uses SSL properly.

\n\n

If for example you use Apache2 as your webserver, then see these instructions to create a reverse proxy.

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n\n
\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Sep 4, 2014 at 17:51\n
\n\n
\n
\n
\"tanius's
\n
\n
\n taniustanius\n
\n 16.7k44 gold badges6060 silver badges6868 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 3\n
\n
\n
    \n\n
  • \n
    \n
    \n 1\n
    \n
    \n
    \n
    \n\n mitmproxy is a debugging tool, not production proxying system. ngrok is tunnelling service, mostly for development servers, I don't understand how it can be useful for this.\n\n
    \n– kolen\n
    \n \n Commented\n Jul 3, 2018 at 15:52\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n @kolen It's not about the tools, it's about the idea of using a reverse proxy for this, not mentioned in the other answers yet. Changing to Apache now, which is a much more common way to do a reverse proxy.\n\n
    \n– tanius\n
    \n \n Commented\n Oct 12, 2019 at 18:30\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n This solution worked perfectly for me. Found directions for IIS here: techcommunity.microsoft.com/t5/iis-support-blog/…\n\n
    \n– Rob10e\n
    \n \n Commented\n Feb 5, 2021 at 16:31\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n0
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

Try to use protocol relative links.

\n

Your link is http://example.com/script.js, use:

\n
<script src="//example.com/script.js" type="text/javascript"></script>\n
\n

In this way, you can leave the scheme free (do not indicate the protocol in the links) and trust that the browser uses the protocol of the embedded Web page. If your users visit the HTTP version of your Web page, the script will be loaded over http:// and if your users visit the HTTPS version of your Web site, the script will be loaded over https://.

\n

Seen in: https://developer.mozilla.org/es/docs/Seguridad/MixedContent/arreglar_web_con_contenido_mixto

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Oct 20, 2020 at 11:37\n
\n\n
\n
\n
\"sesperanto's
\n
\n
\n sesperantosesperanto\n
\n 18722 silver badges77 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 1\n
\n
\n
    \n\n
  • \n
    \n
    \n 3\n
    \n
    \n
    \n
    \n\n only works if the resource is available as https.\n\n
    \n– dansch\n
    \n \n Commented\n Dec 3, 2020 at 18:35\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n\n
\n
\n
\n\n
\n \n \n
\n-2
\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n\n\n \n\n
\n\n
\n\n\n\n
\n\n
\n

All you need to do is just use Google as a Proxy server.

\n

https://www.google.ie/gwt/x?u=[YourHttpLink].

\n
<iframe src="https://www.google.ie/gwt/x?u=[Your http link]"></iframe>\n
\n

It worked for me.

\n

Credits:- https://www.wikihow.com/Use-Google-As-a-Proxy

\n
\n
\n
\n \n
\n\n\n\n
\n\n
\n\n
\n Share\n
\n\n\n \n\n
\n \n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\"Subhan's
\n
\n
\n Subhan\n
\n 1,63433 gold badges2727 silver badges5959 bronze badges\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n answered Mar 29, 2020 at 20:20\n
\n\n
\n
\n
\"Star
\n
\n
\n Star TechTricksStar TechTricks\n
\n 3155 bronze badges\n
\n
\n
\n\n\n
\n
\n\n\n
\n\n
\n\n\n\n\n 3\n
\n
\n
    \n\n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n Where you are trying to use it.\n\n
    \n– Star TechTricks\n
    \n \n Commented\n May 18, 2020 at 4:16\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n 2\n
    \n
    \n
    \n
    \n\n Doesn't work for me. And </frame> should be </iframe>.\n\n
    \n– TimTIM Wong\n
    \n \n Commented\n Dec 31, 2021 at 5:21\n \n
    \n
    \n
  • \n
  • \n
    \n
    \n
    \n
    \n
    \n
    \n\n i tried below <iframe src="https://www.google.ie/gwt/x?u=[http://www.mootrack.com/page/share.jsp?mapType=google&token=S1711650600yUyP315023260c762b627b44263e17f998a4272d1c]"></iframe> - it doent work for me\n\n
    \n– Kumaresan Sd\n
    \n \n Commented\n Mar 27, 2024 at 4:33\n \n
    \n
    \n
  • \n\n
\n\t
\n\n \n
\n
\n
\n\n \n
\n \n \n \n

\n Your Answer\n

\n\n\n \n\n\n\n
\n\n\n
\n
\n
\n
\n
\n

Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more

\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n\n \n\n\n\n
\n
Draft saved
\n
Draft discarded
\n
\n\n\n
\n
\n\n
\n \n \n
\n\n
\n\n\n
\n
\n
\n
\n

Sign up or log in

\n \n
\n Sign up using Google\n
\n
\n Sign up using Email and Password\n
\n
\n \n \n \n
\n

Post as a guest

\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n \n

Required, but never shown

\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
\n \n \n\n
\n\n
\n \n \n

\n By clicking \u201cPost Your Answer\u201d, you agree to our terms of service and acknowledge you have read our privacy policy.\n

\n
\n
\n
\n\n\n

\n
\nNot the answer you're looking for? Browse other questions tagged or ask your own question.
\n

\n
\n
\n\n\n
\n\n\n\n \n\n\n
\n
\n\t\t
\n
\n
\n
\n\t\t
\n
\n
\n\n\n\n\n\n \n \n\n\n\n\n\n
\n

\n \n Hot Network Questions\n \n

\n \n\n \n more hot questions\n \n
\n\n \n \n\n
\n\n
\n\n
lang-html
\n\n\n\n\n\n\n\n
\n
\n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/code_11.jsonl b/bench/data/groundtruth/code_11.jsonl index 0a1db94b..a3c36a95 100644 --- a/bench/data/groundtruth/code_11.jsonl +++ b/bench/data/groundtruth/code_11.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "
Joe\n asked on 18 Dec 2009,\u00a003:31 PM
", "content": [{"c": "Joe asked on 18 Dec 2009, 03:31 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

", "content": [{"c": "I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms. I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:", "t": "text"}]}, {"type": "table", "raw_content": "
RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(\"ResourceInput\");\u00a0
resource.Skin\u00a0=\u00a0_skin;\u00a0
resource\u00a0=\u00a0LoadResources(resource);\u00a0
resource.SelectedIndexChanged\u00a0+=\u00a0new\u00a0RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);\u00a0
", "content": {"html": "
RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(<br>\"ResourceInput\"<br>);
resource.Skin\u00a0=\u00a0_skin;
resource\u00a0=\u00a0LoadResources(resource);
resource.SelectedIndexChanged\u00a0+=\u00a0<br>new<br>RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);
", "is_complex": false}}, {"type": "paragraph", "raw_content": "
In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.
", "content": [{"c": "In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Thanks!
", "content": [{"c": "Thanks!", "t": "text"}]}, {"type": "title", "raw_content": "

9 Answers, 1 is accepted

", "content": {"title_content": "9 Answers , 1 is accepted", "level": "2"}}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi Joe,

\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx


\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
", "content": [{"c": "Hi Joe, That could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler: http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 22 Dec 2009,\u00a008:15 PM
", "content": [{"c": "answered on 22 Dec 2009, 08:15 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nUnfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice....

\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.

\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\")\u00a0 which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class.

\nSo I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event.

\nThanks.\n
", "content": [{"c": "Peter, Unfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice.... I tried implementing your suggestion, but I ran into 2 stumbling blocks. 1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method. 2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\") which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class. So I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event. Thanks.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi Joe,

\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:

", "content": [{"c": "Hi Joe, I think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:", "t": "text"}]}, {"type": "code", "raw_content": "
\n
<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var selectedValue = document.getElementById(\"selectedValue\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.value = eventArgs.get_item().get_text();\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0\u00a0\u00a0\u00a0<asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
\u00a0\u00a0\u00a0\u00a0<telerik:RadScheduler ID=\"RadScheduler1\"\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n", "inline": false, "content": {"code_content": "\n \n ", "by": "tag_code"}}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "

\nLet us know how it goes.

\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
", "content": [{"c": "Let us know how it goes. All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 06 Jan 2010,\u00a011:11 PM
", "content": [{"c": "answered on 06 Jan 2010, 11:11 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.

\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?

\nHere is my JS for reference:

", "content": [{"c": "Peter, Thanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help. When the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel? Here is my JS for reference:", "t": "text"}]}, {"type": "table", "raw_content": "
function\u00a0LoadProjects(sender,\u00a0eventArgs)\u00a0{ \u00a0
var\u00a0selectedValue\u00a0=\u00a0document.getElementById('\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'); \u00a0
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); \u00a0
alert(selectedValue.value); \u00a0
}\u00a0
", "content": {"html": "
function<br>LoadProjects(sender,\u00a0eventArgs)\u00a0{
var<br>selectedValue\u00a0=<br>document<br>.getElementById(<br>'\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'<br>);
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text();
alert(selectedValue.value);
}
", "is_complex": false}}, {"type": "paragraph", "raw_content": "

\nThanks again!\n
", "content": [{"c": "Thanks again!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 07 Jan 2010,\u00a009:39 PM
", "content": [{"c": "answered on 07 Jan 2010, 09:39 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.

\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working.

\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
", "content": [{"c": "Peter, I never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work. I did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working. Thanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 01 Sep 2010,\u00a006:20 AM
", "content": [{"c": "answered on 01 Sep 2010, 06:20 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi,

\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.

\nThanks

\nMilind
", "content": [{"c": "Hi, Can you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form. Thanks Milind", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hello Milind,

\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:

", "content": [{"c": "Hello Milind, Did you try the code from the post on12/25/2009? Do you experience any problems with the following code?:", "t": "text"}]}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "


\nKind regards,
\n Peter
\nthe Telerik team\n\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
", "content": [{"c": "Kind regards, Peter the Telerik team Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "https://www.test.com/forums/images/avatarimages/94dd90f7-4eeb-4369-8e56-8f101e514374gussprofilepic_m.jpg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "Guss", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Top achievements
", "content": [{"c": "Top achievements", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": "https://www.test.com/forums/images/forum-gamification/rank-02.svg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Rank 2
", "content": [{"c": "Rank 2", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": "https://www.test.com/forums/images/forum-gamification/general-veteran.svg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Veteran
", "content": [{"c": "Veteran", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 12 Nov 2011,\u00a002:17 PM
", "content": [{"c": "answered on 12 Nov 2011, 02:17 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
What I think is going on here is: (though not exactly related to the topic header)

\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)

So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)

\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\u00a0

", "content": [{"c": "What I think is going on here is: (though not exactly related to the topic header) You have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data) So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events) Lets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".", "t": "text"}]}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label\u00a0=\u00a0\"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray\u00a0here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n{\nRadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")\ntxtChildren.Visible = false;\nRadComboBox rcbChildren = new RadComboBox();\nrcbRegister.Label = \"Select Child:\"\nrcbChildren.Width = Unit.Pixel(250);\nrcbChildren.DataValueField = \"childIdFromDataSet\";\nrcbChildren.DataTextField = \"childTextFromDataSet\";\nrcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());\nrcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";\n//...........\n//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)\n//........\n//da.Fill(dt)//...........\nrcbChildren.DataSource = dt;\nrcbChildren.DataBind();\nif (txtChildren.Text != \"\") {\nrcbChildren.SelectedValue = txtChildren.Text;\nrcbChildren.Text = rcbRegister.txtChildren.Text;\n}\ntxtChildren.Parent.Controls.Add(rcbChildren);\n}\n}", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "

\nAnd your Javascript function\u00a0

", "content": [{"c": "And your Javascript function", "t": "text"}]}, {"type": "code", "raw_content": "
\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
", "inline": false, "content": {"code_content": "function OnChildrenSelectedIndexChanged(sender, eventArgs) {\nvar newvalue = eventArgs.get_item().get_value();\nvar passedclientid = sender.get_attributes().getAttribute(\"theclientid\");\nvar field1 = document.getElementById(passedclientid);\nvar field2id = passedclientid + \"_text\";\nvar field2 = document.getElementById(field2id);\nfield1.value = newvalue;\nfield2.value = newvalue;\n}", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 14 May 2016,\u00a009:51 AM
", "content": [{"c": "answered on 14 May 2016, 09:51 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Hello,

", "content": [{"c": "Hello,", "t": "text"}]}, {"type": "paragraph", "raw_content": "

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

", "content": [{"c": "I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Thanks

", "content": [{"c": "Thanks", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Milind Shevade

", "content": [{"c": "Milind Shevade", "t": "text"}]}]], "main_html": "
Joe\n asked on 18 Dec 2009,\u00a003:31 PM
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(\"ResourceInput\");\u00a0
resource.Skin\u00a0=\u00a0_skin;\u00a0
resource\u00a0=\u00a0LoadResources(resource);\u00a0
resource.SelectedIndexChanged\u00a0+=\u00a0new\u00a0RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);\u00a0
In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.
Thanks!

9 Answers, 1 is accepted

0
Hi Joe,

\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx


\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
\n answered on 22 Dec 2009,\u00a008:15 PM
Peter,

\nUnfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice....

\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.

\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\")\u00a0 which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class.

\nSo I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event.

\nThanks.\n
0
Hi Joe,

\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:

\n
<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var selectedValue = document.getElementById(\"selectedValue\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.value = eventArgs.get_item().get_text();\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0\u00a0\u00a0\u00a0<asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
\u00a0\u00a0\u00a0\u00a0<telerik:RadScheduler ID=\"RadScheduler1\"\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n

\nLet us know how it goes.

\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
\n answered on 06 Jan 2010,\u00a011:11 PM
Peter,

\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.

\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?

\nHere is my JS for reference:

function\u00a0LoadProjects(sender,\u00a0eventArgs)\u00a0{ \u00a0
var\u00a0selectedValue\u00a0=\u00a0document.getElementById('\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'); \u00a0
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); \u00a0
alert(selectedValue.value); \u00a0
}\u00a0

\nThanks again!\n
0
\n answered on 07 Jan 2010,\u00a009:39 PM
Peter,

\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.

\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working.

\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
0
\n answered on 01 Sep 2010,\u00a006:20 AM
Hi,

\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.

\nThanks

\nMilind
0
Hello Milind,

\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:

\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n


\nKind regards,
\n Peter
\nthe Telerik team\n\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
\"\"
Top achievements
Rank 2
Veteran
\n answered on 12 Nov 2011,\u00a002:17 PM
What I think is going on here is: (though not exactly related to the topic header)

\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)

So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)

\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\u00a0

\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label\u00a0=\u00a0\"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray\u00a0here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n

\nAnd your Javascript function\u00a0

\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
0
\n answered on 14 May 2016,\u00a009:51 AM

Hello,

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

Thanks

Milind Shevade

", "statics": {"paragraph": 39, "paragraph.text": 39, "table": 2, "title": 1, "code": 5, "image": 3}, "url": "https://www.telerik.com/forums/radcombobox-selectedindexchanged-inside-advanced-edit-template", "content": "Joe asked on 18 Dec 2009, 03:31 PM\n\nI have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms. I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:\n\n| RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(
\"ResourceInput\"
); |\n|---|\n| resource.Skin\u00a0=\u00a0_skin; |\n| resource\u00a0=\u00a0LoadResources(resource); |\n| resource.SelectedIndexChanged\u00a0+=\u00a0
new
RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged); |\n| |\n\nIn the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.\n\nThanks!\n\n## 9 Answers , 1 is accepted\n\n0\n\nHi Joe, That could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler: http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.\n\n0\n\nanswered on 22 Dec 2009, 08:15 PM\n\nPeter, Unfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice.... I tried implementing your suggestion, but I ran into 2 stumbling blocks. 1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method. 2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\") which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class. So I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event. Thanks.\n\n0\n\nHi Joe, I think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:\n\n```\n\n \n \n```\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }\n```\n\nLet us know how it goes. All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.\n\n0\n\nanswered on 06 Jan 2010, 11:11 PM\n\nPeter, Thanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help. When the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel? Here is my JS for reference:\n\n| function
LoadProjects(sender,\u00a0eventArgs)\u00a0{ |\n|---|\n| var
selectedValue\u00a0=
document
.getElementById(
'\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'
); |\n| selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); |\n| alert(selectedValue.value); |\n| } |\n\nThanks again!\n\n0\n\nanswered on 07 Jan 2010, 09:39 PM\n\nPeter, I never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work. I did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working. Thanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n\n0\n\nanswered on 01 Sep 2010, 06:20 AM\n\nHi, Can you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form. Thanks Milind\n\n0\n\nHello Milind, Did you try the code from the post on12/25/2009? Do you experience any problems with the following code?:\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }\n```\n\nKind regards, Peter the Telerik team Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items\n\n0\n\nGuss\n\nTop achievements\n\nRank 2\n\nVeteran\n\nanswered on 12 Nov 2011, 02:17 PM\n\nWhat I think is going on here is: (though not exactly related to the topic header) You have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data) So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events) Lets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n{\nRadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")\ntxtChildren.Visible = false;\nRadComboBox rcbChildren = new RadComboBox();\nrcbRegister.Label = \"Select Child:\"\nrcbChildren.Width = Unit.Pixel(250);\nrcbChildren.DataValueField = \"childIdFromDataSet\";\nrcbChildren.DataTextField = \"childTextFromDataSet\";\nrcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());\nrcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";\n//...........\n//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)\n//........\n//da.Fill(dt)//...........\nrcbChildren.DataSource = dt;\nrcbChildren.DataBind();\nif (txtChildren.Text != \"\") {\nrcbChildren.SelectedValue = txtChildren.Text;\nrcbChildren.Text = rcbRegister.txtChildren.Text;\n}\ntxtChildren.Parent.Controls.Add(rcbChildren);\n}\n}\n```\n\nAnd your Javascript function\n\n```\nfunction OnChildrenSelectedIndexChanged(sender, eventArgs) {\nvar newvalue = eventArgs.get_item().get_value();\nvar passedclientid = sender.get_attributes().getAttribute(\"theclientid\");\nvar field1 = document.getElementById(passedclientid);\nvar field2id = passedclientid + \"_text\";\nvar field2 = document.getElementById(field2id);\nfield1.value = newvalue;\nfield2.value = newvalue;\n}\n```\n\n0\n\nanswered on 14 May 2016, 09:51 AM\n\nHello,\n\nI referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?\n\nThanks\n\nMilind Shevade\n", "html": "\n\n\n\n \n\n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n RadComboBox SelectedIndexChanged inside Advanced Edit Template in UI for ASP.NET AJAX | Telerik Forums\n\n\n \n \n\n\n\n \n\n \n\n \n\n\n\n\n\n\n\n\n \n\n \n\n\n\n \n\n
\n \n\n \n\n\n\n \n \n \n\n\n\n\n
\n\n\n\n\n\n\n
\n\n\n
\n\t
\n\t\tThis is a migrated thread and some comments may be shown as answers.\n\t
\n
\n
\n
\n
\n
\n

RadComboBox SelectedIndexChanged inside Advanced Edit Template

\n\n
\n
\n\n
\n \n\t\n9 Answers\n \n \n515 Views\n
\n
\n
\n
\n
\n \n Scheduler\n \n
\n
\n\n
\n
\n
\n This is a migrated thread and some comments may be shown as answers.\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n Joe\n asked on 18 Dec 2009, 03:31 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

RadComboBox resource = (RadComboBox)e.Container.FindControl(\"ResourceInput\"); 
resource.Skin = _skin; 
resource = LoadResources(resource); 
resource.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged); 
 

In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.

Thanks!
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n

9 Answers, 1 is accepted

\n
\n
\n
\n Sort by\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\n\n\t\t\t\t\t\t\t
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 22 Dec 2009, 04:07 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi Joe,
\n
\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
\nhttp://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx
\n
\n
\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 22 Dec 2009, 08:15 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nUnfortunately, this is a requirement. I would much rather if it wasn't, but not my choice....
\n
\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.
\n
\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class. Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control. I tried adding the javascript through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%= CountriesRadComboBox.ClientID %>\")  which I don't have since the control only exists in the Template class.
\n
\nSo I might be pretty much stuck on this approach. Is there any other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow get access to the controls within the AdvancedForm Template through that event.
\n
\nThanks.\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 25 Dec 2009, 01:07 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi Joe,
\n
\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:
\n
\n
\n
<script type=\"text/javascript\">
\n
        function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
            var selectedValue = document.getElementById(\"selectedValue\");
\n
            selectedValue.value = eventArgs.get_item().get_text();  
\n
        }
\n
    </script>
\n
    <asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
    <telerik:RadScheduler ID=\"RadScheduler1\" 
\n
        runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
    {
\n
        if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
        {
\n
            RadComboBox resource = new RadComboBox();
\n
            resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
            resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
            resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
            resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
            resource.AutoPostBack = true;
\n
  
\n
            Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
            basicPanel.Controls.Add(resource);
\n
  
\n
            Label selectedValueLbl = new Label();
\n
            if (selectedValue.Value != null)
\n
                selectedValueLbl.Text = selectedValue.Value;
\n
            basicPanel.Controls.Add(selectedValueLbl);
\n
            selectedValue.Value = null;
\n
        }
\n
    }
\n
\n
\nLet us know how it goes.
\n
\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 06 Jan 2010, 11:11 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.
\n
\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field is still null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?
\n
\nHere is my JS for reference:
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
function LoadProjects(sender, eventArgs) {  
var selectedValue = document.getElementById('\" + lblResourceValue.ClientID + \"');  
selectedValue.value = eventArgs.get_item().get_text();  
alert(selectedValue.value);  
\n
\n
\nThanks again!\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 07 Jan 2010, 09:39 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.
\n
\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method working.
\n
\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 01 Sep 2010, 06:20 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi,
\n
\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.
\n
\nThanks
\n
\nMilind
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 06 Sep 2010, 05:05 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hello Milind,
\n
\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e) 
\n
    
\n
        if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert) 
\n
        
\n
            RadComboBox resource = new RadComboBox(); 
\n
            resource.Items.Add(new RadComboBoxItem(\"a\")); 
\n
            resource.Items.Add(new RadComboBoxItem(\"b\")); 
\n
            resource.Items.Add(new RadComboBoxItem(\"c\")); 
\n
            resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\"
\n
            resource.AutoPostBack = true
\n
    
\n
            Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\"); 
\n
            basicPanel.Controls.Add(resource); 
\n
    
\n
            Label selectedValueLbl = new Label(); 
\n
            if (selectedValue.Value != null
\n
                selectedValueLbl.Text = selectedValue.Value; 
\n
            basicPanel.Controls.Add(selectedValueLbl); 
\n
            selectedValue.Value = null
\n
        
\n
    }
\n
\n
\n
\nKind regards,
\n Peter
\nthe Telerik team\n
\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Guss\n\n
\n Top achievements\n
\n
\n \n Rank 2\n
\n\n
\n \n Veteran\n
\n
\n
\n
\n
\n
\n answered on 12 Nov 2011, 02:17 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
What I think is going on here is: (though not exactly related to the topic header)
\n
\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)
\n
\nSo, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)
\n
\n
\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time from the database (dynamic), based on a value from \"Parent\". 
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label = \"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n
\nAnd your Javascript function 
\n
\n
\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 14 May 2016, 09:51 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n

Hello,

\n

 

\n

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

\n

 

\n

Thanks

\n

Milind Shevade

\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n
\n\n \n
\n
\n \n
\n
\n
\n
\n\t
\n\t\t
\n\t\t\t\n \n\n\t\t
\n\t\t
\n\t\t\t
Drag and drop files here or browse to attach...
\n\t\t\t
Browse for files to attach...
\n\t\t\t
Supported file types: PNG, JPG, JPEG, ZIP, RAR, TXT. Max total file size - 20MB.
\n\t\t
\n\t
\n
\n\n\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Tags
\n \n Scheduler\n \n
\n\n
Asked by
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n\n
\n
Answers by
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\"\"
\n
\n Guss\n\n
\n Top achievements\n
\n
\n \n Rank 2\n
\n\n
\n \n Veteran\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Share this question
\n
\n \n
\n
\n or\n
\n
\n \n
\n \n
\n
\n\n\n
\n \n\n\n"} +{"content_list": [[{"type": "image", "raw_content": "\"\"", "content": {"url": "https://www.test.com/forums/images/avatarimages/default.gif", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Top achievements
", "content": [{"c": "Top achievements", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": "https://www.test.com/forums/images/forum-gamification/rank-01.svg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Rank 1
", "content": [{"c": "Rank 1", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Joe\n asked on 18 Dec 2009,\u00a003:31 PM
", "content": [{"c": "Joe asked on 18 Dec 2009, 03:31 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

", "content": [{"c": "I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms. I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:", "t": "text"}]}, {"type": "table", "raw_content": "
RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(\"ResourceInput\");\u00a0
resource.Skin\u00a0=\u00a0_skin;\u00a0
resource\u00a0=\u00a0LoadResources(resource);\u00a0
resource.SelectedIndexChanged\u00a0+=\u00a0new\u00a0RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);\u00a0
", "content": {"html": "
RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(<br>\"ResourceInput\"<br>);
resource.Skin\u00a0=\u00a0_skin;
resource\u00a0=\u00a0LoadResources(resource);
resource.SelectedIndexChanged\u00a0+=<br>new<br>RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);
", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.
", "content": [{"c": "In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Thanks!
", "content": [{"c": "Thanks!", "t": "text"}]}, {"type": "title", "raw_content": "

9 Answers, 1 is accepted

", "content": {"title_content": "9 Answers , 1 is accepted", "level": "2"}}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi Joe,

\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx


\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
", "content": [{"c": "Hi Joe, That could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler: http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 22 Dec 2009,\u00a008:15 PM
", "content": [{"c": "answered on 22 Dec 2009, 08:15 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nUnfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice....

\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.

\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\")\u00a0 which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class.

\nSo I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event.

\nThanks.\n
", "content": [{"c": "Peter, Unfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice.... I tried implementing your suggestion, but I ran into 2 stumbling blocks. 1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method. 2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\") which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class. So I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event. Thanks.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi Joe,

\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:

", "content": [{"c": "Hi Joe, I think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:", "t": "text"}]}, {"type": "code", "raw_content": "
\n
<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var selectedValue = document.getElementById(\"selectedValue\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.value = eventArgs.get_item().get_text();\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0\u00a0\u00a0\u00a0<asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
\u00a0\u00a0\u00a0\u00a0<telerik:RadScheduler ID=\"RadScheduler1\"\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n", "inline": false, "content": {"code_content": "\n \n ", "by": "tag_code"}}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "

\nLet us know how it goes.

\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
", "content": [{"c": "Let us know how it goes. All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 06 Jan 2010,\u00a011:11 PM
", "content": [{"c": "answered on 06 Jan 2010, 11:11 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.

\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?

\nHere is my JS for reference:

", "content": [{"c": "Peter, Thanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help. When the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel? Here is my JS for reference:", "t": "text"}]}, {"type": "table", "raw_content": "
function\u00a0LoadProjects(sender,\u00a0eventArgs)\u00a0{ \u00a0
var\u00a0selectedValue\u00a0=\u00a0document.getElementById('\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'); \u00a0
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); \u00a0
alert(selectedValue.value); \u00a0
}\u00a0
", "content": {"html": "
function<br>LoadProjects(sender,\u00a0eventArgs)\u00a0{
var<br>selectedValue\u00a0=<br>document<br>.getElementById(<br>'\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'<br>);
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text();
alert(selectedValue.value);
}
", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

\nThanks again!\n
", "content": [{"c": "Thanks again!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 07 Jan 2010,\u00a009:39 PM
", "content": [{"c": "answered on 07 Jan 2010, 09:39 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Peter,

\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.

\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working.

\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
", "content": [{"c": "Peter, I never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work. I did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working. Thanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 01 Sep 2010,\u00a006:20 AM
", "content": [{"c": "answered on 01 Sep 2010, 06:20 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hi,

\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.

\nThanks

\nMilind
", "content": [{"c": "Hi, Can you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form. Thanks Milind", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Hello Milind,

\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:

", "content": [{"c": "Hello Milind, Did you try the code from the post on12/25/2009? Do you experience any problems with the following code?:", "t": "text"}]}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "


\nKind regards,
\n Peter
\nthe Telerik team\n\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
", "content": [{"c": "Kind regards, Peter the Telerik team Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items", "t": "text"}]}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "https://www.test.com/forums/images/avatarimages/94dd90f7-4eeb-4369-8e56-8f101e514374gussprofilepic_m.jpg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
", "content": [{"c": "Guss", "t": "text"}]}, {"type": "paragraph", "raw_content": "
Top achievements
", "content": [{"c": "Top achievements", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": "https://www.test.com/forums/images/forum-gamification/rank-02.svg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Rank 2
", "content": [{"c": "Rank 2", "t": "text"}]}, {"type": "image", "raw_content": "", "content": {"url": "https://www.test.com/forums/images/forum-gamification/general-veteran.svg", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
Veteran
", "content": [{"c": "Veteran", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 12 Nov 2011,\u00a002:17 PM
", "content": [{"c": "answered on 12 Nov 2011, 02:17 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "
What I think is going on here is: (though not exactly related to the topic header)

\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)

So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)

\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\u00a0

", "content": [{"c": "What I think is going on here is: (though not exactly related to the topic header) You have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data) So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events) Lets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".", "t": "text"}]}, {"type": "code", "raw_content": "
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label\u00a0=\u00a0\"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray\u00a0here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n", "inline": false, "content": {"code_content": "protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n{\nRadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")\ntxtChildren.Visible = false;\nRadComboBox rcbChildren = new RadComboBox();\nrcbRegister.Label = \"Select Child:\"\nrcbChildren.Width = Unit.Pixel(250);\nrcbChildren.DataValueField = \"childIdFromDataSet\";\nrcbChildren.DataTextField = \"childTextFromDataSet\";\nrcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());\nrcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";\n//...........\n//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)\n//........\n//da.Fill(dt)//...........\nrcbChildren.DataSource = dt;\nrcbChildren.DataBind();\nif (txtChildren.Text != \"\") {\nrcbChildren.SelectedValue = txtChildren.Text;\nrcbChildren.Text = rcbRegister.txtChildren.Text;\n}\ntxtChildren.Parent.Controls.Add(rcbChildren);\n}\n}", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "

\nAnd your Javascript function\u00a0

", "content": [{"c": "And your Javascript function", "t": "text"}]}, {"type": "code", "raw_content": "
\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
", "inline": false, "content": {"code_content": "function OnChildrenSelectedIndexChanged(sender, eventArgs) {\nvar newvalue = eventArgs.get_item().get_value();\nvar passedclientid = sender.get_attributes().getAttribute(\"theclientid\");\nvar field1 = document.getElementById(passedclientid);\nvar field2id = passedclientid + \"_text\";\nvar field2 = document.getElementById(field2id);\nfield1.value = newvalue;\nfield2.value = newvalue;\n}", "by": "tag_code"}}, {"type": "paragraph", "raw_content": "
0
", "content": [{"c": "0", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\n answered on 14 May 2016,\u00a009:51 AM
", "content": [{"c": "answered on 14 May 2016, 09:51 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Hello,

", "content": [{"c": "Hello,", "t": "text"}]}, {"type": "paragraph", "raw_content": "

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

", "content": [{"c": "I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Thanks

", "content": [{"c": "Thanks", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Milind Shevade

", "content": [{"c": "Milind Shevade", "t": "text"}]}]], "main_html": "\"\"
Top achievements
Rank 1
Joe\n asked on 18 Dec 2009,\u00a003:31 PM
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(\"ResourceInput\");\u00a0
resource.Skin\u00a0=\u00a0_skin;\u00a0
resource\u00a0=\u00a0LoadResources(resource);\u00a0
resource.SelectedIndexChanged\u00a0+=\u00a0new\u00a0RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged);\u00a0
In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.
Thanks!

9 Answers, 1 is accepted

0
Hi Joe,

\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx


\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
\n answered on 22 Dec 2009,\u00a008:15 PM
Peter,

\nUnfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice....

\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.

\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\")\u00a0 which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class.

\nSo I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event.

\nThanks.\n
0
Hi Joe,

\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:

\n
<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var selectedValue = document.getElementById(\"selectedValue\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.value = eventArgs.get_item().get_text();\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0\u00a0\u00a0\u00a0<asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
\u00a0\u00a0\u00a0\u00a0<telerik:RadScheduler ID=\"RadScheduler1\"\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);
\n
\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n

\nLet us know how it goes.

\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
\n answered on 06 Jan 2010,\u00a011:11 PM
Peter,

\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.

\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?

\nHere is my JS for reference:

function\u00a0LoadProjects(sender,\u00a0eventArgs)\u00a0{ \u00a0
var\u00a0selectedValue\u00a0=\u00a0document.getElementById('\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'); \u00a0
selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); \u00a0
alert(selectedValue.value); \u00a0
}\u00a0

\nThanks again!\n
0
\n answered on 07 Jan 2010,\u00a009:39 PM
Peter,

\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.

\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working.

\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
0
\n answered on 01 Sep 2010,\u00a006:20 AM
Hi,

\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.

\nThanks

\nMilind
0
Hello Milind,

\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:

\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RadComboBox resource = new RadComboBox();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"a\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"b\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.Items.Add(new RadComboBoxItem(\"c\"));\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resource.AutoPostBack = true;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(resource);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Label selectedValueLbl = new Label();\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (selectedValue.Value != null)\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValueLbl.Text = selectedValue.Value;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0basicPanel.Controls.Add(selectedValueLbl);\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0selectedValue.Value = null;\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\n


\nKind regards,
\n Peter
\nthe Telerik team\n\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
\"\"
Top achievements
Rank 2
Veteran
\n answered on 12 Nov 2011,\u00a002:17 PM
What I think is going on here is: (though not exactly related to the topic header)

\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)

So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)

\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\u00a0

\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label\u00a0=\u00a0\"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray\u00a0here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n

\nAnd your Javascript function\u00a0

\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
0
\n answered on 14 May 2016,\u00a009:51 AM

Hello,

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

Thanks

Milind Shevade

", "statics": {"image": 5, "paragraph": 41, "paragraph.text": 41, "table": 2, "title": 1, "code": 5}, "url": "https://www.telerik.com/forums/radcombobox-selectedindexchanged-inside-advanced-edit-template", "content": "Top achievements\n\nRank 1\n\nJoe asked on 18 Dec 2009, 03:31 PM\n\nI have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms. I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:\n\n| RadComboBox\u00a0resource\u00a0=\u00a0(RadComboBox)e.Container.FindControl(
\"ResourceInput\"
); |\n|---|\n| resource.Skin\u00a0=\u00a0_skin; |\n| resource\u00a0=\u00a0LoadResources(resource); |\n| resource.SelectedIndexChanged\u00a0+=
new
RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged); |\n| |\n\nIn the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.\n\nThanks!\n\n## 9 Answers , 1 is accepted\n\n0\n\nHi Joe, That could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler: http://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.\n\n0\n\nanswered on 22 Dec 2009, 08:15 PM\n\nPeter, Unfortunately, this is a requirement.\u00a0I would\u00a0much rather if it wasn't, but not my choice.... I tried implementing your suggestion, but I ran into 2 stumbling blocks. 1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class.\u00a0Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method. 2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control.\u00a0I tried\u00a0adding the javascript\u00a0through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%=\u00a0CountriesRadComboBox.ClientID\u00a0%>\") which I don't have since\u00a0the control only exists\u00a0in\u00a0the Template\u00a0class. So I might be pretty much stuck on this approach. Is there any\u00a0other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow\u00a0get access to the controls within the AdvancedForm Template through that event. Thanks.\n\n0\n\nHi Joe, I think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:\n\n```\n\n \n \n```\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }\n```\n\nLet us know how it goes. All the best, Peter the Telerik team Instantly find answers to your questions on the new Telerik Support Portal. Watch a video on how to optimize your support resource searches and check out more tips on the blogs.\n\n0\n\nanswered on 06 Jan 2010, 11:11 PM\n\nPeter, Thanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help. When the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field\u00a0is still\u00a0null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel? Here is my JS for reference:\n\n| function
LoadProjects(sender,\u00a0eventArgs)\u00a0{ |\n|---|\n| var
selectedValue\u00a0=
document
.getElementById(
'\"\u00a0+\u00a0lblResourceValue.ClientID\u00a0+\u00a0\"'
); |\n| selectedValue.value\u00a0=\u00a0eventArgs.get_item().get_text(); |\n| alert(selectedValue.value); |\n| } |\n\nThanks again!\n\n0\n\nanswered on 07 Jan 2010, 09:39 PM\n\nPeter, I never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work. I did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method\u00a0working. Thanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n\n0\n\nanswered on 01 Sep 2010, 06:20 AM\n\nHi, Can you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form. Thanks Milind\n\n0\n\nHello Milind, Did you try the code from the post on12/25/2009? Do you experience any problems with the following code?:\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n {\n if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)\n {\n RadComboBox resource = new RadComboBox();\n resource.Items.Add(new RadComboBoxItem(\"a\"));\n resource.Items.Add(new RadComboBoxItem(\"b\"));\n resource.Items.Add(new RadComboBoxItem(\"c\"));\n resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";\n resource.AutoPostBack = true;\n\n Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");\n basicPanel.Controls.Add(resource);\n\n Label selectedValueLbl = new Label();\n if (selectedValue.Value != null)\n selectedValueLbl.Text = selectedValue.Value;\n basicPanel.Controls.Add(selectedValueLbl);\n selectedValue.Value = null;\n }\n }\n```\n\nKind regards, Peter the Telerik team Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items\n\n0\n\nGuss\n\nTop achievements\n\nRank 2\n\nVeteran\n\nanswered on 12 Nov 2011, 02:17 PM\n\nWhat I think is going on here is: (though not exactly related to the topic header) You have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data) So, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events) Lets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during\u00a0the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time\u00a0from the database (dynamic), based on a value from \"Parent\".\n\n```\nprotected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)\n{\nRadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")\ntxtChildren.Visible = false;\nRadComboBox rcbChildren = new RadComboBox();\nrcbRegister.Label = \"Select Child:\"\nrcbChildren.Width = Unit.Pixel(250);\nrcbChildren.DataValueField = \"childIdFromDataSet\";\nrcbChildren.DataTextField = \"childTextFromDataSet\";\nrcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());\nrcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";\n//...........\n//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)\n//........\n//da.Fill(dt)//...........\nrcbChildren.DataSource = dt;\nrcbChildren.DataBind();\nif (txtChildren.Text != \"\") {\nrcbChildren.SelectedValue = txtChildren.Text;\nrcbChildren.Text = rcbRegister.txtChildren.Text;\n}\ntxtChildren.Parent.Controls.Add(rcbChildren);\n}\n}\n```\n\nAnd your Javascript function\n\n```\nfunction OnChildrenSelectedIndexChanged(sender, eventArgs) {\nvar newvalue = eventArgs.get_item().get_value();\nvar passedclientid = sender.get_attributes().getAttribute(\"theclientid\");\nvar field1 = document.getElementById(passedclientid);\nvar field2id = passedclientid + \"_text\";\nvar field2 = document.getElementById(field2id);\nfield1.value = newvalue;\nfield2.value = newvalue;\n}\n```\n\n0\n\nanswered on 14 May 2016, 09:51 AM\n\nHello,\n\nI referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?\n\nThanks\n\nMilind Shevade\n", "html": "\n\n\n\n \n\n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n RadComboBox SelectedIndexChanged inside Advanced Edit Template in UI for ASP.NET AJAX | Telerik Forums\n\n\n \n \n\n\n\n \n\n \n\n \n\n\n\n\n\n\n\n\n \n\n \n\n\n\n \n\n
\n \n\n \n\n\n\n \n \n \n\n\n\n\n
\n\n\n\n\n\n\n
\n\n\n
\n\t
\n\t\tThis is a migrated thread and some comments may be shown as answers.\n\t
\n
\n
\n
\n
\n
\n

RadComboBox SelectedIndexChanged inside Advanced Edit Template

\n\n
\n
\n\n
\n \n\t\n9 Answers\n \n \n515 Views\n
\n
\n
\n
\n
\n \n Scheduler\n \n
\n
\n\n
\n
\n
\n This is a migrated thread and some comments may be shown as answers.\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n Joe\n asked on 18 Dec 2009, 03:31 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
I have Advanced Edit and Insert Form Templates built completely through code-behind for a RadScheduler. I am trying to implement cascading RadComboBoxes inside those forms.

I don't know how to find the controls in the forms from the SelectedIndexChanged events. In the FormCreated method when building the forms, I have the following:

RadComboBox resource = (RadComboBox)e.Container.FindControl(\"ResourceInput\"); 
resource.Skin = _skin; 
resource = LoadResources(resource); 
resource.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(resource_SelectedIndexChanged); 
 

In the SelectedIndexChanged events I don't have access to e.Container.FindControl. So I need to know how to find those controls in that event.

Thanks!
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n

9 Answers, 1 is accepted

\n
\n
\n
\n Sort by\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\n\n\t\t\t\t\t\t\t
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 22 Dec 2009, 04:07 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi Joe,
\n
\nThat could be a problem indeed when creating the controls dynamically. If this is not a must-have requirement, then you can use the approach from this kb article on related RadComboBox controls in the advanced form of RadScheduler:
\nhttp://www.telerik.com/support/kb/aspnet-ajax/scheduler/related-load-on-demand-radcomboboxes-in-the-advanced-form-of-radscheduler.aspx
\n
\n
\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 22 Dec 2009, 08:15 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nUnfortunately, this is a requirement. I would much rather if it wasn't, but not my choice....
\n
\nI tried implementing your suggestion, but I ran into 2 stumbling blocks.
\n
\n1. If I implement the ItemsRequested method in my custom AdvancedFormTemplate class, I no longer have visibility to the originating class, which is a SharePoint web part. In the custom toolpane for the web part, the user is able to select the location of the datasource. So all of that information is stored as properties in my web part class. Therefore, I am not able to load the RadComboBox through an ItemsRequested event in the custom Template class because I don't have access to the web part toolpane properties that give me the datasource. That's why I was trying to implement a SelectedIndexChanged event from the main web part class - added during the FormCreated scheduler method.
\n2. I am not able to add javascript code to the page through the custom Template class. In the example the javascript is added directly to the ascx control, but I am not using that control. I tried adding the javascript through the main web part class, but in the LoadCountries() function I need to have access to this: $find(\"<%= CountriesRadComboBox.ClientID %>\")  which I don't have since the control only exists in the Template class.
\n
\nSo I might be pretty much stuck on this approach. Is there any other way I might accomplish my goal? I think I am pretty much there implementing the SelectedIndexChanged event the way I originally tried if I could somehow get access to the controls within the AdvancedForm Template through that event.
\n
\nThanks.\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 25 Dec 2009, 01:07 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi Joe,
\n
\nI think there is a workaround which you can use for this case. How about handling OnClientSelectedIndexChanged to store the selected items's value or text in a hidden field. Then when FormCreated is fired again after selecting a combobox item, you can get the selected value from the hidden field and use it to populate the second combobox. Here is an example which updates a label, but the concept is the same:
\n
\n
\n
<script type=\"text/javascript\">
\n
        function OnClientSelectedIndexChanged(sender, eventArgs) {
\n
            var selectedValue = document.getElementById(\"selectedValue\");
\n
            selectedValue.value = eventArgs.get_item().get_text();  
\n
        }
\n
    </script>
\n
    <asp:HiddenField ID=\"selectedValue\" runat=\"server\" />
\n
    <telerik:RadScheduler ID=\"RadScheduler1\" 
\n
        runat=\"server\" onformcreated=\"RadScheduler1_FormCreated\"> </telerik:RadScheduler>
\n
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
    {
\n
        if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert)
\n
        {
\n
            RadComboBox resource = new RadComboBox();
\n
            resource.Items.Add(new RadComboBoxItem(\"a\"));
\n
            resource.Items.Add(new RadComboBoxItem(\"b\"));
\n
            resource.Items.Add(new RadComboBoxItem(\"c\"));
\n
            resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\";
\n
            resource.AutoPostBack = true;
\n
  
\n
            Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\");
\n
            basicPanel.Controls.Add(resource);
\n
  
\n
            Label selectedValueLbl = new Label();
\n
            if (selectedValue.Value != null)
\n
                selectedValueLbl.Text = selectedValue.Value;
\n
            basicPanel.Controls.Add(selectedValueLbl);
\n
            selectedValue.Value = null;
\n
        }
\n
    }
\n
\n
\nLet us know how it goes.
\n
\nAll the best,
\n Peter
\nthe Telerik team\n

\nInstantly find answers to your questions on the new Telerik Support Portal.
\nWatch a video on how to optimize your support resource searches and check out more tips on the blogs.
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 06 Jan 2010, 11:11 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nThanks for the great information, as always. I have implemented your approach. However, I am having 1 small issue. I know it's not related to the RadComboBox or the RadScheduler, but I'm hoping you can still help.
\n
\nWhen the OnClientSelectedIndexChanged event is fired, the value is pulled out of the RadComboBox and placed into the hidden field. I have set a JS Alert to verify. But during the FormCreated event, the value of the hidden field is still null. I'm not sure if it's a viewstate issue (unlikely as I have other controls that don't have the problem). Or if it's an AJAX/UpdatePanel/Javascript interaction problem. The hidden field is inside the update panel, as is the scheduler and hence the combo's. I'm not very experienced with Javascript so I don't know what else I might need to do. Do I need to somehow call a refresh or update on the UpdatePanel?
\n
\nHere is my JS for reference:
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
function LoadProjects(sender, eventArgs) {  
var selectedValue = document.getElementById('\" + lblResourceValue.ClientID + \"');  
selectedValue.value = eventArgs.get_item().get_text();  
alert(selectedValue.value);  
\n
\n
\nThanks again!\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 07 Jan 2010, 09:39 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Peter,
\n
\nI never did find an answer to this. I tried every trick in the book, changed control types, tried refreshing the update panel, tried adding a button to call a server side event and pull the value and nothing seemed to work.
\n
\nI did however identify an alternate solution. Now that I am an expert with custom Advanced Form Templates :), I realized I could add hidden labels to that form. Then populate the values from my custom web part to those labels during FormCreated. That allowed me all the parameters I needed to run a standard SelectedIndexChanged event from the custom form class itself. I was able to get that method working.
\n
\nThanks again for all your help and advice with such a complex setup and advanced functionality. Much appreciated!\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 01 Sep 2010, 06:20 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hi,
\n
\nCan you post your code here ? I am finding it tough to add combobox at runtime in radscheduler advance edit form.
\n
\nThanks
\n
\nMilind
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n answered on 06 Sep 2010, 05:05 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
Hello Milind,
\n
\nDid you try the code from the post on12/25/2009? Do you experience any problems with the following code?:
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e) 
\n
    
\n
        if (e.Container.Mode == SchedulerFormMode.AdvancedEdit || e.Container.Mode == SchedulerFormMode.AdvancedInsert) 
\n
        
\n
            RadComboBox resource = new RadComboBox(); 
\n
            resource.Items.Add(new RadComboBoxItem(\"a\")); 
\n
            resource.Items.Add(new RadComboBoxItem(\"b\")); 
\n
            resource.Items.Add(new RadComboBoxItem(\"c\")); 
\n
            resource.OnClientSelectedIndexChanged = \"OnClientSelectedIndexChanged\"
\n
            resource.AutoPostBack = true
\n
    
\n
            Panel basicPanel = (Panel)e.Container.FindControl(\"BasicControlsPanel\"); 
\n
            basicPanel.Controls.Add(resource); 
\n
    
\n
            Label selectedValueLbl = new Label(); 
\n
            if (selectedValue.Value != null
\n
                selectedValueLbl.Text = selectedValue.Value; 
\n
            basicPanel.Controls.Add(selectedValueLbl); 
\n
            selectedValue.Value = null
\n
        
\n
    }
\n
\n
\n
\nKind regards,
\n Peter
\nthe Telerik team\n
\n
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Guss\n\n
\n Top achievements\n
\n
\n \n Rank 2\n
\n\n
\n \n Veteran\n
\n
\n
\n
\n
\n
\n answered on 12 Nov 2011, 02:17 PM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n
What I think is going on here is: (though not exactly related to the topic header)
\n
\nYou have an attribute in RadScheduler, for which you do not want the default text control, but your own control, like a Combobox that could be populated with data as needed (parameterized data, based on other data)
\n
\nSo, first, do not create a resource, that comboboxes that is created by default, is way to difficult to manipulate on server side, rather use a attribute, which could be hidden (and populated with another controls events)
\n
\n
\nLets assume you have a the following attibutes \"Parent\" and \"Children\". You know what \"Parent\"'s value is, before or during the FormCreated event, and you want \"Children\" to be a combobox with items retrieved each time from the database (dynamic), based on a value from \"Parent\". 
\n
\n
\n
protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
\n
{
\n
RadTextBox txtChildren = (RadTextBox)e.Container.FindControl(\"AttrChildren\")
\n
txtChildren.Visible = false;
\n
RadComboBox rcbChildren = new RadComboBox();
\nrcbRegister.Label = \"Select Child:\"
\n
rcbChildren.Width = Unit.Pixel(250);
\n
rcbChildren.DataValueField = \"childIdFromDataSet\";
\n
rcbChildren.DataTextField = \"childTextFromDataSet\";
\n
rcbChildren.Attributes.Add(\"theclientid\", txtChildren.ClientID.ToString());
\n
rcbChildren.OnClientSelectedIndexChanged = \"OnChildrenSelectedIndexChanged\";
\n
//...........
\n
//create you DataTable,HasTable,2DArray here, and use your parameters (Parent's value in this example)
\n
//........
\n//da.Fill(dt)
\n
//...........
\n
rcbChildren.DataSource = dt;
\n
rcbChildren.DataBind();
\n
if (txtChildren.Text != \"\") {
\n
rcbChildren.SelectedValue = txtChildren.Text;
\n
rcbChildren.Text = rcbRegister.txtChildren.Text;
\n
}
\n
txtChildren.Parent.Controls.Add(rcbChildren);
\n
}
\n
}
\n
\n
\nAnd your Javascript function 
\n
\n
\n
function OnChildrenSelectedIndexChanged(sender, eventArgs) {
\n
var newvalue = eventArgs.get_item().get_value();
\n
var passedclientid = sender.get_attributes().getAttribute(\"theclientid\");
\n
var field1 = document.getElementById(passedclientid);
\n
var field2id = passedclientid + \"_text\";
\n
var field2 = document.getElementById(field2id);
\n
field1.value = newvalue;
\n
field2.value = newvalue;
\n
}
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
0
\n\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n answered on 14 May 2016, 09:51 AM\n
\n
\n
\n\n \n \n\n
\n
\n
\n
\n\n

Hello,

\n

 

\n

I referred your answer above copied and pasted the code in my web page. The page gets compiled without error but the combobox which is added is not visible in edit or insert mode. I have set viewstate to false, is it because of that ?

\n

 

\n

Thanks

\n

Milind Shevade

\n
\n\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n
\n\n \n
\n
\n \n
\n
\n
\n
\n\t
\n\t\t
\n\t\t\t\n \n\n\t\t
\n\t\t
\n\t\t\t
Drag and drop files here or browse to attach...
\n\t\t\t
Browse for files to attach...
\n\t\t\t
Supported file types: PNG, JPG, JPEG, ZIP, RAR, TXT. Max total file size - 20MB.
\n\t\t
\n\t
\n
\n\n\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Tags
\n \n Scheduler\n \n
\n\n
Asked by
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n\n
\n
Answers by
\n
\n
\"\"
\n
\n Peter\n
\n Telerik team\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Joe\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\"\"
\n
\n Guss\n\n
\n Top achievements\n
\n
\n \n Rank 2\n
\n\n
\n \n Veteran\n
\n
\n
\n
\n
\n
\n
\"\"
\n
\n Milind\n\n
\n Top achievements\n
\n
\n \n Rank 1\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Share this question
\n
\n \n
\n
\n or\n
\n
\n \n
\n \n
\n
\n\n\n
\n \n\n\n"} diff --git a/bench/data/groundtruth/code_16.jsonl b/bench/data/groundtruth/code_16.jsonl index 92d3e91c..b2a1e441 100644 --- a/bench/data/groundtruth/code_16.jsonl +++ b/bench/data/groundtruth/code_16.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "code", "raw_content": "
\n
<%@ page language=\"java\"\u00a0import=\"java.util.*\"\u00a0pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
\u00a0
\n
<!DOCTYPE HTML PUBLIC\u00a0\"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
\u00a0\u00a0<head>
\n
\u00a0\u00a0\u00a0\u00a0<title>My JSP\u00a0'register.jsp'\u00a0starting page</title>\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</head>
\n
\u00a0\u00a0
\n
\u00a0\u00a0<body>
\n
\u00a0\u00a0<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function validate(){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.uname.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.upwd.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0registerForm.submit();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0<form\u00a0 name=\"registerForm\"\u00a0action=\"DoregServlet\"\u00a0method=\"post\">
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u7528\u6237\u540d:<input type=\"text\"\u00a0name=\"uname\"><br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u5bc6\u00a0\u00a0 \u7801: <input type=\"password\"\u00a0name=\"upwd\"> <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<input type=\"submit\"\u00a0value=\"\u6ce8\u518c\"\u00a0>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
\u00a0\u00a0\u00a0\u00a0</form>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</body>
\n
</html>
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet3\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet3() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost (request, response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao usersDao =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0i=usersDao.reg(uname, upwd);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(i>0){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=login.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0Doregservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Doregservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao ud =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(ud.register(uname, upwd) >\u00a00) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getSession().setAttribute(\"uname\", uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.MsgDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet5\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet5() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost(request,\u00a0 response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0id=Integer.parseInt(request.getParameter(\"id\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md=new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.delMail(id);\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.sendRedirect(\"main2.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.entity.Msg;
\n
\u00a0
\n
public\u00a0class\u00a0Dowriteservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Dowriteservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = (String) request.getSession().getAttribute(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String sendto = request.getParameter(\"receiver\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String title = request.getParameter(\"title\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String content = request.getParameter(\"content\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Msg m =\u00a0new\u00a0Msg();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setMsgcontent(content);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setUsername(uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setSendto(sendto);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setTitle(title);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.addMsg(m);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);\u00a0\u00a0\u00a0\u00a0 }
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n\n
\n\n", "inline": false, "content": {"code_content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n\n\n \n My JSP 'register.jsp' starting page\n \n\n \n \n\n
\n\n \u7528\u6237\u540d:
\n \u5bc6 \u7801:
\n \n \u767b\u5f55\n
\n\n \n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.UsersDao;\n\npublic class servlet3 extends HttpServlet {\n\n public servlet3() {\n super();\n }\n\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n doPost (request, response);\n\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n UsersDao usersDao = new UsersDao();\n int i=usersDao.reg(uname, upwd);\n if(i>0){\n\n response.setHeader(\"refresh\", \"2;url=login.jsp\");\n }else{\n\n response.setHeader(\"refresh\", \"2;url=reg.jsp\");\n }\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.dao.UsersDao;\n\npublic class Doregservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Doregservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n\n UsersDao ud = new UsersDao();\n MsgDao md = new MsgDao();\n if (ud.register(uname, upwd) > 0) {\n request.getSession().setAttribute(\"uname\", uname);\n request.getRequestDispatcher(\"denglu.jsp\").forward(request,\n response);\n } else {\n out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");\n response.setHeader(\"refresh\", \"3;url=reg.jsp\");\n }\n }\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response);\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.MsgDao;\n\npublic class servlet5 extends HttpServlet {\n\n public servlet5() {\n super();\n }\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doPost(request, response);\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n request.setCharacterEncoding(\"utf-8\");\n\n int id=Integer.parseInt(request.getParameter(\"id\"));\n MsgDao md=new MsgDao();\n md.delMail(id);\n response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"2;url=main.jsp\");\n response.sendRedirect(\"main2.jsp\");\n }\n\n\n public void init() throws ServletException {\n\n }\n\n}\n\n\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.entity.Msg;\n\npublic class Dowriteservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Dowriteservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = (String) request.getSession().getAttribute(\"uname\");\n String sendto = request.getParameter(\"receiver\");\n String title = request.getParameter(\"title\");\n String content = request.getParameter(\"content\");\n\n Msg m = new Msg();\n m.setMsgcontent(content);\n m.setUsername(uname);\n m.setSendto(sendto);\n m.setTitle(title);\n\n MsgDao md = new MsgDao();\n md.addMsg(m);\n\n out.print(\"\u53d1\u9001\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"3;url=main.jsp\");\n }\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response); }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n }\n\n}", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": "
", "is_complex": false}}, {"type": "paragraph", "raw_content": "
posted @\n2022-05-29 20:20\u5f90\u6d9b%\u00a0\n\u9605\u8bfb(70)\u00a0\n\u8bc4\u8bba(0)\u00a0\n\u7f16\u8f91\u6536\u85cf\u4e3e\u62a5
", "content": [{"c": "posted @ 2022-05-29 20:20 \u5f90\u6d9b% \u9605\u8bfb( 70)\u00a0\n\u8bc4\u8bba( 0) \u7f16\u8f91 \u6536\u85cf \u4e3e\u62a5", "t": "text"}]}]], "main_html": "
\n
<%@ page language=\"java\"\u00a0import=\"java.util.*\"\u00a0pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
\u00a0
\n
<!DOCTYPE HTML PUBLIC\u00a0\"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
\u00a0\u00a0<head>
\n
\u00a0\u00a0\u00a0\u00a0<title>My JSP\u00a0'register.jsp'\u00a0starting page</title>\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</head>
\n
\u00a0\u00a0
\n
\u00a0\u00a0<body>
\n
\u00a0\u00a0<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function validate(){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.uname.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.upwd.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0registerForm.submit();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0<form\u00a0 name=\"registerForm\"\u00a0action=\"DoregServlet\"\u00a0method=\"post\">
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u7528\u6237\u540d:<input type=\"text\"\u00a0name=\"uname\"><br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u5bc6\u00a0\u00a0 \u7801: <input type=\"password\"\u00a0name=\"upwd\"> <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<input type=\"submit\"\u00a0value=\"\u6ce8\u518c\"\u00a0>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
\u00a0\u00a0\u00a0\u00a0</form>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</body>
\n
</html>
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet3\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet3() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost (request, response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao usersDao =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0i=usersDao.reg(uname, upwd);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(i>0){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=login.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0Doregservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Doregservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao ud =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(ud.register(uname, upwd) >\u00a00) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getSession().setAttribute(\"uname\", uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.MsgDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet5\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet5() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost(request,\u00a0 response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0id=Integer.parseInt(request.getParameter(\"id\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md=new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.delMail(id);\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.sendRedirect(\"main2.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.entity.Msg;
\n
\u00a0
\n
public\u00a0class\u00a0Dowriteservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Dowriteservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = (String) request.getSession().getAttribute(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String sendto = request.getParameter(\"receiver\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String title = request.getParameter(\"title\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String content = request.getParameter(\"content\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Msg m =\u00a0new\u00a0Msg();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setMsgcontent(content);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setUsername(uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setSendto(sendto);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setTitle(title);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.addMsg(m);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);\u00a0\u00a0\u00a0\u00a0 }
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n\n
\n\n
posted @\n2022-05-29 20:20\u5f90\u6d9b%\u00a0\n\u9605\u8bfb(70)\u00a0\n\u8bc4\u8bba(0)\u00a0\n\u7f16\u8f91\u6536\u85cf\u4e3e\u62a5
", "statics": {"code": 1, "table": 1, "paragraph": 1, "paragraph.text": 1}, "url": "https://www.cnblogs.com/xu-tao/p/16324793.html", "content": "```\n<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n\n\n \n My JSP 'register.jsp' starting page\n \n\n \n \n\n
\n\n \u7528\u6237\u540d:
\n \u5bc6 \u7801:
\n \n \u767b\u5f55\n
\n\n \n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.UsersDao;\n\npublic class servlet3 extends HttpServlet {\n\n public servlet3() {\n super();\n }\n\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n doPost (request, response);\n\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n UsersDao usersDao = new UsersDao();\n int i=usersDao.reg(uname, upwd);\n if(i>0){\n\n response.setHeader(\"refresh\", \"2;url=login.jsp\");\n }else{\n\n response.setHeader(\"refresh\", \"2;url=reg.jsp\");\n }\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.dao.UsersDao;\n\npublic class Doregservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Doregservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n\n UsersDao ud = new UsersDao();\n MsgDao md = new MsgDao();\n if (ud.register(uname, upwd) > 0) {\n request.getSession().setAttribute(\"uname\", uname);\n request.getRequestDispatcher(\"denglu.jsp\").forward(request,\n response);\n } else {\n out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");\n response.setHeader(\"refresh\", \"3;url=reg.jsp\");\n }\n }\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response);\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.MsgDao;\n\npublic class servlet5 extends HttpServlet {\n\n public servlet5() {\n super();\n }\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doPost(request, response);\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n request.setCharacterEncoding(\"utf-8\");\n\n int id=Integer.parseInt(request.getParameter(\"id\"));\n MsgDao md=new MsgDao();\n md.delMail(id);\n response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"2;url=main.jsp\");\n response.sendRedirect(\"main2.jsp\");\n }\n\n\n public void init() throws ServletException {\n\n }\n\n}\n\n\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.entity.Msg;\n\npublic class Dowriteservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Dowriteservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = (String) request.getSession().getAttribute(\"uname\");\n String sendto = request.getParameter(\"receiver\");\n String title = request.getParameter(\"title\");\n String content = request.getParameter(\"content\");\n\n Msg m = new Msg();\n m.setMsgcontent(content);\n m.setUsername(uname);\n m.setSendto(sendto);\n m.setTitle(title);\n\n MsgDao md = new MsgDao();\n md.addMsg(m);\n\n out.print(\"\u53d1\u9001\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"3;url=main.jsp\");\n }\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response); }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n }\n\n}\n```\n\nposted @ 2022-05-29 20:20 \u5f90\u6d9b% \u9605\u8bfb( 70)\u00a0\n\u8bc4\u8bba( 0) \u7f16\u8f91 \u6536\u85cf \u4e3e\u62a5\n", "html": "\n\n\n\n \n \n \n\n \n \n \n \n \n \u7b2c\u5341\u4e09\u5468\u4f5c\u4e1a - \u5f90\u6d9b% - \u535a\u5ba2\u56ed\n \n \n\n \n\n\n \n \n\n\n \n\n \n \n \n\n \n\n \n \n \n \n\n\n\n \n
\n \n \"\"\n \n \n
\n
\n \n
\n\n\n\n \n
\n
\n\t
\n \"\u8fd4\u56de\u4e3b\u9875\"\n\n\n

\u5f90\u6d9b%\n

\n

\n\n\n\n\n\n\t
\n\t
\n\n\n\n\n\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n
\n\t
\n\t
\n\t\t
\n \n
\n
\n

\n \n \u7b2c\u5341\u4e09\u5468\u4f5c\u4e1a\n\n\n\n\n

\n
\n
\n
\n
\n\n\n\n\n\n\n\n\n\n\n
\n
1
\n
2
\n
3
\n
4
\n
5
\n
6
\n
7
\n
8
\n
9
\n
10
\n
11
\n
12
\n
13
\n
14
\n
15
\n
16
\n
17
\n
18
\n
19
\n
20
\n
21
\n
22
\n
23
\n
24
\n
25
\n
26
\n
27
\n
28
\n
29
\n
30
\n
31
\n
32
\n
33
\n
34
\n
35
\n
36
\n
37
\n
38
\n
39
\n
40
\n
41
\n
42
\n
43
\n
44
\n
45
\n
46
\n
47
\n
48
\n
49
\n
50
\n
51
\n
52
\n
53
\n
54
\n
55
\n
56
\n
57
\n
58
\n
59
\n
60
\n
61
\n
62
\n
63
\n
64
\n
65
\n
66
\n
67
\n
68
\n
69
\n
70
\n
71
\n
72
\n
73
\n
74
\n
75
\n
76
\n
77
\n
78
\n
79
\n
80
\n
81
\n
82
\n
83
\n
84
\n
85
\n
86
\n
87
\n
88
\n
89
\n
90
\n
91
\n
92
\n
93
\n
94
\n
95
\n
96
\n
97
\n
98
\n
99
\n
100
\n
101
\n
102
\n
103
\n
104
\n
105
\n
106
\n
107
\n
108
\n
109
\n
110
\n
111
\n
112
\n
113
\n
114
\n
115
\n
116
\n
117
\n
118
\n
119
\n
120
\n
121
\n
122
\n
123
\n
124
\n
125
\n
126
\n
127
\n
128
\n
129
\n
130
\n
131
\n
132
\n
133
\n
134
\n
135
\n
136
\n
137
\n
138
\n
139
\n
140
\n
141
\n
142
\n
143
\n
144
\n
145
\n
146
\n
147
\n
148
\n
149
\n
150
\n
151
\n
152
\n
153
\n
154
\n
155
\n
156
\n
157
\n
158
\n
159
\n
160
\n
161
\n
162
\n
163
\n
164
\n
165
\n
166
\n
167
\n
168
\n
169
\n
170
\n
171
\n
172
\n
173
\n
174
\n
175
\n
176
\n
177
\n
178
\n
179
\n
180
\n
181
\n
182
\n
183
\n
184
\n
185
\n
186
\n
187
\n
188
\n
189
\n
190
\n
191
\n
192
\n
193
\n
194
\n
195
\n
196
\n
197
\n
198
\n
199
\n
200
\n
201
\n
202
\n
203
\n
204
\n
205
\n
206
\n
207
\n
208
\n
209
\n
210
\n
211
\n
212
\n
213
\n
214
\n
215
\n
216
\n
217
\n
218
\n
219
\n
220
\n
221
\n
222
\n
223
\n
224
\n
225
\n
226
\n
227
\n
228
\n
229
\n
230
\n
231
\n
232
\n
233
\n
234
\n
235
\n
236
\n
237
\n
238
\n
239
\n
240
\n
241
\n
242
\n
243
\n
244
\n
245
\n
246
\n
247
\n
248
\n
249
\n
250
\n
251
\n
252
\n
253
\n
254
\n
255
\n
256
\n
257
\n
258
\n
259
\n
260
\n
261
\n
262
\n
263
\n
264
\n
265
\n
266
\n
267
\n
268
\n
269
\n
270
\n
271
\n
272
\n
273
\n
274
\n
275
\n
276
\n
277
\n
278
\n
279
\n
280
\n
281
\n
282
\n
283
\n
284
\n
285
\n
286
\n
287
\n
288
\n
289
\n
290
\n
291
\n
292
\n
293
\n
294
\n
295
\n
296
\n
297
\n
298
\n
299
\n\n
\n
\n
<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
 
\n
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
  <head>
\n
    <title>My JSP 'register.jsp' starting page</title>   
\n
  </head>
\n
  
\n
  <body>
\n
  <script type=\"text/javascript\">
\n
        function validate(){
\n
            if(registerForm.uname.value==\"\"){
\n
                alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
                return;
\n
            }
\n
            if(registerForm.upwd.value==\"\"){
\n
                alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
                return;
\n
            }
\n
            registerForm.submit();
\n
        }
\n
    </script>
\n
 
\n
    <form  name=\"registerForm\" action=\"DoregServlet\" method=\"post\">
\n
 
\n
        \u7528\u6237\u540d:<input type=\"text\" name=\"uname\"><br>
\n
        \u5bc6   \u7801: <input type=\"password\" name=\"upwd\"> <br>
\n
        <input type=\"submit\" value=\"\u6ce8\u518c\" >
\n
        <a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
    </form>
\n
     
\n
  </body>
\n
</html>
\n
 
\n
  
\n
 
\n
package com.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.dao.UsersDao;
\n
 
\n
public class servlet3 extends HttpServlet {
\n
 
\n
    public servlet3() {
\n
        super();
\n
    }
\n
 
\n
     
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
        doPost (request, response);
\n
         
\n
    }
\n
 
\n
     
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        String uname = request.getParameter(\"uname\");
\n
        String upwd = request.getParameter(\"upwd\");
\n
        UsersDao usersDao = new UsersDao();
\n
        int i=usersDao.reg(uname, upwd);
\n
        if(i>0){
\n
         
\n
            response.setHeader(\"refresh\"\"2;url=login.jsp\");
\n
        }else{
\n
     
\n
            response.setHeader(\"refresh\"\"2;url=reg.jsp\");
\n
        }
\n
    }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
        // Put your code here
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.sf.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.sf.dao.MsgDao;
\n
import com.sf.dao.UsersDao;
\n
 
\n
public class Doregservlet extends HttpServlet {
\n
 
\n
    /**
\n
     * Constructor of the object.
\n
     */
\n
    public Doregservlet() {
\n
        super();
\n
    }
\n
 
\n
    /**
\n
     * Destruction of the servlet. <br>
\n
     */
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        response.setContentType(\"text/html\");
\n
        PrintWriter out = response.getWriter();
\n
        request.setCharacterEncoding(\"utf-8\");
\n
        String uname = request.getParameter(\"uname\");
\n
        String upwd = request.getParameter(\"upwd\");
\n
 
\n
        UsersDao ud = new UsersDao();
\n
        MsgDao md = new MsgDao();
\n
        if (ud.register(uname, upwd) > 0) {
\n
            request.getSession().setAttribute(\"uname\", uname);
\n
            request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
                    response);
\n
        else {
\n
            out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
            response.setHeader(\"refresh\"\"3;url=reg.jsp\");
\n
        }
\n
    }
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doGet(request,response);
\n
    }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
        // Put your code here
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.dao.MsgDao;
\n
 
\n
public class servlet5 extends HttpServlet {
\n
 
\n
    public servlet5() {
\n
        super();
\n
    }
\n
 
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
     
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doPost(request,  response);
\n
    }
\n
 
\n
     
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        request.setCharacterEncoding(\"utf-8\");
\n
          
\n
        int id=Integer.parseInt(request.getParameter(\"id\"));
\n
        MsgDao md=new MsgDao();
\n
        md.delMail(id);   
\n
        response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
        response.setHeader(\"refresh\"\"2;url=main.jsp\");
\n
        response.sendRedirect(\"main2.jsp\");
\n
    }
\n
 
\n
     
\n
    public void init() throws ServletException {
\n
     
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.sf.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.sf.dao.MsgDao;
\n
import com.sf.entity.Msg;
\n
 
\n
public class Dowriteservlet extends HttpServlet {
\n
 
\n
    /**
\n
     * Constructor of the object.
\n
     */
\n
    public Dowriteservlet() {
\n
        super();
\n
    }
\n
 
\n
    /**
\n
     * Destruction of the servlet. <br>
\n
     */
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        response.setContentType(\"text/html\");
\n
        PrintWriter out = response.getWriter();
\n
        request.setCharacterEncoding(\"utf-8\");
\n
        String uname = (String) request.getSession().getAttribute(\"uname\");
\n
        String sendto = request.getParameter(\"receiver\");
\n
        String title = request.getParameter(\"title\");
\n
        String content = request.getParameter(\"content\");
\n
 
\n
        Msg m = new Msg();
\n
        m.setMsgcontent(content);
\n
        m.setUsername(uname);
\n
        m.setSendto(sendto);
\n
        m.setTitle(title);
\n
 
\n
        MsgDao md = new MsgDao();
\n
        md.addMsg(m);
\n
 
\n
        out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
        response.setHeader(\"refresh\"\"3;url=main.jsp\");
\n
    }
\n
 
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doGet(request,response);     }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
    }
\n
 
\n
}
\n\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
posted @\n2022-05-29 20:20 \n\u5f90\u6d9b% \n\u9605\u8bfb(70) \n\u8bc4\u8bba(0) \n\u7f16\u8f91 \n\u6536\u85cf \n\u4e3e\u62a5\n
\n
\n\n\n
\n
\n\n\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n \"\"\n \n \n
\n
\n
\n
\n \n
\n\n\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n

\u516c\u544a

\n
\n
\n
\n
\n\n\n\n
\n
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n \n\t\t\t
\n\t\t
\n\t
\n\t
\n\t
\n\t
\n\t
\n\t\t\nCopyright © 2025 \u5f90\u6d9b%\n
Powered by .NET 9.0 on Kubernetes\n\n\n\n\t
\n
\n\n\n\n\n\n \n \n\n\n\n\n"} +{"content_list": [[{"type": "code", "raw_content": "
\n
<%@ page language=\"java\"\u00a0import=\"java.util.*\"\u00a0pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
\u00a0
\n
<!DOCTYPE HTML PUBLIC\u00a0\"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
\u00a0\u00a0<head>
\n
\u00a0\u00a0\u00a0\u00a0<title>My JSP\u00a0'register.jsp'\u00a0starting page</title>\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</head>
\n
\u00a0\u00a0
\n
\u00a0\u00a0<body>
\n
\u00a0\u00a0<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function validate(){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.uname.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.upwd.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0registerForm.submit();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0<form\u00a0 name=\"registerForm\"\u00a0action=\"DoregServlet\"\u00a0method=\"post\">
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u7528\u6237\u540d:<input type=\"text\"\u00a0name=\"uname\"><br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u5bc6\u00a0\u00a0 \u7801: <input type=\"password\"\u00a0name=\"upwd\"> <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<input type=\"submit\"\u00a0value=\"\u6ce8\u518c\"\u00a0>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
\u00a0\u00a0\u00a0\u00a0</form>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</body>
\n
</html>
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet3\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet3() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost (request, response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao usersDao =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0i=usersDao.reg(uname, upwd);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(i>0){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=login.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0Doregservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Doregservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao ud =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(ud.register(uname, upwd) >\u00a00) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getSession().setAttribute(\"uname\", uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.MsgDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet5\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet5() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost(request,\u00a0 response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0id=Integer.parseInt(request.getParameter(\"id\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md=new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.delMail(id);\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.sendRedirect(\"main2.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.entity.Msg;
\n
\u00a0
\n
public\u00a0class\u00a0Dowriteservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Dowriteservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = (String) request.getSession().getAttribute(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String sendto = request.getParameter(\"receiver\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String title = request.getParameter(\"title\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String content = request.getParameter(\"content\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Msg m =\u00a0new\u00a0Msg();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setMsgcontent(content);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setUsername(uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setSendto(sendto);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setTitle(title);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.addMsg(m);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);\u00a0\u00a0\u00a0\u00a0 }
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n\n
\n\n", "inline": false, "content": {"code_content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n\n\n \n My JSP 'register.jsp' starting page\n \n\n \n \n\n
\n\n \u7528\u6237\u540d:
\n \u5bc6 \u7801:
\n \n \u767b\u5f55\n
\n\n \n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.UsersDao;\n\npublic class servlet3 extends HttpServlet {\n\n public servlet3() {\n super();\n }\n\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n doPost (request, response);\n\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n UsersDao usersDao = new UsersDao();\n int i=usersDao.reg(uname, upwd);\n if(i>0){\n\n response.setHeader(\"refresh\", \"2;url=login.jsp\");\n }else{\n\n response.setHeader(\"refresh\", \"2;url=reg.jsp\");\n }\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.dao.UsersDao;\n\npublic class Doregservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Doregservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n\n UsersDao ud = new UsersDao();\n MsgDao md = new MsgDao();\n if (ud.register(uname, upwd) > 0) {\n request.getSession().setAttribute(\"uname\", uname);\n request.getRequestDispatcher(\"denglu.jsp\").forward(request,\n response);\n } else {\n out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");\n response.setHeader(\"refresh\", \"3;url=reg.jsp\");\n }\n }\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response);\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.MsgDao;\n\npublic class servlet5 extends HttpServlet {\n\n public servlet5() {\n super();\n }\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doPost(request, response);\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n request.setCharacterEncoding(\"utf-8\");\n\n int id=Integer.parseInt(request.getParameter(\"id\"));\n MsgDao md=new MsgDao();\n md.delMail(id);\n response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"2;url=main.jsp\");\n response.sendRedirect(\"main2.jsp\");\n }\n\n\n public void init() throws ServletException {\n\n }\n\n}\n\n\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.entity.Msg;\n\npublic class Dowriteservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Dowriteservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = (String) request.getSession().getAttribute(\"uname\");\n String sendto = request.getParameter(\"receiver\");\n String title = request.getParameter(\"title\");\n String content = request.getParameter(\"content\");\n\n Msg m = new Msg();\n m.setMsgcontent(content);\n m.setUsername(uname);\n m.setSendto(sendto);\n m.setTitle(title);\n\n MsgDao md = new MsgDao();\n md.addMsg(m);\n\n out.print(\"\u53d1\u9001\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"3;url=main.jsp\");\n }\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response); }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n }\n\n}", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
posted @\n2022-05-29 20:20\u5f90\u6d9b%\u00a0\n\u9605\u8bfb(70)\u00a0\n\u8bc4\u8bba(0)\u00a0\n\u7f16\u8f91\u6536\u85cf\u4e3e\u62a5
", "content": [{"c": "posted @ 2022-05-29 20:20 \u5f90\u6d9b% \u9605\u8bfb( 70)\u00a0\n\u8bc4\u8bba( 0) \u7f16\u8f91 \u6536\u85cf \u4e3e\u62a5", "t": "text"}]}]], "main_html": "
\n
<%@ page language=\"java\"\u00a0import=\"java.util.*\"\u00a0pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
\u00a0
\n
<!DOCTYPE HTML PUBLIC\u00a0\"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
\u00a0\u00a0<head>
\n
\u00a0\u00a0\u00a0\u00a0<title>My JSP\u00a0'register.jsp'\u00a0starting page</title>\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</head>
\n
\u00a0\u00a0
\n
\u00a0\u00a0<body>
\n
\u00a0\u00a0<script type=\"text/javascript\">
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function validate(){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.uname.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(registerForm.upwd.value==\"\"){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0registerForm.submit();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0</script>
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0<form\u00a0 name=\"registerForm\"\u00a0action=\"DoregServlet\"\u00a0method=\"post\">
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u7528\u6237\u540d:<input type=\"text\"\u00a0name=\"uname\"><br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u5bc6\u00a0\u00a0 \u7801: <input type=\"password\"\u00a0name=\"upwd\"> <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<input type=\"submit\"\u00a0value=\"\u6ce8\u518c\"\u00a0>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
\u00a0\u00a0\u00a0\u00a0</form>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0</body>
\n
</html>
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet3\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet3() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost (request, response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao usersDao =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0i=usersDao.reg(uname, upwd);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(i>0){
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=login.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.dao.UsersDao;
\n
\u00a0
\n
public\u00a0class\u00a0Doregservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Doregservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = request.getParameter(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String upwd = request.getParameter(\"upwd\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UsersDao ud =\u00a0new\u00a0UsersDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(ud.register(uname, upwd) >\u00a00) {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getSession().setAttribute(\"uname\", uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0{
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=reg.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.dao.MsgDao;
\n
\u00a0
\n
public\u00a0class\u00a0servlet5\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0servlet5() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doPost(request,\u00a0 response);
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0id=Integer.parseInt(request.getParameter(\"id\"));
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md=new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.delMail(id);\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"2;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.sendRedirect(\"main2.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
\u00a0\u00a0
\n
\u00a0
\n
package\u00a0com.sf.servlet;
\n
\u00a0
\n
import\u00a0java.io.IOException;
\n
import\u00a0java.io.PrintWriter;
\n
\u00a0
\n
import\u00a0javax.servlet.ServletException;
\n
import\u00a0javax.servlet.http.HttpServlet;
\n
import\u00a0javax.servlet.http.HttpServletRequest;
\n
import\u00a0javax.servlet.http.HttpServletResponse;
\n
\u00a0
\n
import\u00a0com.sf.dao.MsgDao;
\n
import\u00a0com.sf.entity.Msg;
\n
\u00a0
\n
public\u00a0class\u00a0Dowriteservlet\u00a0extends\u00a0HttpServlet {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Constructor of the object.
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0Dowriteservlet() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super();
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Destruction of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0destroy() {
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.destroy();\u00a0// Just puts \"destroy\" string in log
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// Put your code here
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doGet(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setContentType(\"text/html\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PrintWriter out = response.getWriter();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.setCharacterEncoding(\"utf-8\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String uname = (String) request.getSession().getAttribute(\"uname\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String sendto = request.getParameter(\"receiver\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String title = request.getParameter(\"title\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String content = request.getParameter(\"content\");
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Msg m =\u00a0new\u00a0Msg();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setMsgcontent(content);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setUsername(uname);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setSendto(sendto);
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setTitle(title);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MsgDao md =\u00a0new\u00a0MsgDao();
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0md.addMsg(m);
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0response.setHeader(\"refresh\",\u00a0\"3;url=main.jsp\");
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0doPost(HttpServletRequest request, HttpServletResponse response)
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throws\u00a0ServletException, IOException {
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doGet(request,response);\u00a0\u00a0\u00a0\u00a0 }
\n
\u00a0
\n
\u00a0\u00a0\u00a0\u00a0/**
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* Initialization of the servlet. <br>
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*
\n
\u00a0\u00a0\u00a0\u00a0\u00a0* @throws ServletException if an error occurs
\n
\u00a0\u00a0\u00a0\u00a0\u00a0*/
\n
\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0init()\u00a0throws\u00a0ServletException {
\n
\u00a0\u00a0\u00a0\u00a0}
\n
\u00a0
\n
}
\n\n
\n\n
posted @\n2022-05-29 20:20\u5f90\u6d9b%\u00a0\n\u9605\u8bfb(70)\u00a0\n\u8bc4\u8bba(0)\u00a0\n\u7f16\u8f91\u6536\u85cf\u4e3e\u62a5
", "statics": {"code": 1, "table": 1, "paragraph": 1, "paragraph.text": 1}, "url": "https://www.cnblogs.com/xu-tao/p/16324793.html", "content": "```\n<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n\n\n\n \n My JSP 'register.jsp' starting page\n \n\n \n \n\n
\n\n \u7528\u6237\u540d:
\n \u5bc6 \u7801:
\n \n \u767b\u5f55\n
\n\n \n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.UsersDao;\n\npublic class servlet3 extends HttpServlet {\n\n public servlet3() {\n super();\n }\n\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n doPost (request, response);\n\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n UsersDao usersDao = new UsersDao();\n int i=usersDao.reg(uname, upwd);\n if(i>0){\n\n response.setHeader(\"refresh\", \"2;url=login.jsp\");\n }else{\n\n response.setHeader(\"refresh\", \"2;url=reg.jsp\");\n }\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.dao.UsersDao;\n\npublic class Doregservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Doregservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = request.getParameter(\"uname\");\n String upwd = request.getParameter(\"upwd\");\n\n UsersDao ud = new UsersDao();\n MsgDao md = new MsgDao();\n if (ud.register(uname, upwd) > 0) {\n request.getSession().setAttribute(\"uname\", uname);\n request.getRequestDispatcher(\"denglu.jsp\").forward(request,\n response);\n } else {\n out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");\n response.setHeader(\"refresh\", \"3;url=reg.jsp\");\n }\n }\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response);\n }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n // Put your code here\n }\n\n}\n\n\n\n\n\npackage com.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.dao.MsgDao;\n\npublic class servlet5 extends HttpServlet {\n\n public servlet5() {\n super();\n }\n\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doPost(request, response);\n }\n\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n request.setCharacterEncoding(\"utf-8\");\n\n int id=Integer.parseInt(request.getParameter(\"id\"));\n MsgDao md=new MsgDao();\n md.delMail(id);\n response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"2;url=main.jsp\");\n response.sendRedirect(\"main2.jsp\");\n }\n\n\n public void init() throws ServletException {\n\n }\n\n}\n\n\n\n\n\n\n\npackage com.sf.servlet;\n\nimport java.io.IOException;\nimport java.io.PrintWriter;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.sf.dao.MsgDao;\nimport com.sf.entity.Msg;\n\npublic class Dowriteservlet extends HttpServlet {\n\n /**\n * Constructor of the object.\n */\n public Dowriteservlet() {\n super();\n }\n\n /**\n * Destruction of the servlet.
\n */\n public void destroy() {\n super.destroy(); // Just puts \"destroy\" string in log\n // Put your code here\n }\n\n public void doGet(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n response.setContentType(\"text/html\");\n PrintWriter out = response.getWriter();\n request.setCharacterEncoding(\"utf-8\");\n String uname = (String) request.getSession().getAttribute(\"uname\");\n String sendto = request.getParameter(\"receiver\");\n String title = request.getParameter(\"title\");\n String content = request.getParameter(\"content\");\n\n Msg m = new Msg();\n m.setMsgcontent(content);\n m.setUsername(uname);\n m.setSendto(sendto);\n m.setTitle(title);\n\n MsgDao md = new MsgDao();\n md.addMsg(m);\n\n out.print(\"\u53d1\u9001\u6210\u529f.....\");\n response.setHeader(\"refresh\", \"3;url=main.jsp\");\n }\n\n public void doPost(HttpServletRequest request, HttpServletResponse response)\n throws ServletException, IOException {\n\n doGet(request,response); }\n\n /**\n * Initialization of the servlet.
\n *\n * @throws ServletException if an error occurs\n */\n public void init() throws ServletException {\n }\n\n}\n```\n\nposted @ 2022-05-29 20:20 \u5f90\u6d9b% \u9605\u8bfb( 70)\u00a0\n\u8bc4\u8bba( 0) \u7f16\u8f91 \u6536\u85cf \u4e3e\u62a5\n", "html": "\n\n\n\n \n \n \n\n \n \n \n \n \n \u7b2c\u5341\u4e09\u5468\u4f5c\u4e1a - \u5f90\u6d9b% - \u535a\u5ba2\u56ed\n \n \n\n \n\n\n \n \n\n\n \n\n \n \n \n\n \n\n \n \n \n \n\n\n\n \n
\n \n \"\"\n \n \n
\n
\n \n
\n\n\n\n \n
\n
\n\t
\n \"\u8fd4\u56de\u4e3b\u9875\"\n\n\n

\u5f90\u6d9b%\n

\n

\n\n\n\n\n\n\t
\n\t
\n\n\n\n\n\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n
\n\t
\n\t
\n\t\t
\n \n
\n
\n

\n \n \u7b2c\u5341\u4e09\u5468\u4f5c\u4e1a\n\n\n\n\n

\n
\n
\n
\n
\n\n\n\n\n\n\n\n\n\n\n
\n
1
\n
2
\n
3
\n
4
\n
5
\n
6
\n
7
\n
8
\n
9
\n
10
\n
11
\n
12
\n
13
\n
14
\n
15
\n
16
\n
17
\n
18
\n
19
\n
20
\n
21
\n
22
\n
23
\n
24
\n
25
\n
26
\n
27
\n
28
\n
29
\n
30
\n
31
\n
32
\n
33
\n
34
\n
35
\n
36
\n
37
\n
38
\n
39
\n
40
\n
41
\n
42
\n
43
\n
44
\n
45
\n
46
\n
47
\n
48
\n
49
\n
50
\n
51
\n
52
\n
53
\n
54
\n
55
\n
56
\n
57
\n
58
\n
59
\n
60
\n
61
\n
62
\n
63
\n
64
\n
65
\n
66
\n
67
\n
68
\n
69
\n
70
\n
71
\n
72
\n
73
\n
74
\n
75
\n
76
\n
77
\n
78
\n
79
\n
80
\n
81
\n
82
\n
83
\n
84
\n
85
\n
86
\n
87
\n
88
\n
89
\n
90
\n
91
\n
92
\n
93
\n
94
\n
95
\n
96
\n
97
\n
98
\n
99
\n
100
\n
101
\n
102
\n
103
\n
104
\n
105
\n
106
\n
107
\n
108
\n
109
\n
110
\n
111
\n
112
\n
113
\n
114
\n
115
\n
116
\n
117
\n
118
\n
119
\n
120
\n
121
\n
122
\n
123
\n
124
\n
125
\n
126
\n
127
\n
128
\n
129
\n
130
\n
131
\n
132
\n
133
\n
134
\n
135
\n
136
\n
137
\n
138
\n
139
\n
140
\n
141
\n
142
\n
143
\n
144
\n
145
\n
146
\n
147
\n
148
\n
149
\n
150
\n
151
\n
152
\n
153
\n
154
\n
155
\n
156
\n
157
\n
158
\n
159
\n
160
\n
161
\n
162
\n
163
\n
164
\n
165
\n
166
\n
167
\n
168
\n
169
\n
170
\n
171
\n
172
\n
173
\n
174
\n
175
\n
176
\n
177
\n
178
\n
179
\n
180
\n
181
\n
182
\n
183
\n
184
\n
185
\n
186
\n
187
\n
188
\n
189
\n
190
\n
191
\n
192
\n
193
\n
194
\n
195
\n
196
\n
197
\n
198
\n
199
\n
200
\n
201
\n
202
\n
203
\n
204
\n
205
\n
206
\n
207
\n
208
\n
209
\n
210
\n
211
\n
212
\n
213
\n
214
\n
215
\n
216
\n
217
\n
218
\n
219
\n
220
\n
221
\n
222
\n
223
\n
224
\n
225
\n
226
\n
227
\n
228
\n
229
\n
230
\n
231
\n
232
\n
233
\n
234
\n
235
\n
236
\n
237
\n
238
\n
239
\n
240
\n
241
\n
242
\n
243
\n
244
\n
245
\n
246
\n
247
\n
248
\n
249
\n
250
\n
251
\n
252
\n
253
\n
254
\n
255
\n
256
\n
257
\n
258
\n
259
\n
260
\n
261
\n
262
\n
263
\n
264
\n
265
\n
266
\n
267
\n
268
\n
269
\n
270
\n
271
\n
272
\n
273
\n
274
\n
275
\n
276
\n
277
\n
278
\n
279
\n
280
\n
281
\n
282
\n
283
\n
284
\n
285
\n
286
\n
287
\n
288
\n
289
\n
290
\n
291
\n
292
\n
293
\n
294
\n
295
\n
296
\n
297
\n
298
\n
299
\n\n
\n
\n
<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>
\n
<%
\n
String path = request.getContextPath();
\n
String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";
\n
%>
\n
 
\n
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
\n
<html>
\n
  <head>
\n
    <title>My JSP 'register.jsp' starting page</title>   
\n
  </head>
\n
  
\n
  <body>
\n
  <script type=\"text/javascript\">
\n
        function validate(){
\n
            if(registerForm.uname.value==\"\"){
\n
                alert(\"\u8d26\u53f7\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
                return;
\n
            }
\n
            if(registerForm.upwd.value==\"\"){
\n
                alert(\"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!\");
\n
                return;
\n
            }
\n
            registerForm.submit();
\n
        }
\n
    </script>
\n
 
\n
    <form  name=\"registerForm\" action=\"DoregServlet\" method=\"post\">
\n
 
\n
        \u7528\u6237\u540d:<input type=\"text\" name=\"uname\"><br>
\n
        \u5bc6   \u7801: <input type=\"password\" name=\"upwd\"> <br>
\n
        <input type=\"submit\" value=\"\u6ce8\u518c\" >
\n
        <a href=\"denglu.jsp\">\u767b\u5f55</a>
\n
    </form>
\n
     
\n
  </body>
\n
</html>
\n
 
\n
  
\n
 
\n
package com.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.dao.UsersDao;
\n
 
\n
public class servlet3 extends HttpServlet {
\n
 
\n
    public servlet3() {
\n
        super();
\n
    }
\n
 
\n
     
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
        doPost (request, response);
\n
         
\n
    }
\n
 
\n
     
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        String uname = request.getParameter(\"uname\");
\n
        String upwd = request.getParameter(\"upwd\");
\n
        UsersDao usersDao = new UsersDao();
\n
        int i=usersDao.reg(uname, upwd);
\n
        if(i>0){
\n
         
\n
            response.setHeader(\"refresh\"\"2;url=login.jsp\");
\n
        }else{
\n
     
\n
            response.setHeader(\"refresh\"\"2;url=reg.jsp\");
\n
        }
\n
    }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
        // Put your code here
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.sf.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.sf.dao.MsgDao;
\n
import com.sf.dao.UsersDao;
\n
 
\n
public class Doregservlet extends HttpServlet {
\n
 
\n
    /**
\n
     * Constructor of the object.
\n
     */
\n
    public Doregservlet() {
\n
        super();
\n
    }
\n
 
\n
    /**
\n
     * Destruction of the servlet. <br>
\n
     */
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        response.setContentType(\"text/html\");
\n
        PrintWriter out = response.getWriter();
\n
        request.setCharacterEncoding(\"utf-8\");
\n
        String uname = request.getParameter(\"uname\");
\n
        String upwd = request.getParameter(\"upwd\");
\n
 
\n
        UsersDao ud = new UsersDao();
\n
        MsgDao md = new MsgDao();
\n
        if (ud.register(uname, upwd) > 0) {
\n
            request.getSession().setAttribute(\"uname\", uname);
\n
            request.getRequestDispatcher(\"denglu.jsp\").forward(request,
\n
                    response);
\n
        else {
\n
            out.print(\"\u6ce8\u518c\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u6ce8\u518c.......\");
\n
            response.setHeader(\"refresh\"\"3;url=reg.jsp\");
\n
        }
\n
    }
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doGet(request,response);
\n
    }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
        // Put your code here
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.dao.MsgDao;
\n
 
\n
public class servlet5 extends HttpServlet {
\n
 
\n
    public servlet5() {
\n
        super();
\n
    }
\n
 
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
     
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doPost(request,  response);
\n
    }
\n
 
\n
     
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        request.setCharacterEncoding(\"utf-8\");
\n
          
\n
        int id=Integer.parseInt(request.getParameter(\"id\"));
\n
        MsgDao md=new MsgDao();
\n
        md.delMail(id);   
\n
        response.getWriter().print(\"\u522a\u9664\u6210\u529f.....\");
\n
        response.setHeader(\"refresh\"\"2;url=main.jsp\");
\n
        response.sendRedirect(\"main2.jsp\");
\n
    }
\n
 
\n
     
\n
    public void init() throws ServletException {
\n
     
\n
    }
\n
 
\n
}
\n
 
\n
  
\n
 
\n
  
\n
 
\n
  
\n
 
\n
package com.sf.servlet;
\n
 
\n
import java.io.IOException;
\n
import java.io.PrintWriter;
\n
 
\n
import javax.servlet.ServletException;
\n
import javax.servlet.http.HttpServlet;
\n
import javax.servlet.http.HttpServletRequest;
\n
import javax.servlet.http.HttpServletResponse;
\n
 
\n
import com.sf.dao.MsgDao;
\n
import com.sf.entity.Msg;
\n
 
\n
public class Dowriteservlet extends HttpServlet {
\n
 
\n
    /**
\n
     * Constructor of the object.
\n
     */
\n
    public Dowriteservlet() {
\n
        super();
\n
    }
\n
 
\n
    /**
\n
     * Destruction of the servlet. <br>
\n
     */
\n
    public void destroy() {
\n
        super.destroy(); // Just puts \"destroy\" string in log
\n
        // Put your code here
\n
    }
\n
 
\n
    public void doGet(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        response.setContentType(\"text/html\");
\n
        PrintWriter out = response.getWriter();
\n
        request.setCharacterEncoding(\"utf-8\");
\n
        String uname = (String) request.getSession().getAttribute(\"uname\");
\n
        String sendto = request.getParameter(\"receiver\");
\n
        String title = request.getParameter(\"title\");
\n
        String content = request.getParameter(\"content\");
\n
 
\n
        Msg m = new Msg();
\n
        m.setMsgcontent(content);
\n
        m.setUsername(uname);
\n
        m.setSendto(sendto);
\n
        m.setTitle(title);
\n
 
\n
        MsgDao md = new MsgDao();
\n
        md.addMsg(m);
\n
 
\n
        out.print(\"\u53d1\u9001\u6210\u529f.....\");
\n
        response.setHeader(\"refresh\"\"3;url=main.jsp\");
\n
    }
\n
 
\n
    public void doPost(HttpServletRequest request, HttpServletResponse response)
\n
            throws ServletException, IOException {
\n
 
\n
        doGet(request,response);     }
\n
 
\n
    /**
\n
     * Initialization of the servlet. <br>
\n
     *
\n
     * @throws ServletException if an error occurs
\n
     */
\n
    public void init() throws ServletException {
\n
    }
\n
 
\n
}
\n\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
posted @\n2022-05-29 20:20 \n\u5f90\u6d9b% \n\u9605\u8bfb(70) \n\u8bc4\u8bba(0) \n\u7f16\u8f91 \n\u6536\u85cf \n\u4e3e\u62a5\n
\n
\n\n\n
\n
\n\n\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n \"\"\n \n \n
\n
\n
\n
\n \n
\n\n\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n

\u516c\u544a

\n
\n
\n
\n
\n\n\n\n
\n
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n \n\t\t\t
\n\t\t
\n\t
\n\t
\n\t
\n\t
\n\t
\n\t\t\nCopyright © 2025 \u5f90\u6d9b%\n
Powered by .NET 9.0 on Kubernetes\n\n\n\n\t
\n
\n\n\n\n\n\n \n \n\n\n\n\n"} diff --git a/bench/data/groundtruth/code_17_csdn.jsonl b/bench/data/groundtruth/code_17_csdn.jsonl index ea745c47..0993ab3d 100644 --- a/bench/data/groundtruth/code_17_csdn.jsonl +++ b/bench/data/groundtruth/code_17_csdn.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

pandas \u5206\u6279\u8bfb\u5165execl

", "content": {"title_content": "pandas \u5206\u6279\u8bfb\u5165execl", "level": "1"}}, {"type": "paragraph", "raw_content": "
\u65f6\u95f4: 2023-06-29 20:05:48
", "content": [{"c": "\u65f6\u95f4: 2023-06-29 20:05:48", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u6d4f\u89c8: 99
", "content": [{"c": "\u6d4f\u89c8: 99", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 `chunksize` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002`chunksize` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 `chunksize` \u53c2\u6570\u7684\u503c\u3002
", "content": [{"c": "\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 `chunksize` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002`chunksize` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 `chunksize` \u53c2\u6570\u7684\u503c\u3002", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u9605\u8bfb\u5168\u6587
", "content": [{"c": "\u9605\u8bfb\u5168\u6587", "t": "text"}]}, {"type": "title", "raw_content": "

\u76f8\u5173\u63a8\u8350

", "content": {"title_content": "\u76f8\u5173\u63a8\u8350", "level": "2"}}, {"type": "title", "raw_content": "

\u5927\u5bb6\u5728\u770b

", "content": {"title_content": "\u5927\u5bb6\u5728\u770b", "level": "2"}}, {"type": "title", "raw_content": "

\u6700\u65b0\u63a8\u8350

", "content": {"title_content": "\u6700\u65b0\u63a8\u8350", "level": "2"}}]], "main_html": "

pandas \u5206\u6279\u8bfb\u5165execl

\u65f6\u95f4: 2023-06-29 20:05:48
\u6d4f\u89c8: 99
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 `chunksize` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002`chunksize` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 `chunksize` \u53c2\u6570\u7684\u503c\u3002
\u9605\u8bfb\u5168\u6587

\u76f8\u5173\u63a8\u8350

\u5927\u5bb6\u5728\u770b

\u6700\u65b0\u63a8\u8350

", "statics": {"title": 4, "paragraph": 4, "paragraph.text": 4}, "url": "https://blog.csdn.net/moon_sky1999/article/details/52744845", "content": "# pandas \u5206\u6279\u8bfb\u5165execl\n\n\u65f6\u95f4: 2023-06-29 20:05:48\n\n\u6d4f\u89c8: 99\n\n\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 \\`read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()\\` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 \\`chunksize\\` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002\\`chunksize\\` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n\\`\\`\\`[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n\\# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n\\# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n\\# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n\\# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n\\`\\`\\`\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 \\`chunksize\\` \u53c2\u6570\u7684\u503c\u3002\n\n\u9605\u8bfb\u5168\u6587\n\n## \u76f8\u5173\u63a8\u8350\n\n## \u5927\u5bb6\u5728\u770b\n\n## \u6700\u65b0\u63a8\u8350\n", "html": "\npandas \u5206\u6279\u8bfb\u5165execl - CSDN\u6587\u5e93 \n \n \n \n\n \n \n \n \n\n \n\n \n\n \n\n \n
\u9996\u9875pandas \u5206\u6279\u8bfb\u5165execl

pandas \u5206\u6279\u8bfb\u5165execl

\u65f6\u95f4: 2023-06-29 20:05:48 \u6d4f\u89c8: 99
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 `chunksize` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002`chunksize` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 `chunksize` \u53c2\u6570\u7684\u503c\u3002
\u9605\u8bfb\u5168\u6587

\u76f8\u5173\u63a8\u8350

\"docx\"
c\u8bed\u8a00\u5165\u95e8\nC\u8bed\u8a00\u4e00\u7ecf\u51fa\u73b0\u5c31\u4ee5\u5176\u529f\u80fd\u4e30\u5bcc\u3001\u8868\u8fbe\u80fd\u529b\u5f3a\u3001\u7075\u6d3b\u65b9\u4fbf\u3001\u5e94\u7528\u9762\u5e7f\u7b49\u7279\u70b9\u8fc5\u901f\u5728\u5168\u4e16\u754c\u666e\u53ca\u548c\u63a8\u5e7f\u3002C\u8bed\u8a00\u4e0d\u4f46\u6267\u884c\u6548\u7387\u9ad8\u800c\u4e14\u53ef\u79fb\u690d\u6027\u597d\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u5e94\u7528\u8f6f\u4ef6\u3001\u9a71\u52a8\u3001\u64cd\u4f5c\u7cfb\u7edf\u7b49\u3002C\u8bed\u8a00\u4e5f\u662f\u5176\u5b83\u4f17\u591a\u9ad8\u7ea7\u8bed\u8a00\u7684\u9f3b\u7956\u8bed\u8a00\uff0c\u6240\u4ee5\u8bf4\u5b66\u4e60C\u8bed\u8a00\u662f\u8fdb\u5165\u7f16\u7a0b\u4e16\u754c\u7684\u5fc5\u4fee\u8bfe\u3002hello,world\n#include<stdio.h>\nint main()\n{\n/*\u5728\u53cc\u5f15\u53f7\u4e2d\u95f4\u8f93\u5165Hello World*/\nprintf(\"Hello World\");\nreturn 0;\n}\n\n\u6ce8\uff1a\u5728\u6700\u65b0\u7684C\u6807\u51c6\u4e2d\uff0cmain\u51fd\u6570\u524d\u7684\u7c7b\u578b\u4e3aint\u800c\u4e0d\u662fvoid\nc\u8bed\u8a00\u7684\u5177\u4f53\u7ed3\u6784\u7b80\u5355\u6765\u8bf4\uff0c\u4e00\u4e2aC\u7a0b\u5e8f\u5c31\u662f\u7531\u82e5\u5e72\u5934\u6587\u4ef6\u548c\u51fd\u6570\u7ec4\u6210\u3002#include <stdio.h>\u5c31\u662f\u4e00\u6761\u9884\u5904\u7406\u547d\u4ee4, \u5b83\u7684\u4f5c\u7528\u662f\u901a\u77e5C\u8bed\u8a00\u7f16\u8bd1\u7cfb\u7edf\u5728\u5bf9C\u7a0b\u5e8f\u8fdb\u884c\u6b63\u5f0f\u7f16\u8bd1\u4e4b\u524d\u9700\u505a\u4e00\u4e9b\u9884\u5904\u7406\u5de5\u4f5c\u3002\u51fd\u6570\u5c31\u662f\u5b9e\u73b0\u4ee3\u7801\u903b\u8f91\u7684\u4e00\u4e2a\u5c0f\u7684\u5355\u5143\u3002\u5fc5\u4e0d\u53ef\u5c11\u4e4b\u4e3b\u51fd\u6570\u4e00\u4e2aC\u7a0b\u5e8f\u6709\u4e14\u53ea\u6709\u4e00\u4e2a\u4e3b\u51fd\u6570\uff0c\u5373main\u51fd\u6570\u3002C\u7a0b\u5e8f\u5c31\u662f\u6267\u884c\u4e3b\u51fd\u6570\u91cc\u7684\u4ee3\u7801\uff0c\u4e5f\u53ef\u4ee5\u8bf4\u8fd9\u4e2a\u4e3b\u51fd\u6570\u5c31\u662fC\u8bed\u8a00\u4e2d\u7684\u552f\u4e00\u5165\u53e3\u3002\u800cmain\u524d\u9762\u7684int\u5c31\u662f\u4e3b\u51fd\u6570\u7684\u7c7b\u578b.printf()\u662f\u683c\u5f0f\u8f93\u51fa\u51fd\u6570\uff0c\u8fd9\u91cc

\u6700\u65b0\u63a8\u8350

\"recommend-type\"

pandas\u5206\u6279\u8bfb\u53d6\u5927\u6570\u636e\u96c6\u6559\u7a0b

`pandas`\u5e93\u63d0\u4f9b\u4e86\u4e00\u79cd\u7075\u6d3b\u7684\u65b9\u6cd5\uff0c\u5373\u5206\u6279\u8bfb\u53d6\u6570\u636e\u96c6\uff0c\u4ee5\u89e3\u51b3\u5185\u5b58\u9650\u5236\u7684\u95ee\u9898\u3002\u672c\u6559\u7a0b\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u5229\u7528`pandas`\u7684\u8fd9\u4e00\u529f\u80fd\u6765\u9ad8\u6548\u5730\u5904\u7406\u5927\u6570\u636e\u3002 \u5728\u5904\u7406\u5927\u578b\u6570\u636e\u96c6\u65f6\uff0c\u76f4\u63a5\u4e00\u6b21\u6027\u52a0\u8f7d\u6240\u6709\u6570\u636e\u53ef\u80fd\u5bfc\u81f4\u5185\u5b58\u6ea2\u51fa\uff0c\u7279\u522b...
\"recommend-type\"

Pandas\u8bfb\u53d6csv\u65f6\u5982\u4f55\u8bbe\u7f6e\u5217\u540d

\u5728\u6570\u636e\u5206\u6790\u9886\u57df\uff0cPandas\u5e93\u662fPython\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\uff0c\u5b83\u63d0\u4f9b\u4e86\u9ad8\u6548\u7684\u6570\u636e\u5904\u7406\u80fd\u529b\u3002Pandas\u80fd\u591f\u65b9\u4fbf\u5730\u8bfb\u53d6\u548c\u5199\u5165\u591a\u79cd\u683c\u5f0f\u7684\u6570\u636e\u6587\u4ef6\uff0c\u5176\u4e2dCSV\uff08Comma Separated Values\uff09\u662f\u6700\u5e38\u89c1\u7684\u6570\u636e\u5b58\u50a8\u683c\u5f0f\u4e4b\u4e00\u3002\u672c\u7bc7\u5c06\u8be6\u7ec6...
\"recommend-type\"

pandas\u4e2dTimestamp\u7c7b\u7528\u6cd5\u8be6\u89e3

\u5728Python\u7684pandas\u5e93\u4e2d\uff0cTimestamp\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u7c7b\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u7279\u5b9a\u7684\u65e5\u671f\u548c\u65f6\u95f4\u70b9\u3002Timestamp\u7c7b\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5904\u7406\u65e5\u671f\u548c\u65f6\u95f4\u6570\u636e\uff0c\u662f\u6570\u636e\u5206\u6790\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\u3002\u4ee5\u4e0b\u662f\u5bf9pandas\u4e2dTimestamp\u7c7b\u7684...
\"recommend-type\"

python pandas\u751f\u6210\u65f6\u95f4\u5217\u8868

\u5728Python\u7f16\u7a0b\u8bed\u8a00\u4e2d\uff0cPandas\u5e93\u662f\u4e00\u4e2a\u5f3a\u5927\u7684\u6570\u636e\u5206\u6790\u5de5\u5177\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u6570\u636e\u5904\u7406\u529f\u80fd\uff0c\u5305\u62ec\u751f\u6210\u65f6\u95f4\u5e8f\u5217\u6570\u636e\u3002\u5728\u5904\u7406\u6d89\u53ca\u65f6\u95f4\u7684\u6570\u636e\u65f6\uff0cPandas\u7684\u65f6\u95f4\u5217\u8868\uff08\u65f6\u95f4\u5e8f\u5217\uff09\u626e\u6f14\u7740\u81f3\u5173\u91cd\u8981\u7684\u89d2\u8272\u3002\u672c\u7bc7\u5c06\u6df1\u5165\u63a2\u8ba8\u5982\u4f55\u4f7f\u7528...
\"recommend-type\"

pandas\u548cspark dataframe\u4e92\u76f8\u8f6c\u6362\u5b9e\u4f8b\u8be6\u89e3

\u5728\u5927\u6570\u636e\u5904\u7406\u9886\u57df\uff0c`pandas` \u548c `Spark DataFrame` \u662f\u4e24\u4e2a\u91cd\u8981\u7684\u5de5\u5177\u3002`pandas` \u662f Python \u4e2d\u7528\u4e8e\u6570\u636e\u5904\u7406\u548c\u5206\u6790\u7684\u5e93\uff0c\u800c `Spark DataFrame` \u662f Apache Spark \u7684\u6838\u5fc3\u7ec4\u4ef6\uff0c\u63d0\u4f9b\u4e86\u4e00\u79cd\u5206\u5e03\u5f0f\u6570\u636e\u5904\u7406\u80fd\u529b\u3002\u672c\u6587\u5c06\u8be6\u7ec6...
\"recommend-type\"

\u6df1\u5165\u63a2\u7d22CSS\u62c9\u7279\u6d4b\u8bd5\u65b9\u6cd5

\u6839\u636e\u63d0\u4f9b\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u6211\u4eec\u65e0\u6cd5\u83b7\u53d6\u5177\u4f53\u7684\u6587\u4ef6\u5185\u5bb9\uff0c\u56e0\u6b64\uff0c\u9700\u8981\u4ece\u6587\u4ef6\u7684\u6807\u9898\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\uff0c\u63cf\u8ff0\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\uff0c\u6807\u7b7e\u201cCSS\u201d\uff0c\u4ee5\u53ca\u538b\u7f29\u5305\u5b50\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u79f0\u5217\u8868\u201clat-test-main\u201d\u6765\u63a8\u65ad\u76f8\u5173\u7684\u77e5\u8bc6\u70b9\u3002\u9274\u4e8e\u8fd9\u4e9b\u4fe1\u606f\u91cf\u6709\u9650\uff0c\u6211\u4eec\u5c06\u4e3b\u8981\u56f4\u7ed5\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u8fd9\u4e00\u4e3b\u9898\u8fdb\u884c\u63a2\u8ba8\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53caCSS\u76f8\u5173\u5185\u5bb9\u3002\n\n\u9996\u5148\uff0c\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u53ef\u80fd\u6307\u7684\u662f\u67d0\u79cd\u7279\u5b9a\u7684\u8f6f\u4ef6\u6d4b\u8bd5\u65b9\u6cd5\u6216\u8005\u6280\u672f\u8bc4\u4f30\u6d41\u7a0b\u3002\u8003\u8651\u5230\u6587\u4ef6\u540d\u201clat-test-main\u201d\u6697\u793a\u5b83\u53ef\u80fd\u662f\u67d0\u4e2a\u9879\u76ee\u7684\u4e3b\u8981\u6d4b\u8bd5\u6587\u4ef6\uff0c\u6211\u4eec\u53ef\u4ee5\u5408\u7406\u63a8\u6d4b\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u53ef\u80fd\u662f\u6d4b\u8bd5\u7684\u4ee3\u7801\u811a\u672c\u3001\u6d4b\u8bd5\u7528\u4f8b\u96c6\u5408\u3001\u6216\u8005\u662f\u4e0e\u6d4b\u8bd5\u76f8\u5173\u7684\u914d\u7f6e\u6587\u4ef6\u3002\u4f46\u5728\u6ca1\u6709\u66f4\u591a\u4e0a\u4e0b\u6587\u7684\u60c5\u51b5\u4e0b\uff0c\u5f88\u96be\u786e\u5b9a\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u5177\u4f53\u6307\u4ee3\u7684\u662f\u4ec0\u4e48\u3002\n\n\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u8ba8\u8bba\u201cCSS\u201d\u3002CSS\u662f\u201c\u5c42\u53e0\u6837\u5f0f\u8868\uff08Cascading Style Sheets\uff09\u201d\u7684\u7f29\u5199\uff0c\u662f\u4e00\u79cd\u7528\u4e8e\u63a7\u5236\u7f51\u9875\u5916\u89c2\u548c\u5e03\u5c40\u7684\u6280\u672f\u6807\u51c6\u3002CSS\u63cf\u8ff0\u4e86\u5982\u4f55\u5728\u5c4f\u5e55\u4e0a\uff0c\u7eb8\u5f20\u4e0a\uff0c\u6216\u5728\u5176\u4ed6\u5a92\u4f53\u4e0a\u5c55\u73b0HTML\u6216XML\uff08\u5305\u62ec\u5404\u79cdXML\u65b9\u8a00\uff0c\u6bd4\u5982SVG\u6216XHTML\uff09\u6587\u6863\u3002\u5b83\u4f7f\u5f00\u53d1\u8005\u80fd\u591f\u5c06\u5185\u5bb9\u4e0e\u8868\u73b0\u5206\u79bb\uff0c\u8fd9\u6709\u52a9\u4e8e\u5bf9\u7f51\u7ad9\u8fdb\u884c\u4fee\u6539\uff0c\u800c\u65e0\u9700\u89e6\u53ca\u5185\u5bb9\u672c\u8eab\u3002CSS\u7684\u89c4\u5219\u7531\u9009\u62e9\u5668\u548c\u58f0\u660e\u5757\u7ec4\u6210\u3002\u9009\u62e9\u5668\u6307\u660e\u4e86\u6837\u5f0f\u89c4\u5219\u5e94\u8be5\u5e94\u7528\u4e8e\u54ea\u4e9bHTML\u5143\u7d20\uff0c\u800c\u58f0\u660e\u5757\u5219\u5305\u542b\u4e86\u4e00\u4e2a\u6216\u591a\u4e2a\u7528\u5206\u53f7\u9694\u5f00\u7684\u5c5e\u6027\u503c\u5bf9\u3002\n\n\u7136\u800c\uff0c\u7531\u4e8e\u6807\u9898\u3001\u63cf\u8ff0\u548c\u6807\u7b7e\u5e76\u6ca1\u6709\u76f4\u63a5\u63d0\u4f9b\u5173\u4e8eCSS\u7684\u5177\u4f53\u4fe1\u606f\uff0c\u6211\u4eec\u4e5f\u65e0\u6cd5\u786e\u5b9aCSS\u5728\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u4e2d\u626e\u6f14\u7684\u5177\u4f53\u89d2\u8272\u3002\u4e0d\u8fc7\uff0c\u5047\u8bbeCSS\u6807\u7b7e\u610f\u5473\u7740\u6d4b\u8bd5\u53ef\u80fd\u4e0e\u7f51\u9875\u7684\u6837\u5f0f\u8868\u6216\u8005\u524d\u7aef\u8bbe\u8ba1\u6709\u5173\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u60f3\u8c61\uff0c\u6d4b\u8bd5\u53ef\u80fd\u6db5\u76d6\u4e86\u5bf9\u7f51\u9875\u6837\u5f0f\u7684\u9a8c\u8bc1\u3001\u5bf9\u5e03\u5c40\u7684\u6d4b\u8bd5\u3001\u5bf9\u4ea4\u4e92\u6548\u679c\u7684\u68c0\u67e5\u7b49\u3002\n\n\u5728\u5f00\u53d1\u548c\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\uff0cCSS\u7684\u6b63\u786e\u6027\u81f3\u5173\u91cd\u8981\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u4e0eCSS\u76f8\u5173\u7684\u6d4b\u8bd5\u65b9\u6cd5\uff1a\n\n1. CSS\u9a8c\u8bc1\u6d4b\u8bd5\uff1a\u786e\u4fddCSS\u4ee3\u7801\u7b26\u5408\u6807\u51c6\uff0c\u5e76\u4e14\u6ca1\u6709\u8bed\u6cd5\u9519\u8bef\u3002\u53ef\u4ee5\u4f7f\u7528\u5728\u7ebf\u5de5\u5177\u5982W3C\u7684CSS\u9a8c\u8bc1\u670d\u52a1\u8fdb\u884c\u3002\n\n2. \u517c\u5bb9\u6027\u6d4b\u8bd5\uff1a\u68c0\u67e5\u7f51\u7ad9\u5728\u4e0d\u540c\u7684\u6d4f\u89c8\u5668\u548c\u8bbe\u5907\u4e0a\u663e\u793a\u7684\u4e00\u81f4\u6027\u3002\u7531\u4e8e\u6d4f\u89c8\u5668\u5bf9CSS\u7684\u652f\u6301\u5b58\u5728\u5dee\u5f02\uff0c\u8fd9\u4e00\u6b65\u9aa4\u5341\u5206\u91cd\u8981\u3002\n\n3. \u6027\u80fd\u6d4b\u8bd5\uff1a\u5206\u6790CSS\u6587\u4ef6\u7684\u5927\u5c0f\u3001\u590d\u6742\u5ea6\u4ee5\u53ca\u4e0b\u8f7d\u548c\u6e32\u67d3\u65f6\u95f4\uff0c\u4f18\u5316\u8fd9\u4e9b\u6027\u80fd\u6307\u6807\u4ee5\u63d0\u9ad8\u7f51\u9875\u52a0\u8f7d\u901f\u5ea6\u3002\n\n4. \u53ef\u8bbf\u95ee\u6027\u6d4b\u8bd5\uff1a\u786e\u4fdd\u7f51\u7ad9\u5bf9\u4e0d\u540c\u9700\u6c42\u7684\u7528\u6237\uff0c\u5305\u62ec\u6709\u89c6\u89c9\u969c\u788d\u7684\u7528\u6237\uff0c\u662f\u6613\u4e8e\u5bfc\u822a\u548c\u4f7f\u7528\u7684\u3002\n\n5. \u5355\u5143\u6d4b\u8bd5\uff1a\u5bf9\u4e8e\u4f7f\u7528CSS\u9884\u5904\u7406\u5668\u6216\u7f16\u8bd1\u5de5\u5177\u751f\u6210\u6700\u7ec8\u6837\u5f0f\u8868\u7684\u60c5\u51b5\uff0c\u5355\u5143\u6d4b\u8bd5\u53ef\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u5de5\u5177\u7684\u6b63\u786e\u6027\u3002\n\n6. \u529f\u80fd\u6d4b\u8bd5\uff1a\u68c0\u67e5\u7f51\u9875\u4e0a\u7684\u6837\u5f0f\u5143\u7d20\u662f\u5426\u6309\u7167\u8bbe\u8ba1\u5b9e\u73b0\uff0c\u6bd4\u5982\u5b57\u4f53\u3001\u989c\u8272\u3001\u5e03\u5c40\u548c\u5176\u4ed6\u89c6\u89c9\u6548\u679c\u3002\n\n\u7531\u4e8e\u201clat-test-main\u201d\u6697\u793a\u8fd9\u662f\u4e00\u4e2a\u4e3b\u8981\u7684\u6d4b\u8bd5\u6587\u4ef6\uff0c\u5b83\u53ef\u80fd\u5305\u542b\u4e86\u4e0a\u8ff0\u6d4b\u8bd5\u65b9\u6cd5\u4e2d\u7684\u4e00\u79cd\u6216\u591a\u79cd\u7684\u5b9e\u73b0\u3002\u5728\u5b9e\u9645\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u6d4b\u8bd5\u901a\u5e38\u662f\u5728\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u652f\u6301\u4e0b\u8fdb\u884c\u7684\uff0c\u6bd4\u5982Git\uff0c\u5b83\u53ef\u4ee5\u5e2e\u52a9\u56e2\u961f\u6210\u5458\u7ba1\u7406\u4e0d\u540c\u7684\u6d4b\u8bd5\u7248\u672c\uff0c\u5e76\u8ddf\u8e2a\u4ee3\u7801\u66f4\u6539\u3002\n\n\u7efc\u4e0a\u6240\u8ff0\uff0c\u5173\u4e8e\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u548c\u201cCSS\u201d\u7684\u77e5\u8bc6\u70b9\u96c6\u4e2d\u5728\u6d4b\u8bd5\u65b9\u6cd5\u548c\u6837\u5f0f\u8868\u7684\u5e94\u7528\u4e0a\u3002\u4e0d\u8fc7\uff0c\u4e3a\u4e86\u66f4\u51c6\u786e\u5730\u63cf\u8ff0\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u7684\u542b\u4e49\uff0c\u6211\u4eec\u9700\u8981\u66f4\u591a\u7684\u4e0a\u4e0b\u6587\u4fe1\u606f\u6216\u8005\u76f4\u63a5\u8bbf\u95ee\u76f8\u5173\u7684\u6587\u4ef6\u5185\u5bb9\u3002\u5728\u5b9e\u9645\u5de5\u4f5c\u4e2d\uff0c\u4e86\u89e3\u9879\u76ee\u9700\u6c42\u3001\u6d4b\u8bd5\u76ee\u6807\u548c\u73af\u5883\u914d\u7f6e\u5bf9\u4e8e\u6210\u529f\u5730\u5b9e\u65bd\u6d4b\u8bd5\u8ba1\u5212\u81f3\u5173\u91cd\u8981\u3002
\"recommend-type\"

\u65b0\u5510IAP\u6982\u5ff5\u89e3\u6790

\n\n# \u6458\u8981\nIAP\uff08In-Application Programming\uff09\u7f16\u7a0b\u662f\u4e00\u79cd\u5728\u5e94\u7528\u8fd0\u884c\u65f6\u66f4\u65b0\u56fa\u4ef6\u7684\u5148\u8fdb\u65b9\u6cd5\uff0c\u5b83\u63d0\u4f9b\u4e86\u7cfb\u7edf\u66f4\u65b0\u7684\u7075\u6d3b\u6027\u548c\u4fbf\u5229\u6027\u3002\u672c\u6587\u5168\u9762\u4ecb\u7ecd\u4e86IAP\u7f16\u7a0b\u7684\u6982\u5ff5\u3001\u6280\u672f\u57fa\u7840\u548c\u5b9e\u8df5\u5e94\u7528\uff0c\u91cd\u70b9\u5206\u6790\u4e86IAP\u5728\u65b0\u5510\u5fae\u63a7\u5236\u5668\u4e2d\u7684\u5b9e\u73b0\u673a\u5236\uff0c\u5305\u62ec\u5176\u5185\u5b58\u7ed3\u6784\u548c\u5de5\u4f5c\u6d41\u7a0b\uff0c\u5e76\u63a2\u8ba8\u4e86\u8f6f\u4ef6\u5de5\u5177\u548c\u5f00\u53d1\u73af\u5883\u7684\u914d\u7f6e\u3002\u540c\u65f6\uff0c\u672c\u6587\u901a\u8fc7\u5b9e\u9645\u6848\u4f8b\u6df1\u5165\u7814\u7a76\u4e86IAP\u5f00\u53d1\u6d41\u7a0b\u3001\u5b89\u5168\u6027\u548c\u9519\u8bef\u5904\u7406\u7b56\u7565\uff0c\u4ee5\u53ca\u5728\u7269\u8054\u7f51\u8bbe\u5907\u548c\u667a\u80fd\u5bb6\u5c45\u7b49\u9886\u57df\u7684\u9ad8\u7ea7\u5e94\u7528\u3002\u6700\u540e\uff0c\u9488\u5bf9IAP\u9879\u76ee\u7684\u7ba1
\"recommend-type\"

fix_eco_timing \u5199\u51fa\u811a\u672c

`fix_eco_timing`\u8fd9\u4e2a\u540d\u5b57\u770b\u8d77\u6765\u50cf\u662f\u7528\u4e8e\u67d0\u79cd\u7279\u5b9a\u73af\u5883\u4e0b\u7684\u811a\u672c\uff0c\u6bd4\u5982\u53ef\u80fd\u662f\u7528\u4e8e\u8c03\u6574\u7535\u5b50\u7ec4\u4ef6\u6216\u7535\u5b50\u4ea7\u54c1\u7684\u5de5\u4f5c\u5468\u671f\u4f18\u5316\u80fd\u6e90\u6548\u7387\u7684\u4e00\u79cd\u5de5\u5177\u3002\u7136\u800c\uff0c\u6ca1\u6709\u5177\u4f53\u7684\u4e0a\u4e0b\u6587\uff0c\u5f88\u96be\u63d0\u4f9b\u8be6\u7ec6\u7684\u811a\u672c\u5185\u5bb9\u3002\u901a\u5e38\u8fd9\u6837\u7684\u811a\u672c\u53ef\u80fd\u4f1a\u5305\u542b\u4ee5\u4e0b\u51e0\u4e2a\u90e8\u5206\uff1a\n\n```bash\n#!/bin/bash\n# Fix Eco Timing Script\n\n# 1. \u83b7\u53d6\u5f53\u524d\u8bbe\u5907\u72b6\u6001\ndevice_status=$(get_device_status)\n\n# 2. \u68c0\u67e5\u662f\u5426\u8fbe\u5230\u8282\u80fd\u6a21\u5f0f\u6761\u4ef6\nif [ "$device_status" == "idle" ]; then\n# 3. \u8c03\u6574\u5de5\u4f5c\u9891\u7387\u6216\u7535\u6e90\u7ba1\u7406\u8bbe\u7f6e\nad
\"recommend-type\"

BTS SIO\u57f9\u8bad\u751fYoucef Tarfa\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9

\u6839\u636e\u63d0\u4f9b\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u6211\u4eec\u53ef\u4ee5\u63a8\u65ad\u51fa\u4e00\u4e9b\u5173\u952e\u77e5\u8bc6\u70b9\uff1a\n\n### \u6807\u9898\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9**\uff1a\u6807\u9898\u4e2d\u7684\u201cYouceftarfa.github.io\u201d\u8868\u660e\u8fd9\u662f\u4e00\u4e2a\u5728\u7ebf\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0c\u8fd9\u901a\u5e38\u7528\u4e8e\u5c55\u793a\u4e2a\u4eba\u7684\u9879\u76ee\u3001\u7ecf\u9a8c\u548c\u6280\u80fd\u3002\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\u662f\u4e13\u4e1aIT\u4eba\u58eb\u7528\u6765\u5411\u6f5c\u5728\u96c7\u4e3b\u3001\u5ba2\u6237\u6216\u5408\u4f5c\u4f19\u4f34\u5c55\u793a\u4ed6\u4eec\u4e13\u4e1a\u80fd\u529b\u7684\u91cd\u8981\u5de5\u5177\u3002\n\n2. **GitHub.io\u57df\u540d**\uff1a\u57df\u540d\u4e2d\u7684\u201c.github.io\u201d\u610f\u5473\u7740\u8fd9\u662f\u4e00\u4e2a\u6258\u7ba1\u5728GitHub\u5e73\u53f0\u4e0a\u7684\u4e2a\u4eba\u7f51\u7ad9\u3002GitHub\u4e0d\u4ec5\u63d0\u4f9b\u6e90\u4ee3\u7801\u6258\u7ba1\u670d\u52a1\uff0c\u4e5f\u652f\u6301\u7528\u6237\u901a\u8fc7GitHub Pages\u529f\u80fd\u6765\u53d1\u5e03\u4e2a\u4eba\u7ad9\u70b9\uff0c\u8fd9\u901a\u5e38\u7528\u4e8e\u5f00\u6e90\u9879\u76ee\u5c55\u793a\u3001\u4e2a\u4eba\u7b80\u5386\u5c55\u793a\u3001\u6280\u672f\u535a\u5ba2\u7b49\u591a\u79cd\u7528\u9014\u3002\n\n3. **BTS SIO\u57f9\u8bad\u751f**\uff1a\u8fd9\u53ef\u80fd\u662fYoucef Tarfa\u53c2\u4e0e\u7684\u4e00\u4e2a\u57f9\u8bad\u8ba1\u5212\u6216\u8bfe\u7a0b\u7684\u540d\u79f0\uff0cBTS SIO\uff08Brevet de Technicien Sup\u00e9rieur \u2013 Syst\u00e8mes Informatiques et Logiciels\uff09\u662f\u6cd5\u56fd\u7684\u4e00\u4e2a\u9ad8\u7b49\u6559\u80b2\u6587\u51ed\uff0c\u6d89\u53ca\u8ba1\u7b97\u673a\u7cfb\u7edf\u548c\u8f6f\u4ef6\u3002\u8fd9\u4e2a\u6807\u9898\u6697\u793a\u8be5\u7f51\u7ad9\u53ef\u80fd\u5305\u542b\u4e86\u4e0e\u8be5\u57f9\u8bad\u76f8\u5173\u7684\u4fe1\u606f\u3001\u9879\u76ee\u6216\u6210\u679c\u3002\n\n### \u63cf\u8ff0\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u7f51\u7ad9\u5185\u5bb9\u6982\u8ff0**\uff1a\u201cYoucef Tarfa\u6295\u8d44\u7ec4\u5408\u201d\u90e8\u5206\u8868\u660e\u7f51\u7ad9\u96c6\u4e2d\u5c55\u793aYoucef Tarfa\u7684\u4e2a\u4eba\u6280\u80fd\u3001\u9879\u76ee\u548c\u6210\u5c31\u3002\u8fd9\u79cd\u7f51\u7ad9\u901a\u5e38\u5305\u62ec\u6280\u672f\u7b80\u5386\u3001\u9879\u76ee\u6848\u4f8b\u3001\u7f16\u7801\u793a\u4f8b\u3001\u6559\u80b2\u80cc\u666f\u3001\u5de5\u4f5c\u7ecf\u5386\u7b49\u5185\u5bb9\u3002\n\n2. **\u4e13\u4e1a\u65b9\u5411**\uff1a\u63cf\u8ff0\u4e2d\u63d0\u5230\u7684\u201cBTS SIO\u57f9\u8bad\u751f\u201d\uff0c\u610f\u5473\u7740Youcef Tarfa\u5728\u8ba1\u7b97\u673a\u7cfb\u7edf\u548c\u8f6f\u4ef6\u65b9\u9762\u63a5\u53d7\u8fc7\u4e13\u4e1a\u7684\u57f9\u8bad\uff0c\u4ed6\u7684\u6295\u8d44\u7ec4\u5408\u5f88\u53ef\u80fd\u4f1a\u5305\u62ec\u4e0e\u8fd9\u4e9b\u6280\u80fd\u76f8\u5173\u7684\u9879\u76ee\u548c\u7ecf\u9a8c\u3002\n\n### \u6807\u7b7e\u77e5\u8bc6\u70b9\uff1a\n\n1. **HTML**\uff1a\u6807\u7b7e\u201cHTML\u201d\u8868\u660e\u7f51\u7ad9\u7684\u6784\u5efa\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u4e86\u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\uff08Hypertext Markup Language\uff09\uff0c\u8fd9\u662f\u5efa\u7acb\u7f51\u7ad9\u7684\u57fa\u7840\u6280\u672f\u4e4b\u4e00\uff0c\u7528\u4e8e\u521b\u5efa\u7f51\u9875\u548c\u7f51\u7edc\u5e94\u7528\u3002\n\n### \u538b\u7f29\u5305\u5b50\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u79f0\u5217\u8868\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u6587\u4ef6\u7ed3\u6784**\uff1a\u201cYouceftarfa.github.io-main\u201d\u53ef\u80fd\u4ee3\u8868\u4e86\u7f51\u7ad9\u6e90\u4ee3\u7801\u7684\u4e3b\u6587\u4ef6\u5939\u540d\u79f0\u3002\u5728GitHub\u9879\u76ee\u4e2d\uff0c\u901a\u5e38\u4f1a\u6709\u4e00\u4e2a\u540d\u4e3a\u201cmain\u201d\u7684\u4e3b\u5206\u652f\uff0c\u4ee3\u8868\u5f53\u524d\u5f00\u53d1\u7684\u7a33\u5b9a\u7248\u672c\u3002\n\n2. **\u9879\u76ee\u7ec4\u7ec7**\uff1a\u6587\u4ef6\u540d\u79f0\u4e2d\u7684\u201cmain\u201d\u6697\u793a\u4e86\u8be5\u6587\u4ef6\u5939\u53ef\u80fd\u5305\u542b\u7f51\u7ad9\u7684\u4e3b\u8981\u6587\u4ef6\uff0c\u5982HTML\u6587\u4ef6\u3001\u6837\u5f0f\u8868\uff08CSS\uff09\u3001JavaScript\u6587\u4ef6\u4ee5\u53ca\u53ef\u80fd\u7684\u56fe\u7247\u548c\u8d44\u6e90\u6587\u4ef6\u7b49\u3002\u5b83\u4eec\u662f\u6784\u6210\u7f51\u7ad9\u524d\u7aef\u7684\u8981\u7d20\uff0c\u51b3\u5b9a\u4e86\u7f51\u7ad9\u7684\u7ed3\u6784\u548c\u5916\u89c2\u3002\n\n### \u7efc\u5408\u5206\u6790\u77e5\u8bc6\u70b9\uff1a\n\n- **\u4e2a\u4eba\u54c1\u724c\u7684\u5efa\u7acb**\uff1a\u901a\u8fc7\u521b\u5efa\u548c\u7ef4\u62a4\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0cYoucef Tarfa\u5728\u5efa\u7acb\u81ea\u5df1\u7684\u4e2a\u4eba\u54c1\u724c\u65b9\u9762\u53ef\u80fd\u4f1a\u53d7\u76ca\u3002\u8fd9\u6837\u7684\u7f51\u7ad9\u4e3a\u4ed6\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5728\u7ebf\u5c55\u793a\u81ea\u5df1\u6280\u80fd\u548c\u4f5c\u54c1\u7684\u5e73\u53f0\uff0c\u6709\u52a9\u4e8e\u5438\u5f15\u6f5c\u5728\u96c7\u4e3b\u6216\u5408\u4f5c\u4f19\u4f34\u7684\u5173\u6ce8\u3002\n\n- **\u6280\u672f\u5c55\u793a\u4e0e\u5b9e\u8df5**\uff1a\u7f51\u7ad9\u5185\u5bb9\u5f88\u53ef\u80fd\u5305\u62ec\u5404\u79cd\u6280\u672f\u9879\u76ee\u548c\u5b9e\u8df5\u6848\u4f8b\uff0c\u6d89\u53ca\u7f16\u7a0b\u3001\u7cfb\u7edf\u7ba1\u7406\u3001\u8f6f\u4ef6\u5f00\u53d1\u7b49\u65b9\u9762\uff0c\u4f53\u73b0\u4e86Youcef Tarfa\u7684\u6280\u672f\u5b9e\u529b\u548c\u5bf9BTS SIO\u8bfe\u7a0b\u7684\u6df1\u5165\u7406\u89e3\u3002\n\n- **\u5728\u7ebf\u5b66\u4e60\u4e0e\u5c55\u793a\u7684\u7ed3\u5408**\uff1a\u8be5\u7f51\u7ad9\u4e0d\u4ec5\u5c55\u793a\u4e86Youcef Tarfa\u7684\u5b66\u4e60\u6210\u679c\uff0c\u4e5f\u4e3a\u5176\u4ed6\u5b66\u4e60\u7c7b\u4f3c\u8bfe\u7a0b\u7684\u4e2a\u4f53\u63d0\u4f9b\u4e86\u4e00\u4e2a\u53c2\u8003\u548c\u5b66\u4e60\u7684\u8d44\u6e90\u3002\n\n- **\u5f00\u6e90\u6587\u5316\u548c\u793e\u533a\u8d21\u732e**\uff1a\u7531\u4e8e\u7f51\u7ad9\u6258\u7ba1\u5728GitHub\u4e0a\uff0c\u8fd9\u610f\u5473\u7740Youcef Tarfa\u53ef\u80fd\u63a5\u89e6\u5e76\u53c2\u4e0e\u5f00\u6e90\u6587\u5316\u3002GitHub\u662f\u5168\u7403\u6700\u5927\u7684\u5f00\u6e90\u793e\u533a\uff0c\u8bb8\u591a\u5f00\u53d1\u8005\u5728\u8fd9\u91cc\u5171\u4eab\u4ee3\u7801\u3001\u4ea4\u6d41\u60f3\u6cd5\u3001\u5408\u4f5c\u89e3\u51b3\u95ee\u9898\u3002\u4ed6\u7684\u9879\u76ee\u53ef\u80fd\u5bf9\u5f00\u6e90\u793e\u533a\u6709\u6240\u8d21\u732e\uff0c\u4e5f\u53ef\u80fd\u63a5\u53d7\u5176\u4ed6\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u548c\u5efa\u8bae\u3002\n\n- **\u6c42\u804c\u5de5\u5177\u4e0e\u804c\u4e1a\u53d1\u5c55**\uff1a\u8be5\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\u53ef\u4ee5\u4f5c\u4e3a\u6c42\u804c\u5de5\u5177\uff0c\u4e3aYoucef Tarfa\u5728IT\u884c\u4e1a\u7684\u53d1\u5c55\u52a9\u529b\u3002\u901a\u8fc7\u5c55\u793a\u4e2a\u4eba\u6280\u80fd\u548c\u9879\u76ee\uff0c\u4ed6\u53ef\u4ee5\u5438\u5f15\u6f5c\u5728\u96c7\u4e3b\uff0c\u4e3a\u81ea\u5df1\u7684\u804c\u4e1a\u751f\u6daf\u94fa\u8def\u3002\n\n### \u7ed3\u8bed\uff1a\n\n\u7efc\u5408\u4ee5\u4e0a\u4fe1\u606f\uff0c\u53ef\u4ee5\u770b\u51fa\u8fd9\u4e2a\u6587\u4ef6\u6d89\u53ca\u4e86\u4e2a\u4eba\u54c1\u724c\u5efa\u8bbe\u3001\u6280\u672f\u5c55\u793a\u3001\u5f00\u6e90\u6587\u5316\u3001\u804c\u4e1a\u53d1\u5c55\u7b49\u591a\u65b9\u9762\u7684\u77e5\u8bc6\u70b9\u3002\u5bf9\u4e8eIT\u4e13\u4e1a\u4eba\u58eb\u6765\u8bf4\uff0c\u7ef4\u62a4\u4e00\u4e2a\u5185\u5bb9\u4e30\u5bcc\u3001\u7ed3\u6784\u826f\u597d\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0c\u662f\u63d0\u5347\u4e2a\u4eba\u6280\u80fd\u5c55\u793a\u3001\u6269\u5c55\u804c\u4e1a\u7f51\u7edc\u548c\u4fc3\u8fdb\u4e2a\u4eba\u804c\u4e1a\u6210\u957f\u7684\u91cd\u8981\u9014\u5f84\u3002\u540c\u65f6\uff0c\u901a\u8fc7\u53c2\u4e0eGitHub\u8fd9\u6837\u7684\u5f00\u6e90\u5e73\u53f0\uff0c\u4e0d\u4ec5\u53ef\u4ee5\u63d0\u9ad8\u81ea\u8eab\u7684\u6280\u80fd\uff0c\u8fd8\u80fd\u4e0e\u5168\u7403\u7684\u5f00\u53d1\u8005\u5171\u540c\u8fdb\u6b65\uff0c\u4e3a\u8f6f\u4ef6\u884c\u4e1a\u7684\u53d1\u5c55\u4f5c\u51fa\u8d21\u732e\u3002
\"recommend-type\"

\u3010\u533b\u7597\u8bbe\u5907\u7ef4\u4fee\u901f\u6210\u79d8\u7c4d\u3011\uff1a\u4ece\u65b0\u624b\u5230\u4e13\u5bb6\u76845\u5927\u5fc5\u5b66\u6280\u5de7

\n\n# \u6458\u8981\n\u672c\u6587\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u533b\u7597\u8bbe\u5907\u7ef4\u4fee\u7684\u57fa\u7840\u77e5\u8bc6\u3001\u8bbe\u5907\u5206\u7c7b\u548c\u5de5\u4f5c\u539f\u7406\u3001\u65e5\u5e38\u4fdd\u517b\u4e0e\u6545\u969c\u6392\u67e5\u6280\u5de7\u3001\u7ef4\u4fee\u5b9e\u8df5\u64cd\u4f5c\u4ee5\u53ca\u6cd5\u89c4\u9075\u4ece\u4e0e\u4e13\u4e1a\u53d1\u5c55\u3002\u901a\u8fc7\u5bf9\u533b\u7597\u8bbe\u5907\u5206\u7c7b\u548c\u5de5\u4f5c\u539f\u7406\u7684\u9610\u8ff0\uff0c\u4e3a\u7ef4\u4fee\u4eba\u5458\u63d0\u4f9b\u4e86\u6df1\u5165\u7406\u89e3\u8bbe\u5907\u6027\u80fd\u4e0e\u7ef4\u62a4\u8981\u6c42\u7684\u57fa\u7840\u3002\u540c\u65f6\uff0c\u7ed3\u5408\u65e5\u5e38\u4fdd\u517b\u7684\u91cd\u8981\u6027\u548c\u6545\u969c\u6392\u67e5\u7684\u7406
\n \n\n \n \n"} +{"content_list": [[{"type": "title", "raw_content": "

pandas \u5206\u6279\u8bfb\u5165execl

", "content": {"title_content": "pandas \u5206\u6279\u8bfb\u5165execl", "level": "1"}}, {"type": "paragraph", "raw_content": "
\u65f6\u95f4: 2023-06-29 20:05:48
", "content": [{"c": "\u65f6\u95f4: 2023-06-29 20:05:48", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u6d4f\u89c8: 99
", "content": [{"c": "\u6d4f\u89c8: 99", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 c h u n k s i z e \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002c h u n k s i z e \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 c h u n k s i z e \u53c2\u6570\u7684\u503c\u3002
", "content": [{"c": "\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408", "t": "text"}, {"c": "c h u n k s i z e", "t": "equation-inline"}, {"c": "\u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002", "t": "text"}, {"c": "c h u n k s i z e", "t": "equation-inline"}, {"c": "\u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539", "t": "text"}, {"c": "c h u n k s i z e", "t": "equation-inline"}, {"c": "\u53c2\u6570\u7684\u503c\u3002", "t": "text"}]}, {"type": "paragraph", "raw_content": "
\u9605\u8bfb\u5168\u6587
", "content": [{"c": "\u9605\u8bfb\u5168\u6587", "t": "text"}]}, {"type": "title", "raw_content": "

\u76f8\u5173\u63a8\u8350

", "content": {"title_content": "\u76f8\u5173\u63a8\u8350", "level": "2"}}, {"type": "title", "raw_content": "

\u5927\u5bb6\u5728\u770b

", "content": {"title_content": "\u5927\u5bb6\u5728\u770b", "level": "2"}}, {"type": "title", "raw_content": "

\u6700\u65b0\u63a8\u8350

", "content": {"title_content": "\u6700\u65b0\u63a8\u8350", "level": "2"}}]], "main_html": "

pandas \u5206\u6279\u8bfb\u5165execl

\u65f6\u95f4: 2023-06-29 20:05:48
\u6d4f\u89c8: 99
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 c h u n k s i z e \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002c h u n k s i z e \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 c h u n k s i z e \u53c2\u6570\u7684\u503c\u3002
\u9605\u8bfb\u5168\u6587

\u76f8\u5173\u63a8\u8350

\u5927\u5bb6\u5728\u770b

\u6700\u65b0\u63a8\u8350

", "statics": {"title": 4, "paragraph": 4, "paragraph.text": 7, "paragraph.equation-inline": 3}, "url": "https://blog.csdn.net/moon_sky1999/article/details/52744845", "content": "# pandas \u5206\u6279\u8bfb\u5165execl\n\n\u65f6\u95f4: 2023-06-29 20:05:48\n\n\u6d4f\u89c8: 99\n\n\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 \\`read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()\\` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 $c h u n k s i z e$ \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002 $c h u n k s i z e$ \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n\\`\\`\\`[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n\\# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n\\# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n\\# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n\\# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n\\`\\`\\`\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 $c h u n k s i z e$ \u53c2\u6570\u7684\u503c\u3002\n\n\u9605\u8bfb\u5168\u6587\n\n## \u76f8\u5173\u63a8\u8350\n\n## \u5927\u5bb6\u5728\u770b\n\n## \u6700\u65b0\u63a8\u8350\n", "html": "\npandas \u5206\u6279\u8bfb\u5165execl - CSDN\u6587\u5e93 \n \n \n \n\n \n \n \n \n\n \n\n \n\n \n\n \n
\u9996\u9875pandas \u5206\u6279\u8bfb\u5165execl

pandas \u5206\u6279\u8bfb\u5165execl

\u65f6\u95f4: 2023-06-29 20:05:48 \u6d4f\u89c8: 99
\u4f60\u53ef\u4ee5\u4f7f\u7528 [pandas](https://wenku.csdn.net/doc/6412b725be7fbd1778d4940f?spm=1055.2569.3001.10083&kwd=pandas) \u7684 `read_[excel](https://wenku.csdn.net/doc/640n8f90vm?spm=1055.2569.3001.10083&kwd=excel)()` \u65b9\u6cd5\uff0c\u5e76\u7ed3\u5408 `chunksize` \u53c2\u6570\u6765\u5206\u6279\u8bfb\u5165 Excel \u6587\u4ef6\u3002`chunksize` \u53c2\u6570\u6307\u5b9a\u4e86\u6bcf\u6b21\u8bfb\u5165\u7684\u884c\u6570\uff0c\u53ef\u4ee5\u6839\u636e\u4f60\u7684\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```[python](https://wenku.csdn.net/doc/6412b46ebe7fbd1778d3f92a?spm=1055.2569.3001.10083&kwd=python)\n[import](https://wenku.csdn.net/doc/5cpc346q6x?spm=1055.2569.3001.10083&kwd=import) pandas as pd\n\n# \u6bcf\u6b21\u8bfb\u5165 1000 \u884c\u6570\u636e\nchunksize = 1000\n# Excel \u6587\u4ef6\u8def\u5f84\nexcel_path = 'example.xlsx'\n\n# \u904d\u5386\u6bcf\u4e2a\u5206\u5757\u6570\u636e\nfor chunk in pd.read_excel(excel_path, chunksize=chunksize):\n# \u5904\u7406\u5f53\u524d\u5206\u5757\u6570\u636e\n[print](https://wenku.csdn.net/doc/6401acb5cce7214c316ecd5e?spm=1055.2569.3001.10083&kwd=print)(chunk.head())\n```\n\n\u4e0a\u8ff0\u4ee3\u7801\u5c06 Excel \u6587\u4ef6\u6309\u7167\u6bcf\u6b21\u8bfb\u53d6 1000 \u884c\u6570\u636e\u8fdb\u884c\u5206\u5757\uff0c\u7136\u540e\u904d\u5386\u6bcf\u4e2a\u5206\u5757\u5e76\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539 `chunksize` \u53c2\u6570\u7684\u503c\u3002
\u9605\u8bfb\u5168\u6587

\u76f8\u5173\u63a8\u8350

\"docx\"
c\u8bed\u8a00\u5165\u95e8\nC\u8bed\u8a00\u4e00\u7ecf\u51fa\u73b0\u5c31\u4ee5\u5176\u529f\u80fd\u4e30\u5bcc\u3001\u8868\u8fbe\u80fd\u529b\u5f3a\u3001\u7075\u6d3b\u65b9\u4fbf\u3001\u5e94\u7528\u9762\u5e7f\u7b49\u7279\u70b9\u8fc5\u901f\u5728\u5168\u4e16\u754c\u666e\u53ca\u548c\u63a8\u5e7f\u3002C\u8bed\u8a00\u4e0d\u4f46\u6267\u884c\u6548\u7387\u9ad8\u800c\u4e14\u53ef\u79fb\u690d\u6027\u597d\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u5e94\u7528\u8f6f\u4ef6\u3001\u9a71\u52a8\u3001\u64cd\u4f5c\u7cfb\u7edf\u7b49\u3002C\u8bed\u8a00\u4e5f\u662f\u5176\u5b83\u4f17\u591a\u9ad8\u7ea7\u8bed\u8a00\u7684\u9f3b\u7956\u8bed\u8a00\uff0c\u6240\u4ee5\u8bf4\u5b66\u4e60C\u8bed\u8a00\u662f\u8fdb\u5165\u7f16\u7a0b\u4e16\u754c\u7684\u5fc5\u4fee\u8bfe\u3002hello,world\n#include<stdio.h>\nint main()\n{\n/*\u5728\u53cc\u5f15\u53f7\u4e2d\u95f4\u8f93\u5165Hello World*/\nprintf(\"Hello World\");\nreturn 0;\n}\n\n\u6ce8\uff1a\u5728\u6700\u65b0\u7684C\u6807\u51c6\u4e2d\uff0cmain\u51fd\u6570\u524d\u7684\u7c7b\u578b\u4e3aint\u800c\u4e0d\u662fvoid\nc\u8bed\u8a00\u7684\u5177\u4f53\u7ed3\u6784\u7b80\u5355\u6765\u8bf4\uff0c\u4e00\u4e2aC\u7a0b\u5e8f\u5c31\u662f\u7531\u82e5\u5e72\u5934\u6587\u4ef6\u548c\u51fd\u6570\u7ec4\u6210\u3002#include <stdio.h>\u5c31\u662f\u4e00\u6761\u9884\u5904\u7406\u547d\u4ee4, \u5b83\u7684\u4f5c\u7528\u662f\u901a\u77e5C\u8bed\u8a00\u7f16\u8bd1\u7cfb\u7edf\u5728\u5bf9C\u7a0b\u5e8f\u8fdb\u884c\u6b63\u5f0f\u7f16\u8bd1\u4e4b\u524d\u9700\u505a\u4e00\u4e9b\u9884\u5904\u7406\u5de5\u4f5c\u3002\u51fd\u6570\u5c31\u662f\u5b9e\u73b0\u4ee3\u7801\u903b\u8f91\u7684\u4e00\u4e2a\u5c0f\u7684\u5355\u5143\u3002\u5fc5\u4e0d\u53ef\u5c11\u4e4b\u4e3b\u51fd\u6570\u4e00\u4e2aC\u7a0b\u5e8f\u6709\u4e14\u53ea\u6709\u4e00\u4e2a\u4e3b\u51fd\u6570\uff0c\u5373main\u51fd\u6570\u3002C\u7a0b\u5e8f\u5c31\u662f\u6267\u884c\u4e3b\u51fd\u6570\u91cc\u7684\u4ee3\u7801\uff0c\u4e5f\u53ef\u4ee5\u8bf4\u8fd9\u4e2a\u4e3b\u51fd\u6570\u5c31\u662fC\u8bed\u8a00\u4e2d\u7684\u552f\u4e00\u5165\u53e3\u3002\u800cmain\u524d\u9762\u7684int\u5c31\u662f\u4e3b\u51fd\u6570\u7684\u7c7b\u578b.printf()\u662f\u683c\u5f0f\u8f93\u51fa\u51fd\u6570\uff0c\u8fd9\u91cc

\u6700\u65b0\u63a8\u8350

\"recommend-type\"

pandas\u5206\u6279\u8bfb\u53d6\u5927\u6570\u636e\u96c6\u6559\u7a0b

`pandas`\u5e93\u63d0\u4f9b\u4e86\u4e00\u79cd\u7075\u6d3b\u7684\u65b9\u6cd5\uff0c\u5373\u5206\u6279\u8bfb\u53d6\u6570\u636e\u96c6\uff0c\u4ee5\u89e3\u51b3\u5185\u5b58\u9650\u5236\u7684\u95ee\u9898\u3002\u672c\u6559\u7a0b\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u5229\u7528`pandas`\u7684\u8fd9\u4e00\u529f\u80fd\u6765\u9ad8\u6548\u5730\u5904\u7406\u5927\u6570\u636e\u3002 \u5728\u5904\u7406\u5927\u578b\u6570\u636e\u96c6\u65f6\uff0c\u76f4\u63a5\u4e00\u6b21\u6027\u52a0\u8f7d\u6240\u6709\u6570\u636e\u53ef\u80fd\u5bfc\u81f4\u5185\u5b58\u6ea2\u51fa\uff0c\u7279\u522b...
\"recommend-type\"

Pandas\u8bfb\u53d6csv\u65f6\u5982\u4f55\u8bbe\u7f6e\u5217\u540d

\u5728\u6570\u636e\u5206\u6790\u9886\u57df\uff0cPandas\u5e93\u662fPython\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\uff0c\u5b83\u63d0\u4f9b\u4e86\u9ad8\u6548\u7684\u6570\u636e\u5904\u7406\u80fd\u529b\u3002Pandas\u80fd\u591f\u65b9\u4fbf\u5730\u8bfb\u53d6\u548c\u5199\u5165\u591a\u79cd\u683c\u5f0f\u7684\u6570\u636e\u6587\u4ef6\uff0c\u5176\u4e2dCSV\uff08Comma Separated Values\uff09\u662f\u6700\u5e38\u89c1\u7684\u6570\u636e\u5b58\u50a8\u683c\u5f0f\u4e4b\u4e00\u3002\u672c\u7bc7\u5c06\u8be6\u7ec6...
\"recommend-type\"

pandas\u4e2dTimestamp\u7c7b\u7528\u6cd5\u8be6\u89e3

\u5728Python\u7684pandas\u5e93\u4e2d\uff0cTimestamp\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u7c7b\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u7279\u5b9a\u7684\u65e5\u671f\u548c\u65f6\u95f4\u70b9\u3002Timestamp\u7c7b\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5904\u7406\u65e5\u671f\u548c\u65f6\u95f4\u6570\u636e\uff0c\u662f\u6570\u636e\u5206\u6790\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\u3002\u4ee5\u4e0b\u662f\u5bf9pandas\u4e2dTimestamp\u7c7b\u7684...
\"recommend-type\"

python pandas\u751f\u6210\u65f6\u95f4\u5217\u8868

\u5728Python\u7f16\u7a0b\u8bed\u8a00\u4e2d\uff0cPandas\u5e93\u662f\u4e00\u4e2a\u5f3a\u5927\u7684\u6570\u636e\u5206\u6790\u5de5\u5177\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u6570\u636e\u5904\u7406\u529f\u80fd\uff0c\u5305\u62ec\u751f\u6210\u65f6\u95f4\u5e8f\u5217\u6570\u636e\u3002\u5728\u5904\u7406\u6d89\u53ca\u65f6\u95f4\u7684\u6570\u636e\u65f6\uff0cPandas\u7684\u65f6\u95f4\u5217\u8868\uff08\u65f6\u95f4\u5e8f\u5217\uff09\u626e\u6f14\u7740\u81f3\u5173\u91cd\u8981\u7684\u89d2\u8272\u3002\u672c\u7bc7\u5c06\u6df1\u5165\u63a2\u8ba8\u5982\u4f55\u4f7f\u7528...
\"recommend-type\"

pandas\u548cspark dataframe\u4e92\u76f8\u8f6c\u6362\u5b9e\u4f8b\u8be6\u89e3

\u5728\u5927\u6570\u636e\u5904\u7406\u9886\u57df\uff0c`pandas` \u548c `Spark DataFrame` \u662f\u4e24\u4e2a\u91cd\u8981\u7684\u5de5\u5177\u3002`pandas` \u662f Python \u4e2d\u7528\u4e8e\u6570\u636e\u5904\u7406\u548c\u5206\u6790\u7684\u5e93\uff0c\u800c `Spark DataFrame` \u662f Apache Spark \u7684\u6838\u5fc3\u7ec4\u4ef6\uff0c\u63d0\u4f9b\u4e86\u4e00\u79cd\u5206\u5e03\u5f0f\u6570\u636e\u5904\u7406\u80fd\u529b\u3002\u672c\u6587\u5c06\u8be6\u7ec6...
\"recommend-type\"

\u6df1\u5165\u63a2\u7d22CSS\u62c9\u7279\u6d4b\u8bd5\u65b9\u6cd5

\u6839\u636e\u63d0\u4f9b\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u6211\u4eec\u65e0\u6cd5\u83b7\u53d6\u5177\u4f53\u7684\u6587\u4ef6\u5185\u5bb9\uff0c\u56e0\u6b64\uff0c\u9700\u8981\u4ece\u6587\u4ef6\u7684\u6807\u9898\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\uff0c\u63cf\u8ff0\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\uff0c\u6807\u7b7e\u201cCSS\u201d\uff0c\u4ee5\u53ca\u538b\u7f29\u5305\u5b50\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u79f0\u5217\u8868\u201clat-test-main\u201d\u6765\u63a8\u65ad\u76f8\u5173\u7684\u77e5\u8bc6\u70b9\u3002\u9274\u4e8e\u8fd9\u4e9b\u4fe1\u606f\u91cf\u6709\u9650\uff0c\u6211\u4eec\u5c06\u4e3b\u8981\u56f4\u7ed5\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u8fd9\u4e00\u4e3b\u9898\u8fdb\u884c\u63a2\u8ba8\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53caCSS\u76f8\u5173\u5185\u5bb9\u3002\n\n\u9996\u5148\uff0c\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u53ef\u80fd\u6307\u7684\u662f\u67d0\u79cd\u7279\u5b9a\u7684\u8f6f\u4ef6\u6d4b\u8bd5\u65b9\u6cd5\u6216\u8005\u6280\u672f\u8bc4\u4f30\u6d41\u7a0b\u3002\u8003\u8651\u5230\u6587\u4ef6\u540d\u201clat-test-main\u201d\u6697\u793a\u5b83\u53ef\u80fd\u662f\u67d0\u4e2a\u9879\u76ee\u7684\u4e3b\u8981\u6d4b\u8bd5\u6587\u4ef6\uff0c\u6211\u4eec\u53ef\u4ee5\u5408\u7406\u63a8\u6d4b\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u53ef\u80fd\u662f\u6d4b\u8bd5\u7684\u4ee3\u7801\u811a\u672c\u3001\u6d4b\u8bd5\u7528\u4f8b\u96c6\u5408\u3001\u6216\u8005\u662f\u4e0e\u6d4b\u8bd5\u76f8\u5173\u7684\u914d\u7f6e\u6587\u4ef6\u3002\u4f46\u5728\u6ca1\u6709\u66f4\u591a\u4e0a\u4e0b\u6587\u7684\u60c5\u51b5\u4e0b\uff0c\u5f88\u96be\u786e\u5b9a\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u5177\u4f53\u6307\u4ee3\u7684\u662f\u4ec0\u4e48\u3002\n\n\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u8ba8\u8bba\u201cCSS\u201d\u3002CSS\u662f\u201c\u5c42\u53e0\u6837\u5f0f\u8868\uff08Cascading Style Sheets\uff09\u201d\u7684\u7f29\u5199\uff0c\u662f\u4e00\u79cd\u7528\u4e8e\u63a7\u5236\u7f51\u9875\u5916\u89c2\u548c\u5e03\u5c40\u7684\u6280\u672f\u6807\u51c6\u3002CSS\u63cf\u8ff0\u4e86\u5982\u4f55\u5728\u5c4f\u5e55\u4e0a\uff0c\u7eb8\u5f20\u4e0a\uff0c\u6216\u5728\u5176\u4ed6\u5a92\u4f53\u4e0a\u5c55\u73b0HTML\u6216XML\uff08\u5305\u62ec\u5404\u79cdXML\u65b9\u8a00\uff0c\u6bd4\u5982SVG\u6216XHTML\uff09\u6587\u6863\u3002\u5b83\u4f7f\u5f00\u53d1\u8005\u80fd\u591f\u5c06\u5185\u5bb9\u4e0e\u8868\u73b0\u5206\u79bb\uff0c\u8fd9\u6709\u52a9\u4e8e\u5bf9\u7f51\u7ad9\u8fdb\u884c\u4fee\u6539\uff0c\u800c\u65e0\u9700\u89e6\u53ca\u5185\u5bb9\u672c\u8eab\u3002CSS\u7684\u89c4\u5219\u7531\u9009\u62e9\u5668\u548c\u58f0\u660e\u5757\u7ec4\u6210\u3002\u9009\u62e9\u5668\u6307\u660e\u4e86\u6837\u5f0f\u89c4\u5219\u5e94\u8be5\u5e94\u7528\u4e8e\u54ea\u4e9bHTML\u5143\u7d20\uff0c\u800c\u58f0\u660e\u5757\u5219\u5305\u542b\u4e86\u4e00\u4e2a\u6216\u591a\u4e2a\u7528\u5206\u53f7\u9694\u5f00\u7684\u5c5e\u6027\u503c\u5bf9\u3002\n\n\u7136\u800c\uff0c\u7531\u4e8e\u6807\u9898\u3001\u63cf\u8ff0\u548c\u6807\u7b7e\u5e76\u6ca1\u6709\u76f4\u63a5\u63d0\u4f9b\u5173\u4e8eCSS\u7684\u5177\u4f53\u4fe1\u606f\uff0c\u6211\u4eec\u4e5f\u65e0\u6cd5\u786e\u5b9aCSS\u5728\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u4e2d\u626e\u6f14\u7684\u5177\u4f53\u89d2\u8272\u3002\u4e0d\u8fc7\uff0c\u5047\u8bbeCSS\u6807\u7b7e\u610f\u5473\u7740\u6d4b\u8bd5\u53ef\u80fd\u4e0e\u7f51\u9875\u7684\u6837\u5f0f\u8868\u6216\u8005\u524d\u7aef\u8bbe\u8ba1\u6709\u5173\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u60f3\u8c61\uff0c\u6d4b\u8bd5\u53ef\u80fd\u6db5\u76d6\u4e86\u5bf9\u7f51\u9875\u6837\u5f0f\u7684\u9a8c\u8bc1\u3001\u5bf9\u5e03\u5c40\u7684\u6d4b\u8bd5\u3001\u5bf9\u4ea4\u4e92\u6548\u679c\u7684\u68c0\u67e5\u7b49\u3002\n\n\u5728\u5f00\u53d1\u548c\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\uff0cCSS\u7684\u6b63\u786e\u6027\u81f3\u5173\u91cd\u8981\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u4e0eCSS\u76f8\u5173\u7684\u6d4b\u8bd5\u65b9\u6cd5\uff1a\n\n1. CSS\u9a8c\u8bc1\u6d4b\u8bd5\uff1a\u786e\u4fddCSS\u4ee3\u7801\u7b26\u5408\u6807\u51c6\uff0c\u5e76\u4e14\u6ca1\u6709\u8bed\u6cd5\u9519\u8bef\u3002\u53ef\u4ee5\u4f7f\u7528\u5728\u7ebf\u5de5\u5177\u5982W3C\u7684CSS\u9a8c\u8bc1\u670d\u52a1\u8fdb\u884c\u3002\n\n2. \u517c\u5bb9\u6027\u6d4b\u8bd5\uff1a\u68c0\u67e5\u7f51\u7ad9\u5728\u4e0d\u540c\u7684\u6d4f\u89c8\u5668\u548c\u8bbe\u5907\u4e0a\u663e\u793a\u7684\u4e00\u81f4\u6027\u3002\u7531\u4e8e\u6d4f\u89c8\u5668\u5bf9CSS\u7684\u652f\u6301\u5b58\u5728\u5dee\u5f02\uff0c\u8fd9\u4e00\u6b65\u9aa4\u5341\u5206\u91cd\u8981\u3002\n\n3. \u6027\u80fd\u6d4b\u8bd5\uff1a\u5206\u6790CSS\u6587\u4ef6\u7684\u5927\u5c0f\u3001\u590d\u6742\u5ea6\u4ee5\u53ca\u4e0b\u8f7d\u548c\u6e32\u67d3\u65f6\u95f4\uff0c\u4f18\u5316\u8fd9\u4e9b\u6027\u80fd\u6307\u6807\u4ee5\u63d0\u9ad8\u7f51\u9875\u52a0\u8f7d\u901f\u5ea6\u3002\n\n4. \u53ef\u8bbf\u95ee\u6027\u6d4b\u8bd5\uff1a\u786e\u4fdd\u7f51\u7ad9\u5bf9\u4e0d\u540c\u9700\u6c42\u7684\u7528\u6237\uff0c\u5305\u62ec\u6709\u89c6\u89c9\u969c\u788d\u7684\u7528\u6237\uff0c\u662f\u6613\u4e8e\u5bfc\u822a\u548c\u4f7f\u7528\u7684\u3002\n\n5. \u5355\u5143\u6d4b\u8bd5\uff1a\u5bf9\u4e8e\u4f7f\u7528CSS\u9884\u5904\u7406\u5668\u6216\u7f16\u8bd1\u5de5\u5177\u751f\u6210\u6700\u7ec8\u6837\u5f0f\u8868\u7684\u60c5\u51b5\uff0c\u5355\u5143\u6d4b\u8bd5\u53ef\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u5de5\u5177\u7684\u6b63\u786e\u6027\u3002\n\n6. \u529f\u80fd\u6d4b\u8bd5\uff1a\u68c0\u67e5\u7f51\u9875\u4e0a\u7684\u6837\u5f0f\u5143\u7d20\u662f\u5426\u6309\u7167\u8bbe\u8ba1\u5b9e\u73b0\uff0c\u6bd4\u5982\u5b57\u4f53\u3001\u989c\u8272\u3001\u5e03\u5c40\u548c\u5176\u4ed6\u89c6\u89c9\u6548\u679c\u3002\n\n\u7531\u4e8e\u201clat-test-main\u201d\u6697\u793a\u8fd9\u662f\u4e00\u4e2a\u4e3b\u8981\u7684\u6d4b\u8bd5\u6587\u4ef6\uff0c\u5b83\u53ef\u80fd\u5305\u542b\u4e86\u4e0a\u8ff0\u6d4b\u8bd5\u65b9\u6cd5\u4e2d\u7684\u4e00\u79cd\u6216\u591a\u79cd\u7684\u5b9e\u73b0\u3002\u5728\u5b9e\u9645\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u6d4b\u8bd5\u901a\u5e38\u662f\u5728\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u652f\u6301\u4e0b\u8fdb\u884c\u7684\uff0c\u6bd4\u5982Git\uff0c\u5b83\u53ef\u4ee5\u5e2e\u52a9\u56e2\u961f\u6210\u5458\u7ba1\u7406\u4e0d\u540c\u7684\u6d4b\u8bd5\u7248\u672c\uff0c\u5e76\u8ddf\u8e2a\u4ee3\u7801\u66f4\u6539\u3002\n\n\u7efc\u4e0a\u6240\u8ff0\uff0c\u5173\u4e8e\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u548c\u201cCSS\u201d\u7684\u77e5\u8bc6\u70b9\u96c6\u4e2d\u5728\u6d4b\u8bd5\u65b9\u6cd5\u548c\u6837\u5f0f\u8868\u7684\u5e94\u7528\u4e0a\u3002\u4e0d\u8fc7\uff0c\u4e3a\u4e86\u66f4\u51c6\u786e\u5730\u63cf\u8ff0\u201c\u62c9\u7279\u6d4b\u8bd5\u201d\u7684\u542b\u4e49\uff0c\u6211\u4eec\u9700\u8981\u66f4\u591a\u7684\u4e0a\u4e0b\u6587\u4fe1\u606f\u6216\u8005\u76f4\u63a5\u8bbf\u95ee\u76f8\u5173\u7684\u6587\u4ef6\u5185\u5bb9\u3002\u5728\u5b9e\u9645\u5de5\u4f5c\u4e2d\uff0c\u4e86\u89e3\u9879\u76ee\u9700\u6c42\u3001\u6d4b\u8bd5\u76ee\u6807\u548c\u73af\u5883\u914d\u7f6e\u5bf9\u4e8e\u6210\u529f\u5730\u5b9e\u65bd\u6d4b\u8bd5\u8ba1\u5212\u81f3\u5173\u91cd\u8981\u3002
\"recommend-type\"

\u65b0\u5510IAP\u6982\u5ff5\u89e3\u6790

\n\n# \u6458\u8981\nIAP\uff08In-Application Programming\uff09\u7f16\u7a0b\u662f\u4e00\u79cd\u5728\u5e94\u7528\u8fd0\u884c\u65f6\u66f4\u65b0\u56fa\u4ef6\u7684\u5148\u8fdb\u65b9\u6cd5\uff0c\u5b83\u63d0\u4f9b\u4e86\u7cfb\u7edf\u66f4\u65b0\u7684\u7075\u6d3b\u6027\u548c\u4fbf\u5229\u6027\u3002\u672c\u6587\u5168\u9762\u4ecb\u7ecd\u4e86IAP\u7f16\u7a0b\u7684\u6982\u5ff5\u3001\u6280\u672f\u57fa\u7840\u548c\u5b9e\u8df5\u5e94\u7528\uff0c\u91cd\u70b9\u5206\u6790\u4e86IAP\u5728\u65b0\u5510\u5fae\u63a7\u5236\u5668\u4e2d\u7684\u5b9e\u73b0\u673a\u5236\uff0c\u5305\u62ec\u5176\u5185\u5b58\u7ed3\u6784\u548c\u5de5\u4f5c\u6d41\u7a0b\uff0c\u5e76\u63a2\u8ba8\u4e86\u8f6f\u4ef6\u5de5\u5177\u548c\u5f00\u53d1\u73af\u5883\u7684\u914d\u7f6e\u3002\u540c\u65f6\uff0c\u672c\u6587\u901a\u8fc7\u5b9e\u9645\u6848\u4f8b\u6df1\u5165\u7814\u7a76\u4e86IAP\u5f00\u53d1\u6d41\u7a0b\u3001\u5b89\u5168\u6027\u548c\u9519\u8bef\u5904\u7406\u7b56\u7565\uff0c\u4ee5\u53ca\u5728\u7269\u8054\u7f51\u8bbe\u5907\u548c\u667a\u80fd\u5bb6\u5c45\u7b49\u9886\u57df\u7684\u9ad8\u7ea7\u5e94\u7528\u3002\u6700\u540e\uff0c\u9488\u5bf9IAP\u9879\u76ee\u7684\u7ba1
\"recommend-type\"

fix_eco_timing \u5199\u51fa\u811a\u672c

`fix_eco_timing`\u8fd9\u4e2a\u540d\u5b57\u770b\u8d77\u6765\u50cf\u662f\u7528\u4e8e\u67d0\u79cd\u7279\u5b9a\u73af\u5883\u4e0b\u7684\u811a\u672c\uff0c\u6bd4\u5982\u53ef\u80fd\u662f\u7528\u4e8e\u8c03\u6574\u7535\u5b50\u7ec4\u4ef6\u6216\u7535\u5b50\u4ea7\u54c1\u7684\u5de5\u4f5c\u5468\u671f\u4f18\u5316\u80fd\u6e90\u6548\u7387\u7684\u4e00\u79cd\u5de5\u5177\u3002\u7136\u800c\uff0c\u6ca1\u6709\u5177\u4f53\u7684\u4e0a\u4e0b\u6587\uff0c\u5f88\u96be\u63d0\u4f9b\u8be6\u7ec6\u7684\u811a\u672c\u5185\u5bb9\u3002\u901a\u5e38\u8fd9\u6837\u7684\u811a\u672c\u53ef\u80fd\u4f1a\u5305\u542b\u4ee5\u4e0b\u51e0\u4e2a\u90e8\u5206\uff1a\n\n```bash\n#!/bin/bash\n# Fix Eco Timing Script\n\n# 1. \u83b7\u53d6\u5f53\u524d\u8bbe\u5907\u72b6\u6001\ndevice_status=$(get_device_status)\n\n# 2. \u68c0\u67e5\u662f\u5426\u8fbe\u5230\u8282\u80fd\u6a21\u5f0f\u6761\u4ef6\nif [ "$device_status" == "idle" ]; then\n# 3. \u8c03\u6574\u5de5\u4f5c\u9891\u7387\u6216\u7535\u6e90\u7ba1\u7406\u8bbe\u7f6e\nad
\"recommend-type\"

BTS SIO\u57f9\u8bad\u751fYoucef Tarfa\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9

\u6839\u636e\u63d0\u4f9b\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u6211\u4eec\u53ef\u4ee5\u63a8\u65ad\u51fa\u4e00\u4e9b\u5173\u952e\u77e5\u8bc6\u70b9\uff1a\n\n### \u6807\u9898\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9**\uff1a\u6807\u9898\u4e2d\u7684\u201cYouceftarfa.github.io\u201d\u8868\u660e\u8fd9\u662f\u4e00\u4e2a\u5728\u7ebf\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0c\u8fd9\u901a\u5e38\u7528\u4e8e\u5c55\u793a\u4e2a\u4eba\u7684\u9879\u76ee\u3001\u7ecf\u9a8c\u548c\u6280\u80fd\u3002\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\u662f\u4e13\u4e1aIT\u4eba\u58eb\u7528\u6765\u5411\u6f5c\u5728\u96c7\u4e3b\u3001\u5ba2\u6237\u6216\u5408\u4f5c\u4f19\u4f34\u5c55\u793a\u4ed6\u4eec\u4e13\u4e1a\u80fd\u529b\u7684\u91cd\u8981\u5de5\u5177\u3002\n\n2. **GitHub.io\u57df\u540d**\uff1a\u57df\u540d\u4e2d\u7684\u201c.github.io\u201d\u610f\u5473\u7740\u8fd9\u662f\u4e00\u4e2a\u6258\u7ba1\u5728GitHub\u5e73\u53f0\u4e0a\u7684\u4e2a\u4eba\u7f51\u7ad9\u3002GitHub\u4e0d\u4ec5\u63d0\u4f9b\u6e90\u4ee3\u7801\u6258\u7ba1\u670d\u52a1\uff0c\u4e5f\u652f\u6301\u7528\u6237\u901a\u8fc7GitHub Pages\u529f\u80fd\u6765\u53d1\u5e03\u4e2a\u4eba\u7ad9\u70b9\uff0c\u8fd9\u901a\u5e38\u7528\u4e8e\u5f00\u6e90\u9879\u76ee\u5c55\u793a\u3001\u4e2a\u4eba\u7b80\u5386\u5c55\u793a\u3001\u6280\u672f\u535a\u5ba2\u7b49\u591a\u79cd\u7528\u9014\u3002\n\n3. **BTS SIO\u57f9\u8bad\u751f**\uff1a\u8fd9\u53ef\u80fd\u662fYoucef Tarfa\u53c2\u4e0e\u7684\u4e00\u4e2a\u57f9\u8bad\u8ba1\u5212\u6216\u8bfe\u7a0b\u7684\u540d\u79f0\uff0cBTS SIO\uff08Brevet de Technicien Sup\u00e9rieur \u2013 Syst\u00e8mes Informatiques et Logiciels\uff09\u662f\u6cd5\u56fd\u7684\u4e00\u4e2a\u9ad8\u7b49\u6559\u80b2\u6587\u51ed\uff0c\u6d89\u53ca\u8ba1\u7b97\u673a\u7cfb\u7edf\u548c\u8f6f\u4ef6\u3002\u8fd9\u4e2a\u6807\u9898\u6697\u793a\u8be5\u7f51\u7ad9\u53ef\u80fd\u5305\u542b\u4e86\u4e0e\u8be5\u57f9\u8bad\u76f8\u5173\u7684\u4fe1\u606f\u3001\u9879\u76ee\u6216\u6210\u679c\u3002\n\n### \u63cf\u8ff0\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u7f51\u7ad9\u5185\u5bb9\u6982\u8ff0**\uff1a\u201cYoucef Tarfa\u6295\u8d44\u7ec4\u5408\u201d\u90e8\u5206\u8868\u660e\u7f51\u7ad9\u96c6\u4e2d\u5c55\u793aYoucef Tarfa\u7684\u4e2a\u4eba\u6280\u80fd\u3001\u9879\u76ee\u548c\u6210\u5c31\u3002\u8fd9\u79cd\u7f51\u7ad9\u901a\u5e38\u5305\u62ec\u6280\u672f\u7b80\u5386\u3001\u9879\u76ee\u6848\u4f8b\u3001\u7f16\u7801\u793a\u4f8b\u3001\u6559\u80b2\u80cc\u666f\u3001\u5de5\u4f5c\u7ecf\u5386\u7b49\u5185\u5bb9\u3002\n\n2. **\u4e13\u4e1a\u65b9\u5411**\uff1a\u63cf\u8ff0\u4e2d\u63d0\u5230\u7684\u201cBTS SIO\u57f9\u8bad\u751f\u201d\uff0c\u610f\u5473\u7740Youcef Tarfa\u5728\u8ba1\u7b97\u673a\u7cfb\u7edf\u548c\u8f6f\u4ef6\u65b9\u9762\u63a5\u53d7\u8fc7\u4e13\u4e1a\u7684\u57f9\u8bad\uff0c\u4ed6\u7684\u6295\u8d44\u7ec4\u5408\u5f88\u53ef\u80fd\u4f1a\u5305\u62ec\u4e0e\u8fd9\u4e9b\u6280\u80fd\u76f8\u5173\u7684\u9879\u76ee\u548c\u7ecf\u9a8c\u3002\n\n### \u6807\u7b7e\u77e5\u8bc6\u70b9\uff1a\n\n1. **HTML**\uff1a\u6807\u7b7e\u201cHTML\u201d\u8868\u660e\u7f51\u7ad9\u7684\u6784\u5efa\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u4e86\u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\uff08Hypertext Markup Language\uff09\uff0c\u8fd9\u662f\u5efa\u7acb\u7f51\u7ad9\u7684\u57fa\u7840\u6280\u672f\u4e4b\u4e00\uff0c\u7528\u4e8e\u521b\u5efa\u7f51\u9875\u548c\u7f51\u7edc\u5e94\u7528\u3002\n\n### \u538b\u7f29\u5305\u5b50\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u79f0\u5217\u8868\u77e5\u8bc6\u70b9\uff1a\n\n1. **\u6587\u4ef6\u7ed3\u6784**\uff1a\u201cYouceftarfa.github.io-main\u201d\u53ef\u80fd\u4ee3\u8868\u4e86\u7f51\u7ad9\u6e90\u4ee3\u7801\u7684\u4e3b\u6587\u4ef6\u5939\u540d\u79f0\u3002\u5728GitHub\u9879\u76ee\u4e2d\uff0c\u901a\u5e38\u4f1a\u6709\u4e00\u4e2a\u540d\u4e3a\u201cmain\u201d\u7684\u4e3b\u5206\u652f\uff0c\u4ee3\u8868\u5f53\u524d\u5f00\u53d1\u7684\u7a33\u5b9a\u7248\u672c\u3002\n\n2. **\u9879\u76ee\u7ec4\u7ec7**\uff1a\u6587\u4ef6\u540d\u79f0\u4e2d\u7684\u201cmain\u201d\u6697\u793a\u4e86\u8be5\u6587\u4ef6\u5939\u53ef\u80fd\u5305\u542b\u7f51\u7ad9\u7684\u4e3b\u8981\u6587\u4ef6\uff0c\u5982HTML\u6587\u4ef6\u3001\u6837\u5f0f\u8868\uff08CSS\uff09\u3001JavaScript\u6587\u4ef6\u4ee5\u53ca\u53ef\u80fd\u7684\u56fe\u7247\u548c\u8d44\u6e90\u6587\u4ef6\u7b49\u3002\u5b83\u4eec\u662f\u6784\u6210\u7f51\u7ad9\u524d\u7aef\u7684\u8981\u7d20\uff0c\u51b3\u5b9a\u4e86\u7f51\u7ad9\u7684\u7ed3\u6784\u548c\u5916\u89c2\u3002\n\n### \u7efc\u5408\u5206\u6790\u77e5\u8bc6\u70b9\uff1a\n\n- **\u4e2a\u4eba\u54c1\u724c\u7684\u5efa\u7acb**\uff1a\u901a\u8fc7\u521b\u5efa\u548c\u7ef4\u62a4\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0cYoucef Tarfa\u5728\u5efa\u7acb\u81ea\u5df1\u7684\u4e2a\u4eba\u54c1\u724c\u65b9\u9762\u53ef\u80fd\u4f1a\u53d7\u76ca\u3002\u8fd9\u6837\u7684\u7f51\u7ad9\u4e3a\u4ed6\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5728\u7ebf\u5c55\u793a\u81ea\u5df1\u6280\u80fd\u548c\u4f5c\u54c1\u7684\u5e73\u53f0\uff0c\u6709\u52a9\u4e8e\u5438\u5f15\u6f5c\u5728\u96c7\u4e3b\u6216\u5408\u4f5c\u4f19\u4f34\u7684\u5173\u6ce8\u3002\n\n- **\u6280\u672f\u5c55\u793a\u4e0e\u5b9e\u8df5**\uff1a\u7f51\u7ad9\u5185\u5bb9\u5f88\u53ef\u80fd\u5305\u62ec\u5404\u79cd\u6280\u672f\u9879\u76ee\u548c\u5b9e\u8df5\u6848\u4f8b\uff0c\u6d89\u53ca\u7f16\u7a0b\u3001\u7cfb\u7edf\u7ba1\u7406\u3001\u8f6f\u4ef6\u5f00\u53d1\u7b49\u65b9\u9762\uff0c\u4f53\u73b0\u4e86Youcef Tarfa\u7684\u6280\u672f\u5b9e\u529b\u548c\u5bf9BTS SIO\u8bfe\u7a0b\u7684\u6df1\u5165\u7406\u89e3\u3002\n\n- **\u5728\u7ebf\u5b66\u4e60\u4e0e\u5c55\u793a\u7684\u7ed3\u5408**\uff1a\u8be5\u7f51\u7ad9\u4e0d\u4ec5\u5c55\u793a\u4e86Youcef Tarfa\u7684\u5b66\u4e60\u6210\u679c\uff0c\u4e5f\u4e3a\u5176\u4ed6\u5b66\u4e60\u7c7b\u4f3c\u8bfe\u7a0b\u7684\u4e2a\u4f53\u63d0\u4f9b\u4e86\u4e00\u4e2a\u53c2\u8003\u548c\u5b66\u4e60\u7684\u8d44\u6e90\u3002\n\n- **\u5f00\u6e90\u6587\u5316\u548c\u793e\u533a\u8d21\u732e**\uff1a\u7531\u4e8e\u7f51\u7ad9\u6258\u7ba1\u5728GitHub\u4e0a\uff0c\u8fd9\u610f\u5473\u7740Youcef Tarfa\u53ef\u80fd\u63a5\u89e6\u5e76\u53c2\u4e0e\u5f00\u6e90\u6587\u5316\u3002GitHub\u662f\u5168\u7403\u6700\u5927\u7684\u5f00\u6e90\u793e\u533a\uff0c\u8bb8\u591a\u5f00\u53d1\u8005\u5728\u8fd9\u91cc\u5171\u4eab\u4ee3\u7801\u3001\u4ea4\u6d41\u60f3\u6cd5\u3001\u5408\u4f5c\u89e3\u51b3\u95ee\u9898\u3002\u4ed6\u7684\u9879\u76ee\u53ef\u80fd\u5bf9\u5f00\u6e90\u793e\u533a\u6709\u6240\u8d21\u732e\uff0c\u4e5f\u53ef\u80fd\u63a5\u53d7\u5176\u4ed6\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u548c\u5efa\u8bae\u3002\n\n- **\u6c42\u804c\u5de5\u5177\u4e0e\u804c\u4e1a\u53d1\u5c55**\uff1a\u8be5\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\u53ef\u4ee5\u4f5c\u4e3a\u6c42\u804c\u5de5\u5177\uff0c\u4e3aYoucef Tarfa\u5728IT\u884c\u4e1a\u7684\u53d1\u5c55\u52a9\u529b\u3002\u901a\u8fc7\u5c55\u793a\u4e2a\u4eba\u6280\u80fd\u548c\u9879\u76ee\uff0c\u4ed6\u53ef\u4ee5\u5438\u5f15\u6f5c\u5728\u96c7\u4e3b\uff0c\u4e3a\u81ea\u5df1\u7684\u804c\u4e1a\u751f\u6daf\u94fa\u8def\u3002\n\n### \u7ed3\u8bed\uff1a\n\n\u7efc\u5408\u4ee5\u4e0a\u4fe1\u606f\uff0c\u53ef\u4ee5\u770b\u51fa\u8fd9\u4e2a\u6587\u4ef6\u6d89\u53ca\u4e86\u4e2a\u4eba\u54c1\u724c\u5efa\u8bbe\u3001\u6280\u672f\u5c55\u793a\u3001\u5f00\u6e90\u6587\u5316\u3001\u804c\u4e1a\u53d1\u5c55\u7b49\u591a\u65b9\u9762\u7684\u77e5\u8bc6\u70b9\u3002\u5bf9\u4e8eIT\u4e13\u4e1a\u4eba\u58eb\u6765\u8bf4\uff0c\u7ef4\u62a4\u4e00\u4e2a\u5185\u5bb9\u4e30\u5bcc\u3001\u7ed3\u6784\u826f\u597d\u7684\u4e2a\u4eba\u6295\u8d44\u7ec4\u5408\u7f51\u7ad9\uff0c\u662f\u63d0\u5347\u4e2a\u4eba\u6280\u80fd\u5c55\u793a\u3001\u6269\u5c55\u804c\u4e1a\u7f51\u7edc\u548c\u4fc3\u8fdb\u4e2a\u4eba\u804c\u4e1a\u6210\u957f\u7684\u91cd\u8981\u9014\u5f84\u3002\u540c\u65f6\uff0c\u901a\u8fc7\u53c2\u4e0eGitHub\u8fd9\u6837\u7684\u5f00\u6e90\u5e73\u53f0\uff0c\u4e0d\u4ec5\u53ef\u4ee5\u63d0\u9ad8\u81ea\u8eab\u7684\u6280\u80fd\uff0c\u8fd8\u80fd\u4e0e\u5168\u7403\u7684\u5f00\u53d1\u8005\u5171\u540c\u8fdb\u6b65\uff0c\u4e3a\u8f6f\u4ef6\u884c\u4e1a\u7684\u53d1\u5c55\u4f5c\u51fa\u8d21\u732e\u3002
\"recommend-type\"

\u3010\u533b\u7597\u8bbe\u5907\u7ef4\u4fee\u901f\u6210\u79d8\u7c4d\u3011\uff1a\u4ece\u65b0\u624b\u5230\u4e13\u5bb6\u76845\u5927\u5fc5\u5b66\u6280\u5de7

\n\n# \u6458\u8981\n\u672c\u6587\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u533b\u7597\u8bbe\u5907\u7ef4\u4fee\u7684\u57fa\u7840\u77e5\u8bc6\u3001\u8bbe\u5907\u5206\u7c7b\u548c\u5de5\u4f5c\u539f\u7406\u3001\u65e5\u5e38\u4fdd\u517b\u4e0e\u6545\u969c\u6392\u67e5\u6280\u5de7\u3001\u7ef4\u4fee\u5b9e\u8df5\u64cd\u4f5c\u4ee5\u53ca\u6cd5\u89c4\u9075\u4ece\u4e0e\u4e13\u4e1a\u53d1\u5c55\u3002\u901a\u8fc7\u5bf9\u533b\u7597\u8bbe\u5907\u5206\u7c7b\u548c\u5de5\u4f5c\u539f\u7406\u7684\u9610\u8ff0\uff0c\u4e3a\u7ef4\u4fee\u4eba\u5458\u63d0\u4f9b\u4e86\u6df1\u5165\u7406\u89e3\u8bbe\u5907\u6027\u80fd\u4e0e\u7ef4\u62a4\u8981\u6c42\u7684\u57fa\u7840\u3002\u540c\u65f6\uff0c\u7ed3\u5408\u65e5\u5e38\u4fdd\u517b\u7684\u91cd\u8981\u6027\u548c\u6545\u969c\u6392\u67e5\u7684\u7406
\n \n\n \n \n"} diff --git a/bench/data/groundtruth/code_19_codecademy.jsonl b/bench/data/groundtruth/code_19_codecademy.jsonl new file mode 100644 index 00000000..95ec092b --- /dev/null +++ b/bench/data/groundtruth/code_19_codecademy.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "paragraph", "raw_content": "

An array can be initialized with an array\n literal, which is a short-hand method of writing one or more values as\n an array collection.

", "content": [{"c": "An array can be initialized with an array\n literal, which is a short-hand method of writing one or more values as\n an array collection.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

An array literal is written as a list of values,\n separated by commas, and surrounded by a pair of square brackets.

", "content": [{"c": "An array literal is written as a list of values,\n separated by commas, and surrounded by a pair of square brackets.", "t": "text"}]}, {"type": "code", "raw_content": "
// Using type inference:
var snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]
\n
// Being explicit with the type:
var temp: [Int] = [33, 31, 30, 38, 44]
\n ", "inline": false, "content": {"code_content": "// Using type inference:\nvar snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]\n\n\n// Being explicit with the type:\nvar temp: [Int] = [33, 31, 30, 38, 44]", "by": "tag_pre"}}]], "main_html": "

An array can be initialized with an array\n literal, which is a short-hand method of writing one or more values as\n an array collection.

An array literal is written as a list of values,\n separated by commas, and surrounded by a pair of square brackets.

// Using type inference:
var snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]
\n
// Being explicit with the type:
var temp: [Int] = [33, 31, 30, 38, 44]
\n ", "statics": {"paragraph": 2, "paragraph.text": 2, "code": 1}, "url": "https://www.codecademy.com/learn/learn-swift-arrays-sets-and-dictionaries/modules/learn-swift-arrays/cheatsheet", "content": "An array can be initialized with an array\n literal, which is a short-hand method of writing one or more values as\n an array collection.\n\nAn array literal is written as a list of values,\n separated by commas, and surrounded by a pair of square brackets.\n\n```\n// Using type inference:\nvar snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]\n\n\n// Being explicit with the type:\nvar temp: [Int] = [33, 31, 30, 38, 44]\n```\n", "html": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Learn Swift: Arrays, Sets, and Dictionaries: Arrays & Sets Cheatsheet | Codecademy\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n @font-face {\n font-display: swap;\n font-family: 'Apercu';\n font-style: normal;\n font-weight: normal;\n src: url(\"https://www.codecademy.com/gamut/apercu-regular-pro.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/apercu-regular-pro.woff\") format(\"woff\");\n }\n\n @font-face {\n font-display: swap;\n font-family: 'Apercu';\n font-style: italic;\n font-weight: normal;\n src: url(\"https://www.codecademy.com/gamut/apercu-italic-pro.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/apercu-italic-pro.woff\") format(\"woff\");\n }\n\n @font-face {\n font-display: swap;\n font-family: 'Apercu';\n font-style: normal;\n font-weight: bold;\n src: url(\"https://www.codecademy.com/gamut/apercu-bold-pro.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/apercu-bold-pro.woff\") format(\"woff\");\n }\n\n @font-face {\n font-display: swap;\n font-family: 'Apercu';\n font-style: italic;\n font-weight: bold;\n src: url(\"https://www.codecademy.com/gamut/apercu-bold-italic-pro.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/apercu-bold-italic-pro.woff\") format(\"woff\");\n }\n\n @font-face {\n font-display: swap;\n font-family: 'Suisse';\n font-style: normal;\n font-weight: bold;\n src: url(\"https://www.codecademy.com/gamut/SuisseIntlMono-Bold-WebS.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/SuisseIntlMono-Bold-WebS.woff\") format(\"woff\");\n }\n\n @font-face {\n font-display: swap;\n font-family: 'Suisse';\n font-style: normal;\n font-weight: normal;\n src: url(\"https://www.codecademy.com/gamut/SuisseIntlMono-Regular-WebS.woff2\") format(\"woff2\"), url(\"https://www.codecademy.com/gamut/SuisseIntlMono-Regular-WebS.woff\") format(\"woff\");\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-bottom: 1rem;\n font-weight: 700;\n line-height: 1.2;\n }\n\n h1 {\n font-size: 4rem;\n }\n\n h2 {\n font-size: 2.75rem;\n }\n\n h3 {\n font-size: 2.125rem;\n }\n\n h4 {\n font-size: 1.625rem;\n }\n\n h5 {\n font-size: 1.375rem;\n }\n\n h6 {\n font-size: 1.25rem;\n }\n\n small {\n font-size: 0.875rem;\n font-weight: 400;\n }\n \n \n \n \n \n \n \n \n .gamut-1uch1ks-VariableProvider-AppWrapper-AppWrapper {\n --color-background-current: var(--color-white);\n color: var(--color-text);\n min-height: 100vh;\n background-color: var(--color-background-current);\n position: relative;\n z-index: 1;\n }\n\n .gamut-q4okk-SkipToContentLink {\n color: var(--color-navy);\n background-color: var(--color-white);\n cursor: pointer;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n font-weight: 700;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n opacity: 0;\n padding: 1.5rem 1rem;\n position: absolute;\n -webkit-text-decoration: none;\n text-decoration: none;\n -webkit-transform: translate(-50%, -100%);\n -moz-transform: translate(-50%, -100%);\n -ms-transform: translate(-50%, -100%);\n transform: translate(-50%, -100%);\n top: 0;\n left: 50%;\n z-index: calc(var(--elements-headerZ) + 1);\n width: 12rem;\n -webkit-transition: opacity 150ms cubic-bezier(0.075, 0.82, 0.165, 1), -webkit-transform 150ms cubic-bezier(0.075, 0.82, 0.165, 1);\n transition: opacity 150ms cubic-bezier(0.075, 0.82, 0.165, 1), transform 150ms cubic-bezier(0.075, 0.82, 0.165, 1);\n }\n\n .gamut-q4okk-SkipToContentLink:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-q4okk-SkipToContentLink:focus {\n outline-color: var(--color-hyper);\n opacity: 1;\n -webkit-transform: translate(-50%, 1rem);\n -moz-transform: translate(-50%, 1rem);\n -ms-transform: translate(-50%, 1rem);\n transform: translate(-50%, 1rem);\n }\n\n .gamut-yd493d {\n width: 16px;\n height: 16px;\n margin-left: 0.5rem;\n }\n\n .gamut-1hwoqu3-Box {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: var(--elements-headerZ);\n }\n\n .gamut-1xi13ny-Box {\n display: none;\n height: var(--elements-headerHeight);\n -webkit-transition: background-color 150ms ease-in-out, border-bottom-color 150ms ease-in-out;\n transition: background-color 150ms ease-in-out, border-bottom-color 150ms ease-in-out;\n border-bottom: 1px solid var(--color-border-primary);\n width: 100%;\n top: 0;\n z-index: 2;\n background-color: var(--color-background);\n border-color: var(--color-background-current);\n background-color: var(--color-background-current);\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-1xi13ny-Box {\n display: block;\n }\n }\n\n .gamut-aqgeor-Box-ContentContainer {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n height: 100%;\n z-index: 14;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-left: auto;\n margin-right: auto;\n margin-top: 0;\n margin-bottom: 0;\n width: 100%;\n height: 100%;\n padding-left: 1rem;\n padding-right: 1rem;\n max-width: 1440px;\n }\n\n @media only screen and (min-width: 480px) {\n .gamut-aqgeor-Box-ContentContainer {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-aqgeor-Box-ContentContainer {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-aqgeor-Box-ContentContainer {\n padding-left: 6rem;\n padding-right: 6rem;\n }\n }\n\n .gamut-igq5r7 {\n padding: 0;\n margin: 0;\n -webkit-align-items: stretch;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n list-style: none;\n }\n\n .gamut-1h088zg-Box {\n margin-right: 0.75rem;\n margin-left: 0.75rem;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n position: relative;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1h088zg-Box:first-of-type {\n margin-left: 0;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1h088zg-Box:last-of-type {\n margin-right: 0;\n }\n }\n\n .gamut-1f1m9mk-Box {\n width: 128px;\n height: 36px;\n }\n\n .gamut-1jwgx87-Box {\n width: 100%;\n height: 100%;\n overflow: hidden;\n background-color: var(--color-background-disabled);\n position: relative;\n opacity: 0.5;\n }\n\n .gamut-1wdhwy3-Box-ShimmerForeground {\n width: 500px;\n height: 100%;\n position: absolute;\n -webkit-animation: animation-10abj75 2s linear infinite, animation-5j8bii 1s linear infinite alternate;\n animation: animation-10abj75 2s linear infinite, animation-5j8bii 1s linear infinite alternate;\n background: linear-gradient(to right,\n rgba(0, 0, 0, 0) 20%,\n rgba(0, 0, 0, 0.2) 50%,\n rgba(0, 0, 0, 0) 80%);\n }\n\n .gamut-18awgza-StyledText {\n font-size: inherit;\n display: inline-block;\n border: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n display: inline-block;\n width: 1px;\n height: 1px;\n position: absolute;\n left: -9999px;\n color: transparent;\n margin: 0;\n }\n\n .gamut-1bau1vm-Box {\n display: block;\n height: var(--elements-headerHeight);\n -webkit-transition: background-color 150ms ease-in-out, border-bottom-color 150ms ease-in-out;\n transition: background-color 150ms ease-in-out, border-bottom-color 150ms ease-in-out;\n border-bottom: 1px solid var(--color-border-primary);\n width: 100%;\n top: 0;\n z-index: 2;\n background-color: var(--color-background);\n border-color: var(--color-background-current);\n background-color: var(--color-background-current);\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-1bau1vm-Box {\n display: none;\n }\n }\n\n .gamut-1ph1ff8 {\n padding: 0;\n margin: 0;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n list-style: none;\n }\n\n .gamut-1oov1rs-Box {\n margin-left: 0;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n position: relative;\n }\n\n @media only screen and (min-width: 480px) {\n .gamut-1oov1rs-Box {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1oov1rs-Box:first-of-type {\n margin-left: 0;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1oov1rs-Box:last-of-type {\n margin-right: 0;\n }\n }\n\n .gamut-1fe6mg8-Box {\n margin-left: auto;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n position: relative;\n }\n\n @media only screen and (min-width: 480px) {\n .gamut-1fe6mg8-Box {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1fe6mg8-Box:first-of-type {\n margin-left: 0;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1fe6mg8-Box:last-of-type {\n margin-right: 0;\n }\n }\n\n .gamut-1q7gnh3-ToolTipWrapper {\n overflow-wrap: break-word;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n }\n\n .gamut-1q7gnh3-ToolTipWrapper:hover>div,\n .gamut-1q7gnh3-ToolTipWrapper:focus-within>div {\n -webkit-transition: opacity 150ms 300ms;\n transition: opacity 150ms 300ms;\n visibility: visible;\n opacity: 1;\n }\n\n .gamut-ud7xvi-Box-TargetContainer {\n cursor: pointer;\n padding: 0;\n border: none;\n background: none;\n }\n\n .gamut-ud7xvi-Box-TargetContainer:focus-visible,\n .gamut-ud7xvi-Box-TargetContainer[data-focus-visible-added] {\n outline: none;\n }\n\n .gamut-ud7xvi-Box-TargetContainer:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -2px;\n right: -2px;\n bottom: -2px;\n left: -2px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-ud7xvi-Box-TargetContainer:focus-visible:before,\n .gamut-ud7xvi-Box-TargetContainer[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent {\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n font-size: inherit;\n -webkit-text-decoration: none;\n text-decoration: none;\n box-shadow: none;\n color: var(--color-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n border: 2px solid var(--color-border-primary);\n border-color: transparent;\n white-space: nowrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n border-radius: 4px;\n width: 40px;\n height: 40px;\n border-color: transparent;\n color: var(--color-text);\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:focus {\n outline: none;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent [disabled],\n .gamut-1hs2e1h-ResetElement-createButtonComponent:disabled,\n .gamut-1hs2e1h-ResetElement-createButtonComponent[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:before {\n content: \"\";\n -webkit-transition: opacity 150ms linear;\n transition: opacity 150ms linear;\n border: 2px solid var(--color-border-primary);\n position: absolute;\n top: -5px;\n right: -5px;\n bottom: -5px;\n left: -5px;\n z-index: 0;\n opacity: 0;\n border-radius: 8px;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:focus-visible:before,\n .gamut-1hs2e1h-ResetElement-createButtonComponent[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:hover {\n -webkit-transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n color: var(--color-interface);\n background-color: var(--color-background-hover);\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:focus-visible,\n .gamut-1hs2e1h-ResetElement-createButtonComponent[data-focus-visible-added] {\n color: var(--color-interface);\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:before {\n border-color: var(--color-interface);\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent:active {\n color: var(--color-text);\n }\n\n .gamut-1hs2e1h-ResetElement-createButtonComponent [disabled],\n .gamut-1hs2e1h-ResetElement-createButtonComponent:disabled,\n .gamut-1hs2e1h-ResetElement-createButtonComponent[aria-disabled='true'] {\n color: var(--color-text-disabled);\n background-color: transparent;\n }\n\n .gamut-9uy14h {\n width: 24px;\n height: 24px;\n }\n\n .gamut-bu816b-Box-ToolTipContainer {\n z-index: 1;\n visibility: hidden;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n max-width: 128px;\n position: absolute;\n opacity: 0;\n background-color: transparent;\n padding-top: 0.75rem;\n min-width: 64px;\n top: calc(100% + 4px);\n left: calc(50% - 4rem);\n width: 70vw;\n }\n\n .gamut-bu816b-Box-ToolTipContainer fontSmoothPixel {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n .gamut-bu816b-Box-ToolTipContainer::after {\n content: \"\";\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n border-style: solid;\n display: block;\n width: 1rem;\n height: 1rem;\n position: absolute;\n border-width: 1px 0 0 1px;\n border-color: currentColor;\n top: 0.25rem;\n left: calc(50% - 0.5rem);\n background-image: linear-gradient(to bottom right, var(--color-background-contrast) 55%, rgba(0, 0, 0, 0) 20%);\n }\n\n .gamut-bu816b-Box-ToolTipContainer::before {\n content: \"\";\n width: 100%;\n height: 24px;\n position: absolute;\n top: -8px;\n }\n\n .gamut-14v3n61-Box-TipBody {\n color: currentColor;\n z-index: auto;\n border: 1px solid var(--color-border-primary);\n line-height: 1.5;\n font-size: 0.875rem;\n box-shadow: none;\n display: inline-block;\n border-radius: 2px;\n color: var(--color-text);\n background-color: var(--color-background-contrast);\n margin: auto;\n padding: 0.25rem;\n text-align: center;\n min-width: 64px;\n max-width: 128px;\n }\n\n .gamut-11re5g0-Box {\n display: block;\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-11re5g0-Box {\n display: none;\n }\n }\n\n .gamut-otnx7u-AppWrapper {\n position: relative;\n z-index: 1;\n }\n\n .gamut-1nxeplr-VariableProvider {\n --color-text: var(--color-white);\n --color-text-accent: var(--color-beige);\n --color-text-disabled: var(--color-white-500);\n --color-text-secondary: var(--color-white-600);\n --color-feedback-error: var(--color-red-0);\n --color-feedback-success: var(--color-green-400);\n --color-feedback-warning: var(--color-yellow-0);\n --color-background: var(--color-navy-800);\n --color-background-contrast: var(--color-black);\n --color-background-current: var(--color-navy);\n --color-background-primary: var(--color-navy-900);\n --color-background-selected: var(--color-white-100);\n --color-background-disabled: var(--color-white-200);\n --color-background-hover: var(--color-white-200);\n --color-shadow-primary: var(--color-white);\n --color-shadow-secondary: var(--color-white-600);\n --color-primary: var(--color-yellow-500);\n --color-primary-hover: var(--color-yellow-400);\n --color-primary-inverse: var(--color-hyper-500);\n --color-secondary: var(--color-white);\n --color-secondary-hover: var(--color-white-700);\n --color-danger: var(--color-red-0);\n --color-danger-hover: var(--color-red-100);\n --color-interface: var(--color-yellow-500);\n --color-interface-hover: var(--color-yellow-400);\n --color-border-primary: var(--color-white);\n --color-border-secondary: var(--color-white-600);\n --color-border-tertiary: var(--color-white-300);\n --color-border-disabled: var(--color-white-500);\n color: var(--color-text);\n margin: auto;\n width: 100%;\n background-color: var(--color-background-current);\n }\n\n @media print {\n .gamut-1nxeplr-VariableProvider {\n background: none;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n -webkit-justify-content: flex-start;\n justify-content: flex-start;\n text-align: left;\n }\n }\n\n .gamut-lyt7cc-Box-ContentContainer {\n padding-top: 1.5rem;\n padding-bottom: 2rem;\n max-width: calc(1440px + 12rem);\n margin-left: auto;\n margin-right: auto;\n margin-top: 0;\n margin-bottom: 0;\n width: 100%;\n height: 100%;\n padding-left: 1rem;\n padding-right: 1rem;\n max-width: 1440px;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-lyt7cc-Box-ContentContainer {\n padding-top: 3rem;\n padding-bottom: 1.5rem;\n }\n }\n\n @media only screen and (min-width: 480px) {\n .gamut-lyt7cc-Box-ContentContainer {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-lyt7cc-Box-ContentContainer {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-lyt7cc-Box-ContentContainer {\n padding-left: 6rem;\n padding-right: 6rem;\n }\n }\n\n @media print {\n .gamut-lyt7cc-Box-ContentContainer {\n padding: 0;\n color: var(--color-black);\n margin-left: 1rem;\n }\n\n .gamut-lyt7cc-Box-ContentContainer .noGridPrint {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n }\n\n .gamut-a6j55f-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n row-gap: 0.5rem;\n -ms-grid-column-gap: 0.5rem;\n grid-column-gap: 0.5rem;\n -webkit-column-gap: min(calc(100% / 11), 0.5rem);\n column-gap: min(calc(100% / 11), 0.5rem);\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-a6j55f-LayoutGrid {\n -ms-grid-column-gap: 1rem;\n grid-column-gap: 1rem;\n -webkit-column-gap: min(calc(100% / 11), 1rem);\n column-gap: min(calc(100% / 11), 1rem);\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-a6j55f-LayoutGrid {\n -ms-grid-column-gap: 2rem;\n grid-column-gap: 2rem;\n -webkit-column-gap: min(calc(100% / 11), 2rem);\n column-gap: min(calc(100% / 11), 2rem);\n }\n }\n\n .gamut-1di0w53-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1di0w53-StyledColumn {\n grid-column-end: span 9;\n grid-column-start: 4;\n }\n }\n\n .gamut-1c0ytds-StyledSkipToContentTarget-StyledSkipToContentTarget {\n margin-top: calc(var(--elements-headerHeight) * -1);\n position: absolute;\n }\n\n .gamut-bc586j-LogoSvg {\n color: currentColor;\n display: none;\n height: 24px;\n }\n\n @media print {\n .gamut-bc586j-LogoSvg {\n display: initial;\n position: fixed;\n right: 1.5rem;\n top: 0;\n }\n }\n\n .gamut-lhhulk {\n margin-bottom: 8px;\n }\n\n @media print {\n .gamut-lhhulk a {\n color: var(--color-black);\n }\n }\n\n .gamut-bgnh51-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n margin: 0;\n padding: 0;\n }\n\n .gamut-dv2kg2-Box-BreadcrumbPart {\n white-space: nowrap;\n list-style-type: none;\n }\n\n .gamut-dv2kg2-Box-BreadcrumbPart:not(*:first-of-type) {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .gamut-dv2kg2-Box-BreadcrumbPart:first-of-type a {\n margin: 0;\n }\n\n .gamut-dv2kg2-Box-BreadcrumbPart:last-child {\n -webkit-flex: 1;\n -ms-flex: 1;\n flex: 1;\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n overflow: hidden;\n white-space: nowrap;\n display: inline;\n width: 100%;\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor [disabled],\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor:disabled,\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor:focus-visible,\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor:focus-visible:before,\n .gamut-1ef7hkh-AnchorBase-BreadcrumbAnchor[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1w9l4jb-StyledText {\n font-size: inherit;\n display: inline-block;\n margin: 0;\n margin-left: 0.25rem;\n margin-right: 0.25rem;\n }\n\n .gamut-cdvxz8-StyledText {\n text-overflow: ellipsis;\n margin: 0;\n display: block;\n font-weight: bold;\n overflow: hidden;\n white-space: nowrap;\n }\n\n .gamut-asg9pc-StyledText {\n font-weight: 700;\n line-height: 1.2;\n font-size: 4rem;\n margin: 0;\n font-size: 1.625rem;\n color: var(--color-white);\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-asg9pc-StyledText {\n font-size: 4rem;\n }\n }\n\n @media print {\n .gamut-asg9pc-StyledText {\n margin: 0 0 0.5rem;\n color: var(--color-black);\n font-size: 36px;\n letter-spacing: 2px;\n }\n }\n\n .gamut-199uqwo-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n -webkit-justify-content: flex-start;\n justify-content: flex-start;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-199uqwo-FlexBox {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n -webkit-justify-content: flex-end;\n justify-content: flex-end;\n }\n }\n\n @media print {\n .gamut-199uqwo-FlexBox {\n display: none;\n }\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent {\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n font-size: inherit;\n -webkit-text-decoration: none;\n text-decoration: none;\n box-shadow: none;\n color: var(--color-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n border: 2px solid var(--color-border-primary);\n border-color: transparent;\n white-space: nowrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n border-radius: 4px;\n border-color: transparent;\n color: var(--color-primary);\n font-weight: 700;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 1rem;\n min-width: 40px;\n height: 40px;\n padding-left: 0;\n padding-right: 0;\n white-space: pre;\n margin-right: 1.5rem;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:focus {\n outline: none;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent [disabled],\n .gamut-1cmwpgy-ResetElement-createButtonComponent:disabled,\n .gamut-1cmwpgy-ResetElement-createButtonComponent[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:before {\n content: \"\";\n -webkit-transition: opacity 150ms linear;\n transition: opacity 150ms linear;\n border: 2px solid var(--color-border-primary);\n position: absolute;\n top: -5px;\n right: -5px;\n bottom: -5px;\n left: -5px;\n z-index: 0;\n opacity: 0;\n border-radius: 8px;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:focus-visible:before,\n .gamut-1cmwpgy-ResetElement-createButtonComponent[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:hover {\n -webkit-transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n color: var(--color-primary);\n background-color: var(--color-background-hover);\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:focus-visible,\n .gamut-1cmwpgy-ResetElement-createButtonComponent[data-focus-visible-added] {\n color: var(--color-primary);\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:before {\n border-color: var(--color-primary);\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:active {\n color: var(--color-text);\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent [disabled],\n .gamut-1cmwpgy-ResetElement-createButtonComponent:disabled,\n .gamut-1cmwpgy-ResetElement-createButtonComponent[aria-disabled='true'] {\n color: var(--color-text-disabled);\n background-color: transparent;\n }\n\n .gamut-1cmwpgy-ResetElement-createButtonComponent:hover p,\n .gamut-1cmwpgy-ResetElement-createButtonComponent:hover svg {\n color: var(--color-primary);\n }\n\n .gamut-n5ozvf {\n width: 24px;\n height: 24px;\n margin-right: 0.25rem;\n }\n\n .gamut-1hjmf32-Box {\n margin-bottom: 0;\n }\n\n .gamut-1uc2gp3-Box {\n display: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1uc2gp3-Box {\n display: inline;\n }\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent {\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n font-size: inherit;\n -webkit-text-decoration: none;\n text-decoration: none;\n box-shadow: none;\n color: var(--color-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n border: 2px solid var(--color-border-primary);\n border-color: transparent;\n white-space: nowrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n border-radius: 4px;\n border-color: transparent;\n color: var(--color-primary);\n font-weight: 700;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 1rem;\n min-width: 40px;\n height: 40px;\n padding-left: 0;\n padding-right: 0;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:focus {\n outline: none;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent [disabled],\n .gamut-1d3batq-ResetElement-createButtonComponent:disabled,\n .gamut-1d3batq-ResetElement-createButtonComponent[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:before {\n content: \"\";\n -webkit-transition: opacity 150ms linear;\n transition: opacity 150ms linear;\n border: 2px solid var(--color-border-primary);\n position: absolute;\n top: -5px;\n right: -5px;\n bottom: -5px;\n left: -5px;\n z-index: 0;\n opacity: 0;\n border-radius: 8px;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:focus-visible:before,\n .gamut-1d3batq-ResetElement-createButtonComponent[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:hover {\n -webkit-transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n color: var(--color-primary);\n background-color: var(--color-background-hover);\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:focus-visible,\n .gamut-1d3batq-ResetElement-createButtonComponent[data-focus-visible-added] {\n color: var(--color-primary);\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:before {\n border-color: var(--color-primary);\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent:active {\n color: var(--color-text);\n }\n\n .gamut-1d3batq-ResetElement-createButtonComponent [disabled],\n .gamut-1d3batq-ResetElement-createButtonComponent:disabled,\n .gamut-1d3batq-ResetElement-createButtonComponent[aria-disabled='true'] {\n color: var(--color-text-disabled);\n background-color: transparent;\n }\n\n .gamut-q9asvi {\n width: 22px;\n height: 22px;\n margin-right: 0.25rem;\n }\n\n .gamut-1ujbhyb {\n width: 12px;\n height: 12px;\n margin-left: 0.5rem;\n -webkit-transition: -webkit-transform 0.35s ease-out;\n transition: transform 0.35s ease-out;\n }\n\n .gamut-3a1jmv-Box-ContentContainer {\n margin-left: auto;\n margin-right: auto;\n margin-top: 0;\n margin-bottom: 0;\n width: 100%;\n height: 100%;\n padding-left: 1rem;\n padding-right: 1rem;\n max-width: 1440px;\n }\n\n @media only screen and (min-width: 480px) {\n .gamut-3a1jmv-Box-ContentContainer {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-3a1jmv-Box-ContentContainer {\n padding-left: 4rem;\n padding-right: 4rem;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-3a1jmv-Box-ContentContainer {\n padding-left: 6rem;\n padding-right: 6rem;\n }\n }\n\n .gamut-1j1hroh-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n padding-bottom: 4rem;\n row-gap: 0.5rem;\n -ms-grid-column-gap: 0.5rem;\n grid-column-gap: 0.5rem;\n -webkit-column-gap: min(calc(100% / 11), 0.5rem);\n column-gap: min(calc(100% / 11), 0.5rem);\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1j1hroh-LayoutGrid {\n -ms-grid-column-gap: 1rem;\n grid-column-gap: 1rem;\n -webkit-column-gap: min(calc(100% / 11), 1rem);\n column-gap: min(calc(100% / 11), 1rem);\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1j1hroh-LayoutGrid {\n -ms-grid-column-gap: 2rem;\n grid-column-gap: 2rem;\n -webkit-column-gap: min(calc(100% / 11), 2rem);\n column-gap: min(calc(100% / 11), 2rem);\n }\n }\n\n @media print {\n .gamut-1j1hroh-LayoutGrid {\n display: block;\n }\n }\n\n .gamut-xg3t0o-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -webkit-align-items: flex-start;\n -webkit-box-align: flex-start;\n -ms-flex-align: flex-start;\n align-items: flex-start;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-xg3t0o-StyledColumn {\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-xg3t0o-StyledColumn {\n -ms-grid-column-span: 3;\n grid-column-end: span 3;\n }\n }\n\n .gamut-17hayrg-Box {\n position: relative;\n }\n\n .gamut-16as8xv-Box {\n border: 1px solid var(--color-border-primary);\n border-color: var(--color-border-primary);\n width: 100%;\n background-color: var(--color-white);\n position: absolute;\n top: -22px;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-16as8xv-Box {\n border: 2px solid var(--color-border-primary);\n padding-top: 0.5rem;\n max-width: 230px;\n position: relative;\n top: -56px;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-16as8xv-Box {\n margin-left: 0.5rem;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-16as8xv-Box {\n margin-left: 1rem;\n }\n }\n\n @media print {\n .gamut-16as8xv-Box {\n display: none;\n }\n }\n\n .gamut-5t2ddl-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-5t2ddl-FlexBox {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 1rem;\n padding-bottom: 0.75rem;\n }\n }\n\n .gamut-1gekpla-StyledText {\n font-weight: 700;\n line-height: 1.2;\n font-size: 2.75rem;\n margin: 0;\n font-size: 0.875rem;\n text-transform: uppercase;\n margin-bottom: 0;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1gekpla-StyledText {\n font-size: 1.125rem;\n }\n }\n\n .gamut-1eu7i26 {\n width: 16px;\n height: 16px;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1eu7i26 {\n display: none;\n }\n }\n\n .gamut-1xnrd2x-Box {\n background: white;\n margin: 0;\n padding: 0;\n display: none;\n position: relative;\n z-index: 3;\n list-style-type: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1xnrd2x-Box {\n display: block;\n }\n }\n\n .gamut-1up4yt5-Box {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 2rem;\n font-weight: bold;\n border-left: 8px solid var(--color-navy);\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1up4yt5-Box {\n padding-left: 1rem;\n }\n }\n\n .gamut-yxkqzn-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n padding-left: 2rem;\n padding-right: 2rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: block;\n }\n\n .gamut-yxkqzn-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-yxkqzn-AnchorBase [disabled],\n .gamut-yxkqzn-AnchorBase:disabled,\n .gamut-yxkqzn-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-yxkqzn-AnchorBase:focus-visible,\n .gamut-yxkqzn-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-yxkqzn-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-yxkqzn-AnchorBase:focus-visible:before,\n .gamut-yxkqzn-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-yxkqzn-AnchorBase {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n }\n\n .gamut-xnwp68-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n margin-top: 2rem;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-xnwp68-StyledColumn {\n -ms-grid-column-span: 8;\n grid-column-end: span 8;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-xnwp68-StyledColumn {\n -ms-grid-column-span: 9;\n grid-column-end: span 9;\n }\n }\n\n @media print {\n .gamut-xnwp68-StyledColumn {\n display: block;\n }\n }\n\n .gamut-imw2wj-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n }\n\n @media print {\n .gamut-imw2wj-LayoutGrid {\n display: block;\n width: 100%;\n break-inside: avoid;\n }\n\n .gamut-imw2wj-LayoutGrid::after {\n display: block;\n content: '';\n clear: both;\n }\n\n .gamut-imw2wj-LayoutGrid .reviewCardTextColumn,\n .gamut-imw2wj-LayoutGrid .codeBlockColumn,\n .gamut-imw2wj-LayoutGrid .imageColumn {\n width: 50%;\n float: left;\n display: block;\n margin-bottom: 0;\n }\n\n .gamut-imw2wj-LayoutGrid .reviewCardTextColumn button,\n .gamut-imw2wj-LayoutGrid .codeBlockColumn button,\n .gamut-imw2wj-LayoutGrid .imageColumn button {\n display: none;\n }\n\n .gamut-imw2wj-LayoutGrid .reviewCardTitleColumn {\n width: 100%;\n margin-bottom: 0.5rem;\n display: block;\n }\n }\n\n .gamut-cdomtw-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n margin-bottom: 0.5rem;\n }\n\n @media print {\n .gamut-gy5le {\n padding: 32px 0 0;\n margin: 0;\n }\n }\n\n .gamut-gy5le>h2,\n .gamut-gy5le h3 {\n margin: 0 0 0.5rem;\n padding: 0.5rem 0 0;\n font-size: 20px;\n }\n\n @media only screen and (min-width: 768px) {\n\n .gamut-gy5le>h2,\n .gamut-gy5le h3 {\n padding: 2rem 0 0;\n font-size: 26px;\n }\n }\n\n @media print {\n\n .gamut-gy5le>h2,\n .gamut-gy5le h3 {\n margin: 0;\n padding: 0;\n font-size: 16px;\n font-weight: bold;\n line-height: 24px;\n }\n }\n\n .gamut-1gampgi-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n padding-bottom: 0.5rem;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1gampgi-StyledColumn {\n padding-bottom: 0.5rem;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1gampgi-StyledColumn {\n padding-bottom: 0;\n -ms-grid-column-span: 5;\n grid-column-end: span 5;\n }\n }\n\n .gamut-1hu8yz0 {\n white-space: normal;\n word-wrap: break-word;\n font-size: 16px;\n }\n\n .gamut-1hu8yz0>*:last-child {\n margin-bottom: 0;\n }\n\n .gamut-1hu8yz0 img {\n max-width: 100%;\n height: auto;\n }\n\n .gamut-1hu8yz0 kbd {\n display: inline-block;\n color: var(--color-text);\n margin: 0 0.06rem;\n padding: 0.1rem 0.47rem;\n background-color: var(--color-background);\n border-radius: 3px;\n border: 1px solid var(--color-background-hover);\n font-size: 0.9rem;\n font-family: Arial, Helvetica, sans-serif;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px var(--color-background-selected) inset;\n text-shadow: 0 1px 0 var(--color-background-selected);\n line-height: 1.4;\n }\n\n .gamut-1hu8yz0 p code,\n .gamut-1hu8yz0 ul code {\n padding: 0.1rem 0.25rem;\n border-radius: 0.125rem;\n background-color: var(--color-background-selected);\n font-size: 14px;\n font-family: Monaco;\n }\n\n .gamut-1hu8yz0 blockquote {\n border-left: 0.5rem solid var(--color-border-tertiary);\n background-color: var(--color-background-selected);\n padding: 1rem;\n margin: 0;\n }\n\n .gamut-1hu8yz0 blockquote *:last-of-type {\n margin-bottom: 0;\n }\n\n .gamut-1hu8yz0 video,\n .gamut-1hu8yz0 iframe {\n width: 100%;\n }\n\n .gamut-1hu8yz0 video {\n height: auto;\n }\n\n .gamut-1hu8yz0 h1,\n .gamut-1hu8yz0 h2,\n .gamut-1hu8yz0 h3,\n .gamut-1hu8yz0 h4,\n .gamut-1hu8yz0 h5,\n .gamut-1hu8yz0 h6 {\n scroll-snap-margin-top: calc(var(--elements-headerHeight) + 1rem);\n scroll-margin-top: calc(var(--elements-headerHeight) + 1rem);\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1hu8yz0 {\n font-size: 18px;\n }\n }\n\n @media print {\n .gamut-1hu8yz0 {\n font-size: 12px;\n line-height: 18px;\n padding: 0 3.5rem 0 0;\n margin: 0;\n }\n\n .gamut-1hu8yz0 p {\n margin-top: 0;\n margin-bottom: 0;\n color: var(--color-black);\n }\n\n .gamut-1hu8yz0 ul,\n .gamut-1hu8yz0 li {\n margin: 0;\n }\n }\n\n .gamut-1a08trx-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n display: none;\n -ms-grid-column-span: 1;\n grid-column-end: span 1;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1a08trx-StyledColumn {\n display: -ms-grid;\n display: grid;\n }\n }\n\n .gamut-1hu5fhi-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n margin-bottom: 2rem;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1hu5fhi-StyledColumn {\n margin-bottom: 1rem;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1hu5fhi-StyledColumn {\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n }\n\n .gamut-1vm8xrk {\n padding: 1rem;\n background: #211e2f;\n margin-bottom: 0;\n color: var(--color-white);\n background-color: #211E2F;\n font-family: Menlo, Monaco, 'Courier New', monospace;\n font-size: 14px;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 24px;\n }\n\n @media print {\n .gamut-1vm8xrk {\n padding: 0;\n }\n\n .gamut-1vm8xrk .token-line {\n max-width: 100%;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n }\n\n .gamut-17utcpq-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-17utcpq-StyledColumn {\n grid-column-end: span 8;\n grid-column-start: 5;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-17utcpq-StyledColumn {\n grid-column-end: span 9;\n grid-column-start: 4;\n }\n }\n\n .gamut-1xvlxon-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n margin-top: 3rem;\n font-weight: normal;\n font-size: 1.125rem;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n -webkit-justify-content: flex-end;\n justify-content: flex-end;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1xvlxon-FlexBox {\n margin-top: 4rem;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-1xvlxon-FlexBox {\n margin-top: 3rem;\n }\n }\n\n @media print {\n .gamut-1xvlxon-FlexBox {\n display: none;\n }\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent {\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n font-size: inherit;\n -webkit-text-decoration: none;\n text-decoration: none;\n box-shadow: none;\n color: var(--color-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n border: 2px solid var(--color-border-primary);\n border-color: transparent;\n white-space: nowrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n border-radius: 4px;\n border-color: transparent;\n color: var(--color-primary);\n font-weight: 700;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 1rem;\n min-width: 40px;\n height: 40px;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:focus {\n outline: none;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent [disabled],\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:disabled,\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:before {\n content: \"\";\n -webkit-transition: opacity 150ms linear;\n transition: opacity 150ms linear;\n border: 2px solid var(--color-border-primary);\n position: absolute;\n top: -5px;\n right: -5px;\n bottom: -5px;\n left: -5px;\n z-index: 0;\n opacity: 0;\n border-radius: 8px;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:focus-visible:before,\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:hover {\n -webkit-transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n color: var(--color-primary);\n background-color: var(--color-background-hover);\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:focus-visible,\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent[data-focus-visible-added] {\n color: var(--color-primary);\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:before {\n border-color: var(--color-primary);\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:active {\n color: var(--color-text);\n }\n\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent [disabled],\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent:disabled,\n .gamut-zmepqh-ResetElementAnchor-createButtonComponent[aria-disabled='true'] {\n color: var(--color-text-disabled);\n background-color: transparent;\n }\n\n .gamut-1wpruqg-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 100%;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .gamut-v7gftf {\n width: 12px;\n height: 12px;\n -webkit-order: 1;\n -ms-flex-order: 1;\n order: 1;\n margin-left: 0.5rem;\n }\n\n .gamut-1ghw47s-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n margin-top: 0.5rem;\n margin-bottom: 3rem;\n row-gap: 3rem;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n -webkit-justify-content: flex-start;\n justify-content: flex-start;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1ghw47s-StyledColumn {\n margin-top: 1rem;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n -webkit-justify-content: flex-end;\n justify-content: flex-end;\n grid-column-end: span 8;\n grid-column-start: 5;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1ghw47s-StyledColumn {\n grid-column-end: span 9;\n grid-column-start: 4;\n }\n }\n\n .gamut-xvi723-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent {\n cursor: pointer;\n border: none;\n background: none;\n padding: 0;\n font-size: inherit;\n -webkit-text-decoration: none;\n text-decoration: none;\n box-shadow: none;\n color: var(--color-text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: border-color 150ms ease-in, color 150ms ease-in, background-color 150ms ease-in, box-shadow 150ms ease-in;\n border: 2px solid var(--color-border-primary);\n border-color: transparent;\n white-space: nowrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n border-radius: 4px;\n border-color: transparent;\n color: var(--color-primary);\n font-weight: 700;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 1rem;\n min-width: 40px;\n height: 40px;\n padding-left: 0;\n padding-right: 0;\n white-space: pre;\n margin-right: 1.5rem;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:focus {\n outline: none;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent [disabled],\n .gamut-194xq2z-ResetElement-createButtonComponent:disabled,\n .gamut-194xq2z-ResetElement-createButtonComponent[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:before {\n content: \"\";\n -webkit-transition: opacity 150ms linear;\n transition: opacity 150ms linear;\n border: 2px solid var(--color-border-primary);\n position: absolute;\n top: -5px;\n right: -5px;\n bottom: -5px;\n left: -5px;\n z-index: 0;\n opacity: 0;\n border-radius: 8px;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:focus-visible:before,\n .gamut-194xq2z-ResetElement-createButtonComponent[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:hover {\n -webkit-transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n transition: background-color 150ms ease-in, box-shadow 150ms ease-in;\n color: var(--color-primary);\n background-color: var(--color-background-hover);\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:focus-visible,\n .gamut-194xq2z-ResetElement-createButtonComponent[data-focus-visible-added] {\n color: var(--color-primary);\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:before {\n border-color: var(--color-primary);\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent:active {\n color: var(--color-text);\n }\n\n .gamut-194xq2z-ResetElement-createButtonComponent [disabled],\n .gamut-194xq2z-ResetElement-createButtonComponent:disabled,\n .gamut-194xq2z-ResetElement-createButtonComponent[aria-disabled='true'] {\n color: var(--color-text-disabled);\n background-color: transparent;\n }\n\n .gamut-7uqqig-StyledText {\n font-size: inherit;\n display: inline-block;\n margin: 0;\n display: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-7uqqig-StyledText {\n display: inline;\n }\n }\n\n .gamut-sktc5-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n padding-top: 0;\n }\n\n @media print {\n .gamut-sktc5-StyledColumn {\n display: none;\n }\n }\n\n .gamut-916iol-StyledText {\n font-weight: 700;\n line-height: 1.2;\n font-size: 2.75rem;\n margin: 0;\n display: block;\n font-size: 1.25rem;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-916iol-StyledText {\n display: inline;\n font-size: 1.625rem;\n }\n }\n\n .gamut-esmk6r-GridBox {\n display: -ms-grid;\n display: grid;\n padding: 0;\n gap: 1rem;\n margin-top: 1rem;\n list-style: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-esmk6r-GridBox {\n gap: 1.5rem;\n -ms-grid-columns: repeat(2, 1fr);\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-esmk6r-GridBox {\n -ms-grid-columns: repeat(3, 1fr);\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .gamut-7ww1f-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n width: 100%;\n height: 100%;\n }\n\n .gamut-7ww1f-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-7ww1f-AnchorBase [disabled],\n .gamut-7ww1f-AnchorBase:disabled,\n .gamut-7ww1f-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-7ww1f-AnchorBase:focus-visible,\n .gamut-7ww1f-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-7ww1f-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-7ww1f-AnchorBase:focus-visible:before,\n .gamut-7ww1f-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-yh6gkm-VariableProvider-CardWrapper {\n --color-background-current: var(--color-white);\n color: var(--color-text);\n border: 1px solid var(--color-border-primary);\n border-color: var(--color-border-primary);\n padding: 0;\n overflow: hidden;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n height: 100%;\n background-color: var(--color-background-current);\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n border-radius: 4px;\n -webkit-transition: box-shadow 200ms ease, -webkit-transform 200ms ease;\n transition: box-shadow 200ms ease, transform 200ms ease;\n position: relative;\n }\n\n .gamut-yh6gkm-VariableProvider-CardWrapper:hover {\n -webkit-transform: translate(4px, -4px);\n -moz-transform: translate(4px, -4px);\n -ms-transform: translate(4px, -4px);\n transform: translate(4px, -4px);\n box-shadow: -8px 8px 0 var(--color-shadow-primary);\n }\n\n .gamut-cngsd9-VariableProvider {\n --color-background-current: var(--color-green-100);\n color: var(--color-text);\n background-color: var(--color-background-current);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.75rem;\n box-shadow: inset 0 0 0 1px var(--color-white);\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n .gamut-x5l22h-StyledText {\n font-size: inherit;\n display: inline-block;\n margin: 0;\n font-family: \"Suisse\", \"Apercu\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 0.875rem;\n }\n\n .gamut-k2gb9h-GridBox {\n display: -ms-grid;\n display: grid;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n height: 100%;\n -ms-grid-auto-flow: column;\n grid-auto-flow: column;\n }\n\n .gamut-1w4xp80-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n text-align: left;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n\n .gamut-13xt492-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-align-items: flex-start;\n -webkit-box-align: flex-start;\n -ms-flex-align: flex-start;\n align-items: flex-start;\n }\n\n .gamut-19fjvr7-StyledText {\n font-weight: 700;\n line-height: 1.3;\n font-size: 2.125rem;\n font-weight: 700;\n line-height: 1.3;\n font-size: 1.25rem;\n margin: 0;\n padding-top: 0.75rem;\n padding-bottom: 0.25rem;\n }\n\n .gamut-3yj0pq-StyledText {\n font-size: inherit;\n display: inline-block;\n text-overflow: ellipsis;\n font-weight: 400;\n line-height: 1.5;\n font-size: 0.875rem;\n margin: 0;\n margin-bottom: 1rem;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n\n .gamut-3yj0pq-StyledText:after {\n top: 66.66666666666666%;\n }\n\n .gamut-1qae8vm-Box {\n margin-top: auto;\n }\n\n .gamut-1w8s615-Box {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n height: 0;\n position: relative;\n }\n\n .gamut-h8rrzn {\n width: 100%;\n height: 100%;\n margin-top: -1px;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n height: 1px;\n position: absolute;\n }\n\n .gamut-13kek28-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n }\n\n .gamut-jniw0z-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .gamut-3eiir9-FlexBox {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n padding-right: 0.25rem;\n }\n\n .gamut-3o0h5k {\n width: 16px;\n height: 16px;\n }\n\n .gamut-1f5xczp-StyledText {\n font-size: inherit;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n font-size: 0.875rem;\n margin: 0;\n white-space: nowrap;\n padding-left: 0.25rem;\n }\n\n .gamut-a9a7ya-Box {\n padding-left: 4rem;\n padding-right: 4rem;\n display: none;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .gamut-1o143y2-Box-Box {\n width: 100px;\n height: 100px;\n }\n\n .gamut-1y7hb43 {\n border-top: 1px solid var(--color-secondary);\n }\n\n @media print {\n .gamut-1y7hb43 {\n display: none;\n }\n }\n\n .gamut-pnw1bs-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-pnw1bs-LayoutGrid {\n padding: 2rem 0;\n }\n }\n\n .gamut-1gkks2k-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1gkks2k-StyledColumn {\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n }\n\n .gamut-15b6f3e-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n }\n\n .gamut-104w6rw-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -webkit-order: 1;\n -ms-flex-order: 1;\n order: 1;\n -ms-grid-rows: min-content;\n grid-template-rows: min-content;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-104w6rw-StyledColumn {\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n .gamut-1h3deyz-StyledText {\n font-weight: 700;\n line-height: 1.2;\n font-size: 2.75rem;\n font-weight: 400;\n line-height: 1.5;\n font-size: 0.875rem;\n margin: 0;\n font-weight: bold;\n margin-top: 1.5rem;\n margin-bottom: 1rem;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1h3deyz-StyledText {\n font-size: 1rem;\n margin-top: 0;\n }\n }\n\n .gamut-1jk5e01-Box {\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n }\n\n .gamut-77pqup {\n font-size: 0.875rem;\n margin: 0.5rem 0;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-77pqup {\n font-size: 1rem;\n margin: 0.25rem 0;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-77pqup {\n margin: 0.15rem 0;\n }\n }\n\n .gamut-w1p3aa-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n }\n\n .gamut-w1p3aa-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-w1p3aa-AnchorBase [disabled],\n .gamut-w1p3aa-AnchorBase:disabled,\n .gamut-w1p3aa-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-w1p3aa-AnchorBase:focus-visible,\n .gamut-w1p3aa-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-w1p3aa-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-w1p3aa-AnchorBase:focus-visible:before,\n .gamut-w1p3aa-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-y89lp0-Box {\n margin-bottom: 0;\n padding-top: 1rem;\n padding-left: 0;\n list-style-type: none;\n }\n\n .gamut-1grh0nu-Box {\n display: inline-block;\n }\n\n .gamut-ptezgn-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n margin-right: 0.5rem;\n font-size: 1.25rem;\n }\n\n .gamut-ptezgn-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-ptezgn-AnchorBase [disabled],\n .gamut-ptezgn-AnchorBase:disabled,\n .gamut-ptezgn-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-ptezgn-AnchorBase:focus-visible,\n .gamut-ptezgn-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-ptezgn-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-ptezgn-AnchorBase:focus-visible:before,\n .gamut-ptezgn-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-1f6dm8w-Box {\n display: unset;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1f6dm8w-Box {\n display: none;\n }\n }\n\n .gamut-17ppjv3-Box {\n display: unset;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-17ppjv3-Box {\n margin-top: 1.5rem;\n display: none;\n }\n }\n\n .gamut-6jvxk2-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -webkit-order: 3;\n -ms-flex-order: 3;\n order: 3;\n -ms-grid-rows: min-content;\n grid-template-rows: min-content;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-6jvxk2-StyledColumn {\n -webkit-order: 2;\n -ms-flex-order: 2;\n order: 2;\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n .gamut-5kj303-Box {\n display: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-5kj303-Box {\n display: unset;\n }\n }\n\n .gamut-yzpwb-Box {\n display: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-yzpwb-Box {\n margin-top: 1.5rem;\n display: unset;\n }\n }\n\n .gamut-1oivdx9-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -webkit-order: 2;\n -ms-flex-order: 2;\n order: 2;\n -ms-grid-rows: min-content;\n grid-template-rows: min-content;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1oivdx9-StyledColumn {\n -webkit-order: 3;\n -ms-flex-order: 3;\n order: 3;\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-cdht0j-Box {\n margin-bottom: 1.5rem;\n }\n }\n\n .gamut-4bflcb-Box {\n margin-top: auto;\n display: unset;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-4bflcb-Box {\n display: none;\n }\n }\n\n .gamut-g8w030-StyledText {\n font-size: inherit;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n font-size: 0.875rem;\n margin: 0;\n font-weight: bold;\n margin-top: 1.5rem;\n margin-bottom: 1rem;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-g8w030-StyledText {\n font-size: 1rem;\n margin-top: 0;\n }\n }\n\n .gamut-wzqz7x {\n height: 40px;\n color: var(--color-text);\n }\n\n .gamut-1ab94x3-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n display: none;\n -webkit-order: 4;\n -ms-flex-order: 4;\n order: 4;\n margin-top: auto;\n -ms-grid-rows: min-content;\n grid-template-rows: min-content;\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1ab94x3-StyledColumn {\n display: block;\n }\n }\n\n .gamut-13kt9o8-Box {\n margin-top: auto;\n display: none;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-13kt9o8-Box {\n display: unset;\n }\n }\n\n .gamut-2ry0sg {\n border-top: 1px solid var(--color-navy);\n margin-top: 2rem;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-2ry0sg {\n padding-top: 2rem;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-2ry0sg {\n border-left: 1px solid var(--color-navy);\n border-top: none;\n margin-left: 0;\n margin-top: 0;\n padding-left: 2rem;\n padding-top: 0;\n }\n }\n\n @media only screen and (min-width: 1200px) {\n .gamut-2ry0sg {\n padding-left: 4rem;\n }\n }\n\n .gamut-glpvwy-LayoutGrid {\n -ms-grid-columns: repeat(12, minmax(0, 1fr));\n grid-template-columns: repeat(12, minmax(0, 1fr));\n display: -ms-grid;\n display: grid;\n width: 100%;\n -ms-grid-column-gap: 1.5rem;\n grid-column-gap: 1.5rem;\n -webkit-column-gap: min(calc(100% / 11), 1.5rem);\n column-gap: min(calc(100% / 11), 1.5rem);\n }\n\n .gamut-1ttipmj-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1ttipmj-StyledColumn {\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n .gamut-25mlb6-Box {\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-bottom: 1rem;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-25mlb6-Box {\n max-height: none;\n }\n }\n\n .gamut-1ugzxxi {\n font-size: 0.875rem;\n margin: 0.5rem 0;\n margin: 0.25rem 0;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-1ugzxxi {\n font-size: 1rem;\n margin: 0.25rem 0;\n }\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1ugzxxi {\n margin: 0.15rem 0;\n }\n }\n\n .gamut-1szyq0p-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n white-space: nowrap;\n }\n\n .gamut-1szyq0p-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-1szyq0p-AnchorBase [disabled],\n .gamut-1szyq0p-AnchorBase:disabled,\n .gamut-1szyq0p-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-1szyq0p-AnchorBase:focus-visible,\n .gamut-1szyq0p-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-1szyq0p-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-1szyq0p-AnchorBase:focus-visible:before,\n .gamut-1szyq0p-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-d1cdmh-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n -ms-grid-rows: min-content;\n grid-template-rows: min-content;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-d1cdmh-StyledColumn {\n -ms-grid-column-span: 4;\n grid-column-end: span 4;\n }\n }\n\n .gamut-1iy6mcl-Box {\n margin-bottom: 0;\n padding-left: 0;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-flex-direction: column;\n -ms-flex-direction: column;\n flex-direction: column;\n list-style-type: none;\n }\n\n .gamut-1ewuzsp-Box {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n display: inline-block;\n width: 50%;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1ewuzsp-Box {\n width: 90%;\n }\n }\n\n .gamut-105ayb-AnchorBase {\n border: none;\n padding: 0;\n font-size: inherit;\n white-space: initial;\n box-shadow: none;\n display: inline-block;\n position: relative;\n color: var(--color-text);\n background-color: transparent;\n display: inline-block;\n }\n\n .gamut-105ayb-AnchorBase:hover {\n cursor: pointer;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-primary);\n }\n\n .gamut-105ayb-AnchorBase [disabled],\n .gamut-105ayb-AnchorBase:disabled,\n .gamut-105ayb-AnchorBase[aria-disabled='true'] {\n cursor: not-allowed;\n -webkit-text-decoration: none;\n text-decoration: none;\n color: var(--color-text-disabled);\n }\n\n .gamut-105ayb-AnchorBase:focus-visible,\n .gamut-105ayb-AnchorBase[data-focus-visible-added] {\n outline: none;\n color: var(--color-primary);\n }\n\n .gamut-105ayb-AnchorBase:before {\n content: '';\n border: 2px solid var(--color-border-primary);\n border-color: var(--color-primary);\n position: absolute;\n top: -4px;\n right: -4px;\n bottom: -4px;\n left: -4px;\n z-index: 0;\n opacity: 0;\n border-radius: 4px;\n }\n\n .gamut-105ayb-AnchorBase:focus-visible:before,\n .gamut-105ayb-AnchorBase[data-focus-visible-added]:before {\n opacity: 1;\n }\n\n .gamut-mniegn-StyledColumn {\n -ms-grid-column-span: 12;\n grid-column-end: span 12;\n -ms-grid-columns: minmax(0, 1fr);\n grid-template-columns: minmax(0, 1fr);\n display: -ms-grid;\n display: grid;\n display: block;\n -ms-grid-column-span: 6;\n grid-column-end: span 6;\n }\n\n @media only screen and (min-width: 768px) {\n .gamut-mniegn-StyledColumn {\n display: none;\n }\n }\n\n .gamut-1w55vf5 {\n border-top: 1px solid var(--color-navy);\n font-size: 0.875rem;\n padding: 1rem 0 0.5rem;\n margin: 0;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1w55vf5 {\n -webkit-align-items: baseline;\n -webkit-box-align: baseline;\n -ms-flex-align: baseline;\n align-items: baseline;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n }\n }\n\n .gamut-u397o4 {\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n list-style-type: none;\n margin-bottom: 0.5rem;\n padding-left: 0;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-u397o4 {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n -webkit-justify-content: flex-start;\n justify-content: flex-start;\n display: -webkit-inline-box;\n display: -webkit-inline-flex;\n display: -ms-inline-flexbox;\n display: inline-flex;\n }\n }\n\n .gamut-1idsucm::after {\n content: '|';\n margin: 0 0.375rem;\n font-size: 1rem;\n }\n\n .gamut-1idsucm:last-of-type::after {\n opacity: 0;\n }\n\n .gamut-1uhb0se-Box {\n text-align: center;\n }\n\n @media only screen and (min-width: 1024px) {\n .gamut-1uhb0se-Box {\n display: inline-block;\n text-align: right;\n }\n }\n\n .gamut-iakssz {\n display: inline-block;\n -webkit-filter: saturate(0.7);\n filter: saturate(0.7);\n margin-right: 0.25rem;\n min-width: 1.75em;\n text-align: center;\n }\n \n\n\n\n
\n
\n
Skip to Content\n \n \n \n \n \n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Codecademy Logo\n \n \n \n \n \n \n

Arrays & Sets

\n
\n
\n
\n \n \n \n \n \n \n \n

Print Cheatsheet

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n

Array

\n
\n
\n
\n
\n

An array stores an ordered collection of values\n of the same data type.

\n

Use the initializer syntax, [Type](), to create an empty array\n of a certain type.

\n
\n
\n
\n
\n
\n
var scores = [Int]()
\n
// The array is empty: []
\n
\n
\n
\n
\n
\n
\n

\n Initialize with Array Literal

\n
\n
\n
\n
\n

An array can be initialized with an array\n literal, which is a short-hand method of writing one or more values as\n an array collection.

\n

An array literal is written as a list of values,\n separated by commas, and surrounded by a pair of square brackets.

\n
\n
\n
\n
\n
\n
// Using type inference:
var snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]
\n
// Being explicit with the type:
var temp: [Int] = [33, 31, 30, 38, 44]
\n
\n
\n
\n
\n
\n
\n

Index

\n
\n
\n
\n
\n

An index refers to an item\u2019s position within an\n ordered list. Use the subscript syntax, array[index], to retrieve an\n individual element from an array.

\n

Note: Swift arrays are\n zero-indexed, meaning the first element has index 0.

\n
\n
\n
\n
\n
\n
var vowels = ["a", "e", "i", "o", "u"]
\n
print(vowels[0]) // Prints: a
print(vowels[1]) // Prints: e
print(vowels[2]) // Prints: i
print(vowels[3]) // Prints: o
print(vowels[4]) // Prints: u
\n
\n
\n
\n
\n
\n
\n

.count Property

\n
\n
\n
\n
\n

The .count property returns the number\n of elements in an array.

\n
\n
\n
\n
\n
\n
var grocery = ["\ud83e\udd53", "\ud83e\udd5e", "\ud83c\udf6a", "\ud83e\udd5b", "\ud83c\udf4a"]
\n
print(grocery.count)
\n
// Prints: 5
\n
\n
\n
\n
\n
\n
\n

.append() Method and += Operator

\n
\n
\n
\n
\n

The .append() method can be called on\n an array to add an item to the end of the array.

\n

The +=\n addition assignment operator can be used to add the elements of another\n array to the existing array.

\n
\n
\n
\n
\n
\n
var gymBadges = ["Boulder", "Cascade"]
\n
gymBadges.append("Thunder")
gymBadges += ["Rainbow", "Soul"]
\n
// ["Boulder", "Cascade", "Thunder", "Rainbow", "Soul"]
\n
\n
\n
\n
\n
\n
\n

.insert() and .remove() Methods

\n
\n
\n
\n
\n

The .insert() method can be called on\n an array to add an element at a specified index. It takes two arguments:\n value and at: index.

\n

The .remove() method can be called on\n an array to remove an element at a specified index. It takes one\n argument: at: index.

\n
\n
\n
\n
\n
\n
var moon = ["\ud83c\udf16", "\ud83c\udf17", "\ud83c\udf18", "\ud83c\udf11"]
\n
moon.insert("\ud83c\udf15", at: 0)
\n
// ["\ud83c\udf15", "\ud83c\udf16", "\ud83c\udf17", "\ud83c\udf18", "\ud83c\udf11"]
\n
moon.remove(at: 4)
\n
// ["\ud83c\udf15", "\ud83c\udf16", "\ud83c\udf17", "\ud83c\udf18"]
\n
\n
\n
\n
\n
\n
\n

Iterating\n Over an Array

\n
\n
\n
\n
\n

In Swift, a for-in loop can be used to iterate\n through the items of an array.

\n

This is a powerful tool for working with and\n manipulating a large amount of data.

\n
\n
\n
\n
\n
\n
var employees = ["Michael", "Dwight", "Jim", "Pam", "Andy"]
\n
for person in employees {
print(person)
}
\n
// Prints: Michael
// Prints: Dwight
// Prints: Jim
// Prints: Pam
// Prints: Andy
\n
\n
\n
\n
\n
\n
\n

Swift Sets

\n
\n
\n
\n
\n

We can use a set to store unique elements of the\n same data type.

\n
\n
\n
\n
\n
\n
var paintingsInMOMA: Set = ["The Dream", "The Starry Night", "The False Mirror"]
\n
\n
\n
\n
\n
\n
\n

Empty Sets

\n
\n
\n
\n
\n

An empty set is a set that contains no values\n inside of it.

\n
\n
\n
\n
\n
\n
var team = Set<String>()
\n
print(team)
// Prints: []
\n
\n
\n
\n
\n
\n
\n

Populated Sets

\n
\n
\n
\n
\n

To create a set populated with values, use the\n Set keyword before the\n assignment operator.

\n

The values of the set must be contained within\n brackets [] and separated with\n commas ,.

\n
\n
\n
\n
\n
\n
var vowels: Set = ["a", "e", "i", "o", "u"]
\n
\n
\n
\n
\n
\n
\n

.insert()

\n
\n
\n
\n
\n

To insert a single value into a set, append .insert() to a set and place the\n new value inside the parentheses ().

\n
\n
\n
\n
\n
\n
var cookieJar: Set = ["Chocolate Chip", "Oatmeal Raisin"]
\n
// Add a new element
cookieJar.insert("Peanut Butter Chip")
\n
\n
\n
\n
\n
\n
\n
\n

\n .remove() and .removeAll() Methods

\n
\n
\n
\n
\n

To remove a single value from a set, append .remove() to a set with the value\n to be removed placed inside the parentheses ().

\n

To remove every single value from a set at once,\n append .removeAll() to a set.\n

\n
\n
\n
\n
\n
\n
var oddNumbers: Set = [1, 2, 3, 5]
\n
// Remove an existing element
oddNumbers.remove(2)
\n
// Remove all elements
oddNumbers.removeAll()
\n
\n
\n
\n
\n
\n
\n

.contains()

\n
\n
\n
\n
\n

Appending .contains() to an existing set\n with an item in the parentheses () will return a true or false value that states whether\n the item exists within the set.

\n
\n
\n
\n
\n
\n
var names: Set = ["Rosa", "Doug", "Waldo"]
\n
print(names.contains("Lola")) // Prints: false
\n
if names.contains("Waldo"){
print("There's Waldo!")
} else {
print("Where's Waldo?")
}
// Prints: There's Waldo!
\n
\n
\n
\n
\n
\n
\n

Iterating\n Over a Set

\n
\n
\n
\n
\n

A for-in loop can be used to iterate\n over each item in a set.

\n
\n
\n
\n
\n
\n
var recipe: Set = ["Chocolate chips", "Eggs", "Flour", "Sugar"]
\n
for ingredient in recipe {
print ("Include \\(ingredient) in the recipe.")
}
\n
\n
\n
\n
\n
\n
\n

.isEmpty Property\n

\n
\n
\n
\n
\n

Use the built-in property .isEmpty to check if a set has no\n values contained in it.

\n
\n
\n
\n
\n
\n
var emptySet = Set<String>()
\n
print(emptySet.isEmpty) // Prints: true
\n
var populatedSet: Set = [1, 2, 3]
\n
print(populatedSet.isEmpty) // Prints: false
\n
\n
\n
\n
\n
\n
\n

.count Property\n

\n
\n
\n
\n
\n

The property .count returns the number of\n elements contained within a set.

\n
\n
\n
\n
\n
\n
var band: Set = ["Guitar", "Bass", "Drums", "Vocals"]
\n
print("There are \\(band.count) players in the band.")
// Prints: There are 4 players in the band.
\n
\n
\n
\n
\n
\n
\n

\n .intersection() Operation

\n
\n
\n
\n
\n

The .intersection() operation\n populates a new set of elements with the overlapping elements of two\n sets.

\n
\n
\n
\n
\n
\n
var setA: Set = ["A", "B", "C", "D"]
var setB: Set = ["C", "D", "E", "F"]
\n
var setC = setA.intersection(setB)
print(setC) // Prints: ["D", "C"]
\n
\n
\n
\n
\n
\n
\n

.union() Operation\n

\n
\n
\n
\n
\n

The .union() operation populates a new\n set by taking all the values from two sets and combining them.

\n
\n
\n
\n
\n
\n
var setA: Set = ["A", "B", "C", "D"]
var setB: Set = ["C", "D", "E", "F"]
\n
var setC = setA.union(setB)
print(setC)
// Prints: ["B", "A", "D", "F", "C", "E"]
\n
\n
\n
\n
\n
\n
\n

\n .symmetricDifference() Operation

\n
\n
\n
\n
\n

The .symmetricDifference() operation\n creates a new set with all the non-overlapping values between two sets.\n

\n
\n
\n
\n
\n
\n
var setA: Set = ["A", "B", "C", "D"]
var setB: Set = ["C", "D", "E", "F"]
\n
var setC = setA.symmetricDifference(setB)
print(setC)
// Prints: ["B", "E", "F", "A"]
\n
\n
\n
\n
\n
\n
\n

\n .subtracting() Operation

\n
\n
\n
\n
\n

The .subtracting() operation removes\n the values of one second set from another set and stores the remaining\n values in a new set.

\n
\n
\n
\n
\n
\n
var setA: Set = ["A", "B", "C", "D"]
var setB: Set = ["C", "D"]
\n
var setC = setA.subtracting(setB)
print(setC)
// Prints: ["B", "A"]
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n Next
\n
\n
\n
\n
\n \n \n \n \n \n \n \n

Print Cheatsheet

\n
\n
\n
\n

Learn more on Codecademy

\n \n
\n
\n
\n
\n
\n \n
\n
\n \n \n\n\n\n"} diff --git a/bench/data/groundtruth/code_20_dev_to.jsonl b/bench/data/groundtruth/code_20_dev_to.jsonl new file mode 100644 index 00000000..6f893ba5 --- /dev/null +++ b/bench/data/groundtruth/code_20_dev_to.jsonl @@ -0,0 +1 @@ +{"url": "https://dev.to/radzion/building-a-react-guitar-scale-visualizer-interactive-pentatonic-patterns-3hi6", "content": "\ud83d\udc19 GitHub| \ud83c\udfae Demo\n\nDiscover how to build an interactive guitar fretboard that visualizes Major and Minor pentatonic scales using React and TypeScript. This step-by-step guide will walk you through creating an intuitive widget that helps guitarists learn and practice these essential scales. You can explore the live demo at pentafret.com or dive into the complete source code on GitHub.\n\n## Project Overview\n\nOur application allows users to explore guitar scales interactively by selecting a root note and scale type. The app then visualizes the corresponding notes across 15 frets on the fretboard. For a detailed walkthrough of the app's foundation and the core fretboard rendering implementation, check out this post where we cover those topics in depth.\n\n## Understanding Pentatonic Scale Patterns\n\nOne of the most powerful aspects of pentatonic scales is their symmetrical nature - the pattern remains identical for both Major and Minor scales, with only the root note position shifting. For example, compare the G Major pentatonic with the E Minor pentatonic scales - you'll notice the same finger patterns, just starting from different positions. This means that once you master the 5 basic pentatonic patterns, you can apply them to both Major and Minor scales by simply moving the patterns to different positions on the fretboard. This versatility makes pentatonic scales an incredibly efficient learning tool for guitarists, as the same finger patterns can be used to play in any key, Major or Minor.\n\n## Implementing Scale Pattern Relationships\n\nTo enhance the learning experience, we want to highlight the relationship between Major and Minor pentatonic scales that share the same pattern. When a user selects either a Major or Minor pentatonic scale, we display a clickable subtitle that shows its relative counterpart (e.g., \"same pattern as E Minor pentatonic\" for G Major pentatonic). Clicking this subtitle instantly switches to the related scale, allowing users to visually understand how the same pattern can be used for both scales.\n\n```\nimport { UnstyledButton } from \"@lib/ui/buttons/UnstyledButton\"\nimport { useChangeScale, useScale } from \"./state/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport styled from \"styled-components\"\nimport { getColor } from \"@lib/ui/theme/getters\"\nimport { getRelativePentatonic } from \"@product/core/scale/getRelativePentatonic\"\n\nconst Button = styled(UnstyledButton)`\n &:hover {\n color: ${getColor(\"textPrimary\")};\n }\n`\n\nexport const PentatonicSubtitle = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const changeScale = useChangeScale()\n\n const relativePentatonic = getRelativePentatonic({\n scale,\n rootNote,\n })\n\n return (\n \n )\n}\n```\n\n## Calculating Relative Scales\n\nThe `getRelativePentatonic` function is the core calculation engine behind this feature. For any given scale, it determines its relative counterpart by shifting the root note by three semitones - up when converting from Minor and down for Major. For instance, this is how we determine that G Major and E Minor share the same pattern.\n\n```\nimport { match } from \"@lib/utils/match\"\nimport { chromaticNotesNumber } from \"../note\"\nimport { getPairComplement } from \"@lib/utils/pair/getPairComplement\"\nimport { scalePatterns, pentatonicScales, PentatonicScale } from \"./index\"\n\ntype Pentatonic = {\n scale: PentatonicScale\n rootNote: number\n}\n\nexport const getRelativePentatonic = ({\n scale,\n rootNote,\n}: Pentatonic): Pentatonic => {\n const [semitones] = scalePatterns[\"minor-pentatonic\"]\n const direction = match(scale, {\n \"minor-pentatonic\": () => 1,\n \"major-pentatonic\": () => -1,\n })\n\n const relativeNote =\n (rootNote + semitones * direction + chromaticNotesNumber) %\n chromaticNotesNumber\n\n const relativeScale = getPairComplement(pentatonicScales, scale)\n\n return {\n scale: relativeScale,\n rootNote: relativeNote,\n }\n}\n```\n\n## Musical Note Representation\n\nIn our application, we represent musical notes using a zero-based numbering system. Each note is assigned a number from 0 to 11, where A is 0, A\\# (or Bb) is 1, B is 2, C is 3, and so forth.\n\n```\nimport { scalePatterns } from \"../scale\"\n\nexport const naturalNotesNames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n\nexport const chromaticNotesNames = scalePatterns.minor.reduce(\n (acc, step, index) => {\n const note = naturalNotesNames[index]\n\n acc.push(note)\n\n if (step === 2) {\n acc.push(`${note}#`)\n }\n\n return acc\n },\n [] as string[],\n)\n\nexport const chromaticNotesNumber = chromaticNotesNames.length\n\nexport const isNaturalNote = (note: number) =>\n chromaticNotesNames[note].length === 1\n```\n\n## Visualizing Scale Patterns\n\nTo present the scale patterns in an organized and visually appealing way, we create a `PentatonicPatterns` component. This component displays a collection of essential scale shapes, each representing a different position on the fretboard. It shows a title with the current scale name (e.g., \"G Major Pentatonic Patterns\") and renders multiple `PentatonicPattern` components, one for each shape in the selected scale:\n\n```\nimport { range } from \"@lib/utils/array/range\"\nimport { scaleNames, PentatonicScale, scalePatterns } from \"@product/core/scale\"\nimport { Text } from \"@lib/ui/text\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { useScale } from \"../state/scale\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { PentatonicPattern } from \"./PentatonicPattern\"\n\nexport const PentatonicPatterns = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Patterns`\n\n return (\n \n \n \n {title}\n \n \n {scalePatterns[scale].length} Essential Shapes for Guitar Solos\n \n \n {range(scalePatterns[scale].length).map((index) => (\n \n ))}\n \n )\n}\n```\n\n## Rendering Individual Patterns\n\nEach pattern is rendered using the `PentatonicPattern` component, which creates an interactive fretboard visualization for a specific position. The component takes a pattern index and scale type as props, calculates the note positions using `getPentatonicPattern` , and renders them on a fretboard. Root notes are highlighted to help guitarists identify key reference points while practicing:\n\n```\nimport { IndexProp } from \"@lib/ui/props\"\nimport { useScale } from \"../state/scale\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { stringsCount, tuning } from \"../../guitar/config\"\nimport { Fretboard } from \"../../guitar/fretboard/Fretboard\"\nimport { Note } from \"../../guitar/fretboard/Note\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { Text } from \"@lib/ui/text\"\nimport { getNoteFromPosition } from \"@product/core/note/getNoteFromPosition\"\nimport { getPentatonicPattern } from \"./getPentatonicPattern\"\n\nexport const PentatonicPattern = ({\n index: patternIndex,\n scale,\n}: IndexProp & { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const notes = getPentatonicPattern({\n index: patternIndex,\n scale,\n rootNote,\n stringsCount,\n tuning,\n })\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Pattern #${patternIndex + 1}`\n\n return (\n \n \n {title}\n \n \n {notes.map((position) => {\n const note = getNoteFromPosition({ tuning, position })\n\n return (\n \n )\n })}\n \n \n )\n}\n```\n\n## Fretboard Position System\n\nTo reference a note's position on the fretboard, we need two pieces of information: the string number (zero-based, from top to bottom) and the fret number (where -1 represents an open string, and 0 represents the first fret):\n\n```\nexport type NotePosition = {\n // 0-based index of the string\n string: number\n // -1 if the note is open\n // 0 if the note is on the 1st fret\n fret: number\n}\n```\n\n## Pattern Generation Algorithm\n\nThe `getPentatonicPattern` function builds each scale shape using a systematic approach. First, it determines the starting note by adding up the scale intervals based on the pattern index. Then, it follows a specific traversal strategy: starting from the lowest string (6th), it places two notes per string, working its way up to the highest string (1st). For each new note, it calculates the fret position by either using the first note of the pattern or by adding the appropriate interval to the previous note's position. When moving to a new string, the algorithm applies a shift of 4 or 5 frets (depending on the string) to maintain the pattern's shape:\n\n```\nimport { scalePatterns } from \"@product/core/scale\"\nimport { sum } from \"@lib/utils/array/sum\"\nimport { match } from \"@lib/utils/match\"\nimport { getRelativePentatonic } from \"@product/core/scale/pentatonic/getRelativePentatonic\"\nimport { PentatonicScale } from \"@product/core/scale\"\nimport { getLastItem } from \"@lib/utils/array/getLastItem\"\nimport { range } from \"@lib/utils/array/range\"\nimport { getNoteFret } from \"@product/core/guitar/getNoteFret\"\nimport { chromaticNotesNumber } from \"@product/core/note\"\nimport { NotePosition } from \"@product/core/note/NotePosition\"\n\ntype Input = {\n index: number\n scale: PentatonicScale\n rootNote: number\n stringsCount: number\n tuning: number[]\n}\n\nexport const getPentatonicPattern = ({\n index,\n scale,\n rootNote,\n stringsCount,\n tuning,\n}: Input) => {\n const pattern = scalePatterns[\"minor-pentatonic\"]\n\n const minorRootNote = match(scale, {\n \"minor-pentatonic\": () => rootNote,\n \"major-pentatonic\": () =>\n getRelativePentatonic({ scale, rootNote }).rootNote,\n })\n\n const firstNote =\n (minorRootNote + sum(pattern.slice(0, index))) % chromaticNotesNumber\n\n const result: NotePosition[] = []\n\n range(stringsCount * 2).forEach((index) => {\n const string = stringsCount - Math.floor(index / 2) - 1\n\n const openNote = tuning[string]\n\n const previousPosition = getLastItem(result)\n\n const getFret = () => {\n if (!previousPosition) {\n return getNoteFret({ openNote, note: firstNote })\n }\n\n const step = pattern[(index + index - 1) % pattern.length]\n\n const fret = previousPosition.fret + step\n\n if (index % 2 === 0) {\n const shift = string === 1 ? 4 : 5\n\n return fret - shift\n }\n\n return fret\n }\n\n result.push({\n string,\n fret: getFret(),\n })\n })\n\n if (result.some((position) => position.fret < -1)) {\n return result.map((position) => ({\n ...position,\n fret: position.fret + chromaticNotesNumber,\n }))\n }\n\n return result\n}\n```\n\n## Handling Edge Cases\n\nSometimes, our pattern calculation might result in negative fret positions (less than -1), which aren't playable on a guitar. In such cases, we shift the entire pattern up by an octave (12 frets) to keep it in a playable range. For example, in the G Minor pentatonic pattern shown below, we move all notes 12 frets higher to maintain the same pattern shape in a more practical position:\n\n## Conclusion\n\nWith these components and algorithms in place, we've created an interactive learning tool that helps guitarists visualize and practice pentatonic scales across the fretboard. The application handles the complexities of musical theory and fretboard geometry, allowing players to focus on mastering these essential patterns in any key they choose.\n", "main_html": "

\ud83d\udc19 GitHub | \ud83c\udfae Demo

Discover how to build an interactive guitar fretboard that visualizes Major and Minor pentatonic scales using React and TypeScript. This step-by-step guide will walk you through creating an intuitive widget that helps guitarists learn and practice these essential scales. You can explore the live demo at pentafret.com or dive into the complete source code on GitHub.

\"5

\n Project Overview\n

Our application allows users to explore guitar scales interactively by selecting a root note and scale type. The app then visualizes the corresponding notes across 15 frets on the fretboard. For a detailed walkthrough of the app's foundation and the core fretboard rendering implementation, check out this post where we cover those topics in depth.

\"Select

\n Understanding Pentatonic Scale Patterns\n

One of the most powerful aspects of pentatonic scales is their symmetrical nature - the pattern remains identical for both Major and Minor scales, with only the root note position shifting. For example, compare the G Major pentatonic with the E Minor pentatonic scales - you'll notice the same finger patterns, just starting from different positions. This means that once you master the 5 basic pentatonic patterns, you can apply them to both Major and Minor scales by simply moving the patterns to different positions on the fretboard. This versatility makes pentatonic scales an incredibly efficient learning tool for guitarists, as the same finger patterns can be used to play in any key, Major or Minor.

\"G

\n Implementing Scale Pattern Relationships\n

To enhance the learning experience, we want to highlight the relationship between Major and Minor pentatonic scales that share the same pattern. When a user selects either a Major or Minor pentatonic scale, we display a clickable subtitle that shows its relative counterpart (e.g., \"same pattern as E Minor pentatonic\" for G Major pentatonic). Clicking this subtitle instantly switches to the related scale, allowing users to visually understand how the same pattern can be used for both scales.

import { UnstyledButton } from \"@lib/ui/buttons/UnstyledButton\"\nimport { useChangeScale, useScale } from \"./state/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport styled from \"styled-components\"\nimport { getColor } from \"@lib/ui/theme/getters\"\nimport { getRelativePentatonic } from \"@product/core/scale/getRelativePentatonic\"\n\nconst Button = styled(UnstyledButton)`\n &:hover {\n color: ${getColor(\"textPrimary\")};\n }\n`\n\nexport const PentatonicSubtitle = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const changeScale = useChangeScale()\n\n const relativePentatonic = getRelativePentatonic({\n scale,\n rootNote,\n })\n\n return (\n <Button onClick={() => changeScale(relativePentatonic)}>\n (same pattern as {chromaticNotesNames[relativePentatonic.rootNote]}{\" \"}\n {scaleNames[relativePentatonic.scale]} pentatonic)\n </Button>\n )\n}\nEnter fullscreen modeExit fullscreen mode

\n Calculating Relative Scales\n

The getRelativePentatonic function is the core calculation engine behind this feature. For any given scale, it determines its relative counterpart by shifting the root note by three semitones - up when converting from Minor and down for Major. For instance, this is how we determine that G Major and E Minor share the same pattern.

import { match } from \"@lib/utils/match\"\nimport { chromaticNotesNumber } from \"../note\"\nimport { getPairComplement } from \"@lib/utils/pair/getPairComplement\"\nimport { scalePatterns, pentatonicScales, PentatonicScale } from \"./index\"\n\ntype Pentatonic = {\n scale: PentatonicScale\n rootNote: number\n}\n\nexport const getRelativePentatonic = ({\n scale,\n rootNote,\n}: Pentatonic): Pentatonic => {\n const [semitones] = scalePatterns[\"minor-pentatonic\"]\n const direction = match(scale, {\n \"minor-pentatonic\": () => 1,\n \"major-pentatonic\": () => -1,\n })\n\n const relativeNote =\n (rootNote + semitones * direction + chromaticNotesNumber) %\n chromaticNotesNumber\n\n const relativeScale = getPairComplement(pentatonicScales, scale)\n\n return {\n scale: relativeScale,\n rootNote: relativeNote,\n }\n}\nEnter fullscreen modeExit fullscreen mode

\n Musical Note Representation\n

In our application, we represent musical notes using a zero-based numbering system. Each note is assigned a number from 0 to 11, where A is 0, A# (or Bb) is 1, B is 2, C is 3, and so forth.

import { scalePatterns } from \"../scale\"\n\nexport const naturalNotesNames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n\nexport const chromaticNotesNames = scalePatterns.minor.reduce(\n (acc, step, index) => {\n const note = naturalNotesNames[index]\n\n acc.push(note)\n\n if (step === 2) {\n acc.push(`${note}#`)\n }\n\n return acc\n },\n [] as string[],\n)\n\nexport const chromaticNotesNumber = chromaticNotesNames.length\n\nexport const isNaturalNote = (note: number) =>\n chromaticNotesNames[note].length === 1\nEnter fullscreen modeExit fullscreen mode

\n Visualizing Scale Patterns\n

To present the scale patterns in an organized and visually appealing way, we create a PentatonicPatterns component. This component displays a collection of essential scale shapes, each representing a different position on the fretboard. It shows a title with the current scale name (e.g., \"G Major Pentatonic Patterns\") and renders multiple PentatonicPattern components, one for each shape in the selected scale:

import { range } from \"@lib/utils/array/range\"\nimport { scaleNames, PentatonicScale, scalePatterns } from \"@product/core/scale\"\nimport { Text } from \"@lib/ui/text\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { useScale } from \"../state/scale\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { PentatonicPattern } from \"./PentatonicPattern\"\n\nexport const PentatonicPatterns = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Patterns`\n\n return (\n <VStack gap={60}>\n <VStack gap={8}>\n <Text\n centerHorizontally\n weight={800}\n size={32}\n color=\"contrast\"\n as=\"h2\"\n >\n {title}\n </Text>\n <Text\n centerHorizontally\n weight={700}\n size={20}\n color=\"supporting\"\n as=\"h4\"\n >\n {scalePatterns[scale].length} Essential Shapes for Guitar Solos\n </Text>\n </VStack>\n {range(scalePatterns[scale].length).map((index) => (\n <PentatonicPattern key={index} index={index} scale={scale} />\n ))}\n </VStack>\n )\n}\nEnter fullscreen modeExit fullscreen mode

\n Rendering Individual Patterns\n

Each pattern is rendered using the PentatonicPattern component, which creates an interactive fretboard visualization for a specific position. The component takes a pattern index and scale type as props, calculates the note positions using getPentatonicPattern, and renders them on a fretboard. Root notes are highlighted to help guitarists identify key reference points while practicing:

import { IndexProp } from \"@lib/ui/props\"\nimport { useScale } from \"../state/scale\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { stringsCount, tuning } from \"../../guitar/config\"\nimport { Fretboard } from \"../../guitar/fretboard/Fretboard\"\nimport { Note } from \"../../guitar/fretboard/Note\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { Text } from \"@lib/ui/text\"\nimport { getNoteFromPosition } from \"@product/core/note/getNoteFromPosition\"\nimport { getPentatonicPattern } from \"./getPentatonicPattern\"\n\nexport const PentatonicPattern = ({\n index: patternIndex,\n scale,\n}: IndexProp & { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const notes = getPentatonicPattern({\n index: patternIndex,\n scale,\n rootNote,\n stringsCount,\n tuning,\n })\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Pattern #${patternIndex + 1}`\n\n return (\n <VStack gap={40}>\n <Text centerHorizontally color=\"contrast\" as=\"h3\" weight=\"700\" size={18}>\n {title}\n </Text>\n <Fretboard>\n {notes.map((position) => {\n const note = getNoteFromPosition({ tuning, position })\n\n return (\n <Note\n key={`${position.string}-${position.fret}`}\n {...position}\n kind={rootNote === note ? \"primary\" : \"regular\"}\n />\n )\n })}\n </Fretboard>\n </VStack>\n )\n}\nEnter fullscreen modeExit fullscreen mode

\n Fretboard Position System\n

To reference a note's position on the fretboard, we need two pieces of information: the string number (zero-based, from top to bottom) and the fret number (where -1 represents an open string, and 0 represents the first fret):

export type NotePosition = {\n // 0-based index of the string\n string: number\n // -1 if the note is open\n // 0 if the note is on the 1st fret\n fret: number\n}\nEnter fullscreen modeExit fullscreen mode

\n Pattern Generation Algorithm\n

The getPentatonicPattern function builds each scale shape using a systematic approach. First, it determines the starting note by adding up the scale intervals based on the pattern index. Then, it follows a specific traversal strategy: starting from the lowest string (6th), it places two notes per string, working its way up to the highest string (1st). For each new note, it calculates the fret position by either using the first note of the pattern or by adding the appropriate interval to the previous note's position. When moving to a new string, the algorithm applies a shift of 4 or 5 frets (depending on the string) to maintain the pattern's shape:

import { scalePatterns } from \"@product/core/scale\"\nimport { sum } from \"@lib/utils/array/sum\"\nimport { match } from \"@lib/utils/match\"\nimport { getRelativePentatonic } from \"@product/core/scale/pentatonic/getRelativePentatonic\"\nimport { PentatonicScale } from \"@product/core/scale\"\nimport { getLastItem } from \"@lib/utils/array/getLastItem\"\nimport { range } from \"@lib/utils/array/range\"\nimport { getNoteFret } from \"@product/core/guitar/getNoteFret\"\nimport { chromaticNotesNumber } from \"@product/core/note\"\nimport { NotePosition } from \"@product/core/note/NotePosition\"\n\ntype Input = {\n index: number\n scale: PentatonicScale\n rootNote: number\n stringsCount: number\n tuning: number[]\n}\n\nexport const getPentatonicPattern = ({\n index,\n scale,\n rootNote,\n stringsCount,\n tuning,\n}: Input) => {\n const pattern = scalePatterns[\"minor-pentatonic\"]\n\n const minorRootNote = match(scale, {\n \"minor-pentatonic\": () => rootNote,\n \"major-pentatonic\": () =>\n getRelativePentatonic({ scale, rootNote }).rootNote,\n })\n\n const firstNote =\n (minorRootNote + sum(pattern.slice(0, index))) % chromaticNotesNumber\n\n const result: NotePosition[] = []\n\n range(stringsCount * 2).forEach((index) => {\n const string = stringsCount - Math.floor(index / 2) - 1\n\n const openNote = tuning[string]\n\n const previousPosition = getLastItem(result)\n\n const getFret = () => {\n if (!previousPosition) {\n return getNoteFret({ openNote, note: firstNote })\n }\n\n const step = pattern[(index + index - 1) % pattern.length]\n\n const fret = previousPosition.fret + step\n\n if (index % 2 === 0) {\n const shift = string === 1 ? 4 : 5\n\n return fret - shift\n }\n\n return fret\n }\n\n result.push({\n string,\n fret: getFret(),\n })\n })\n\n if (result.some((position) => position.fret < -1)) {\n return result.map((position) => ({\n ...position,\n fret: position.fret + chromaticNotesNumber,\n }))\n }\n\n return result\n}\nEnter fullscreen modeExit fullscreen mode

\n Handling Edge Cases\n

Sometimes, our pattern calculation might result in negative fret positions (less than -1), which aren't playable on a guitar. In such cases, we shift the entire pattern up by an octave (12 frets) to keep it in a playable range. For example, in the G Minor pentatonic pattern shown below, we move all notes 12 frets higher to maintain the same pattern shape in a more practical position:

\"Moving

\n Conclusion\n

With these components and algorithms in place, we've created an interactive learning tool that helps guitarists visualize and practice pentatonic scales across the fretboard. The application handles the complexities of musical theory and fretboard geometry, allowing players to focus on mastering these essential patterns in any key they choose.

", "content_list": [[{"type": "paragraph", "raw_content": "

\ud83d\udc19 GitHub | \ud83c\udfae Demo

", "content": [{"c": "\ud83d\udc19 GitHub| \ud83c\udfae Demo", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Discover how to build an interactive guitar fretboard that visualizes Major and Minor pentatonic scales using React and TypeScript. This step-by-step guide will walk you through creating an intuitive widget that helps guitarists learn and practice these essential scales. You can explore the live demo at pentafret.com or dive into the complete source code on GitHub.

", "content": [{"c": "Discover how to build an interactive guitar fretboard that visualizes Major and Minor pentatonic scales using React and TypeScript. This step-by-step guide will walk you through creating an intuitive widget that helps guitarists learn and practice these essential scales. You can explore the live demo at pentafret.com or dive into the complete source code on GitHub.", "t": "text"}]}, {"type": "image", "raw_content": "\"5", "content": {"url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90o1ol47yupltzsb6zew.jpeg", "data": null, "alt": "5 Pentatonic Patterns", "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Project Overview\n

", "content": {"title_content": "Project Overview", "level": "2"}}, {"type": "paragraph", "raw_content": "

Our application allows users to explore guitar scales interactively by selecting a root note and scale type. The app then visualizes the corresponding notes across 15 frets on the fretboard. For a detailed walkthrough of the app's foundation and the core fretboard rendering implementation, check out this post where we cover those topics in depth.

", "content": [{"c": "Our application allows users to explore guitar scales interactively by selecting a root note and scale type. The app then visualizes the corresponding notes across 15 frets on the fretboard. For a detailed walkthrough of the app's foundation and the core fretboard rendering implementation, check out this post where we cover those topics in depth.", "t": "text"}]}, {"type": "image", "raw_content": "\"Select", "content": {"url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopi5wg2zxu0kzhuakz1w.jpeg", "data": null, "alt": "Select Root Note and Scale Type", "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Understanding Pentatonic Scale Patterns\n

", "content": {"title_content": "Understanding Pentatonic Scale Patterns", "level": "2"}}, {"type": "paragraph", "raw_content": "

One of the most powerful aspects of pentatonic scales is their symmetrical nature - the pattern remains identical for both Major and Minor scales, with only the root note position shifting. For example, compare the G Major pentatonic with the E Minor pentatonic scales - you'll notice the same finger patterns, just starting from different positions. This means that once you master the 5 basic pentatonic patterns, you can apply them to both Major and Minor scales by simply moving the patterns to different positions on the fretboard. This versatility makes pentatonic scales an incredibly efficient learning tool for guitarists, as the same finger patterns can be used to play in any key, Major or Minor.

", "content": [{"c": "One of the most powerful aspects of pentatonic scales is their symmetrical nature - the pattern remains identical for both Major and Minor scales, with only the root note position shifting. For example, compare the G Major pentatonic with the E Minor pentatonic scales - you'll notice the same finger patterns, just starting from different positions. This means that once you master the 5 basic pentatonic patterns, you can apply them to both Major and Minor scales by simply moving the patterns to different positions on the fretboard. This versatility makes pentatonic scales an incredibly efficient learning tool for guitarists, as the same finger patterns can be used to play in any key, Major or Minor.", "t": "text"}]}, {"type": "image", "raw_content": "\"G", "content": {"url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjc98f3u8fq9hpj1wbsn.jpeg", "data": null, "alt": "G Major Pentatonic", "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Implementing Scale Pattern Relationships\n

", "content": {"title_content": "Implementing Scale Pattern Relationships", "level": "2"}}, {"type": "paragraph", "raw_content": "

To enhance the learning experience, we want to highlight the relationship between Major and Minor pentatonic scales that share the same pattern. When a user selects either a Major or Minor pentatonic scale, we display a clickable subtitle that shows its relative counterpart (e.g., \"same pattern as E Minor pentatonic\" for G Major pentatonic). Clicking this subtitle instantly switches to the related scale, allowing users to visually understand how the same pattern can be used for both scales.

", "content": [{"c": "To enhance the learning experience, we want to highlight the relationship between Major and Minor pentatonic scales that share the same pattern. When a user selects either a Major or Minor pentatonic scale, we display a clickable subtitle that shows its relative counterpart (e.g., \"same pattern as E Minor pentatonic\" for G Major pentatonic). Clicking this subtitle instantly switches to the related scale, allowing users to visually understand how the same pattern can be used for both scales.\n", "t": "text"}]}, {"type": "code", "raw_content": "import { UnstyledButton } from \"@lib/ui/buttons/UnstyledButton\"\nimport { useChangeScale, useScale } from \"./state/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport styled from \"styled-components\"\nimport { getColor } from \"@lib/ui/theme/getters\"\nimport { getRelativePentatonic } from \"@product/core/scale/getRelativePentatonic\"\n\nconst Button = styled(UnstyledButton)`\n &:hover {\n color: ${getColor(\"textPrimary\")};\n }\n`\n\nexport const PentatonicSubtitle = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const changeScale = useChangeScale()\n\n const relativePentatonic = getRelativePentatonic({\n scale,\n rootNote,\n })\n\n return (\n <Button onClick={() => changeScale(relativePentatonic)}>\n (same pattern as {chromaticNotesNames[relativePentatonic.rootNote]}{\" \"}\n {scaleNames[relativePentatonic.scale]} pentatonic)\n </Button>\n )\n}\n", "inline": false, "content": {"code_content": "import { UnstyledButton } from \"@lib/ui/buttons/UnstyledButton\"\nimport { useChangeScale, useScale } from \"./state/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport styled from \"styled-components\"\nimport { getColor } from \"@lib/ui/theme/getters\"\nimport { getRelativePentatonic } from \"@product/core/scale/getRelativePentatonic\"\n\nconst Button = styled(UnstyledButton)`\n &:hover {\n color: ${getColor(\"textPrimary\")};\n }\n`\n\nexport const PentatonicSubtitle = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const changeScale = useChangeScale()\n\n const relativePentatonic = getRelativePentatonic({\n scale,\n rootNote,\n })\n\n return (\n \n )\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Calculating Relative Scales\n

", "content": {"title_content": "Calculating Relative Scales", "level": "2"}}, {"type": "paragraph", "raw_content": "

The getRelativePentatonic function is the core calculation engine behind this feature. For any given scale, it determines its relative counterpart by shifting the root note by three semitones - up when converting from Minor and down for Major. For instance, this is how we determine that G Major and E Minor share the same pattern.

", "content": [{"c": "The", "t": "text"}, {"c": "getRelativePentatonic", "t": "code-inline"}, {"c": "function is the core calculation engine behind this feature. For any given scale, it determines its relative counterpart by shifting the root note by three semitones - up when converting from Minor and down for Major. For instance, this is how we determine that G Major and E Minor share the same pattern.\n", "t": "text"}]}, {"type": "code", "raw_content": "import { match } from \"@lib/utils/match\"\nimport { chromaticNotesNumber } from \"../note\"\nimport { getPairComplement } from \"@lib/utils/pair/getPairComplement\"\nimport { scalePatterns, pentatonicScales, PentatonicScale } from \"./index\"\n\ntype Pentatonic = {\n scale: PentatonicScale\n rootNote: number\n}\n\nexport const getRelativePentatonic = ({\n scale,\n rootNote,\n}: Pentatonic): Pentatonic => {\n const [semitones] = scalePatterns[\"minor-pentatonic\"]\n const direction = match(scale, {\n \"minor-pentatonic\": () => 1,\n \"major-pentatonic\": () => -1,\n })\n\n const relativeNote =\n (rootNote + semitones * direction + chromaticNotesNumber) %\n chromaticNotesNumber\n\n const relativeScale = getPairComplement(pentatonicScales, scale)\n\n return {\n scale: relativeScale,\n rootNote: relativeNote,\n }\n}\n", "inline": false, "content": {"code_content": "import { match } from \"@lib/utils/match\"\nimport { chromaticNotesNumber } from \"../note\"\nimport { getPairComplement } from \"@lib/utils/pair/getPairComplement\"\nimport { scalePatterns, pentatonicScales, PentatonicScale } from \"./index\"\n\ntype Pentatonic = {\n scale: PentatonicScale\n rootNote: number\n}\n\nexport const getRelativePentatonic = ({\n scale,\n rootNote,\n}: Pentatonic): Pentatonic => {\n const [semitones] = scalePatterns[\"minor-pentatonic\"]\n const direction = match(scale, {\n \"minor-pentatonic\": () => 1,\n \"major-pentatonic\": () => -1,\n })\n\n const relativeNote =\n (rootNote + semitones * direction + chromaticNotesNumber) %\n chromaticNotesNumber\n\n const relativeScale = getPairComplement(pentatonicScales, scale)\n\n return {\n scale: relativeScale,\n rootNote: relativeNote,\n }\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Musical Note Representation\n

", "content": {"title_content": "Musical Note Representation", "level": "2"}}, {"type": "paragraph", "raw_content": "

In our application, we represent musical notes using a zero-based numbering system. Each note is assigned a number from 0 to 11, where A is 0, A# (or Bb) is 1, B is 2, C is 3, and so forth.

", "content": [{"c": "In our application, we represent musical notes using a zero-based numbering system. Each note is assigned a number from 0 to 11, where A is 0, A# (or Bb) is 1, B is 2, C is 3, and so forth.\n", "t": "text"}]}, {"type": "code", "raw_content": "import { scalePatterns } from \"../scale\"\n\nexport const naturalNotesNames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n\nexport const chromaticNotesNames = scalePatterns.minor.reduce(\n (acc, step, index) => {\n const note = naturalNotesNames[index]\n\n acc.push(note)\n\n if (step === 2) {\n acc.push(`${note}#`)\n }\n\n return acc\n },\n [] as string[],\n)\n\nexport const chromaticNotesNumber = chromaticNotesNames.length\n\nexport const isNaturalNote = (note: number) =>\n chromaticNotesNames[note].length === 1\n", "inline": false, "content": {"code_content": "import { scalePatterns } from \"../scale\"\n\nexport const naturalNotesNames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n\nexport const chromaticNotesNames = scalePatterns.minor.reduce(\n (acc, step, index) => {\n const note = naturalNotesNames[index]\n\n acc.push(note)\n\n if (step === 2) {\n acc.push(`${note}#`)\n }\n\n return acc\n },\n [] as string[],\n)\n\nexport const chromaticNotesNumber = chromaticNotesNames.length\n\nexport const isNaturalNote = (note: number) =>\n chromaticNotesNames[note].length === 1", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Visualizing Scale Patterns\n

", "content": {"title_content": "Visualizing Scale Patterns", "level": "2"}}, {"type": "paragraph", "raw_content": "

To present the scale patterns in an organized and visually appealing way, we create a PentatonicPatterns component. This component displays a collection of essential scale shapes, each representing a different position on the fretboard. It shows a title with the current scale name (e.g., \"G Major Pentatonic Patterns\") and renders multiple PentatonicPattern components, one for each shape in the selected scale:

", "content": [{"c": "To present the scale patterns in an organized and visually appealing way, we create a", "t": "text"}, {"c": "PentatonicPatterns", "t": "code-inline"}, {"c": "component. This component displays a collection of essential scale shapes, each representing a different position on the fretboard. It shows a title with the current scale name (e.g., \"G Major Pentatonic Patterns\") and renders multiple", "t": "text"}, {"c": "PentatonicPattern", "t": "code-inline"}, {"c": "components, one for each shape in the selected scale:\n", "t": "text"}]}, {"type": "code", "raw_content": "import { range } from \"@lib/utils/array/range\"\nimport { scaleNames, PentatonicScale, scalePatterns } from \"@product/core/scale\"\nimport { Text } from \"@lib/ui/text\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { useScale } from \"../state/scale\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { PentatonicPattern } from \"./PentatonicPattern\"\n\nexport const PentatonicPatterns = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Patterns`\n\n return (\n <VStack gap={60}>\n <VStack gap={8}>\n <Text\n centerHorizontally\n weight={800}\n size={32}\n color=\"contrast\"\n as=\"h2\"\n >\n {title}\n </Text>\n <Text\n centerHorizontally\n weight={700}\n size={20}\n color=\"supporting\"\n as=\"h4\"\n >\n {scalePatterns[scale].length} Essential Shapes for Guitar Solos\n </Text>\n </VStack>\n {range(scalePatterns[scale].length).map((index) => (\n <PentatonicPattern key={index} index={index} scale={scale} />\n ))}\n </VStack>\n )\n}\n", "inline": false, "content": {"code_content": "import { range } from \"@lib/utils/array/range\"\nimport { scaleNames, PentatonicScale, scalePatterns } from \"@product/core/scale\"\nimport { Text } from \"@lib/ui/text\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { useScale } from \"../state/scale\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { PentatonicPattern } from \"./PentatonicPattern\"\n\nexport const PentatonicPatterns = ({ scale }: { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Patterns`\n\n return (\n \n \n \n {title}\n \n \n {scalePatterns[scale].length} Essential Shapes for Guitar Solos\n \n \n {range(scalePatterns[scale].length).map((index) => (\n \n ))}\n \n )\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Rendering Individual Patterns\n

", "content": {"title_content": "Rendering Individual Patterns", "level": "2"}}, {"type": "paragraph", "raw_content": "

Each pattern is rendered using the PentatonicPattern component, which creates an interactive fretboard visualization for a specific position. The component takes a pattern index and scale type as props, calculates the note positions using getPentatonicPattern, and renders them on a fretboard. Root notes are highlighted to help guitarists identify key reference points while practicing:

", "content": [{"c": "Each pattern is rendered using the", "t": "text"}, {"c": "PentatonicPattern", "t": "code-inline"}, {"c": "component, which creates an interactive fretboard visualization for a specific position. The component takes a pattern index and scale type as props, calculates the note positions using", "t": "text"}, {"c": "getPentatonicPattern", "t": "code-inline"}, {"c": ", and renders them on a fretboard. Root notes are highlighted to help guitarists identify key reference points while practicing:\n", "t": "text"}]}, {"type": "code", "raw_content": "import { IndexProp } from \"@lib/ui/props\"\nimport { useScale } from \"../state/scale\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { stringsCount, tuning } from \"../../guitar/config\"\nimport { Fretboard } from \"../../guitar/fretboard/Fretboard\"\nimport { Note } from \"../../guitar/fretboard/Note\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { Text } from \"@lib/ui/text\"\nimport { getNoteFromPosition } from \"@product/core/note/getNoteFromPosition\"\nimport { getPentatonicPattern } from \"./getPentatonicPattern\"\n\nexport const PentatonicPattern = ({\n index: patternIndex,\n scale,\n}: IndexProp & { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const notes = getPentatonicPattern({\n index: patternIndex,\n scale,\n rootNote,\n stringsCount,\n tuning,\n })\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Pattern #${patternIndex + 1}`\n\n return (\n <VStack gap={40}>\n <Text centerHorizontally color=\"contrast\" as=\"h3\" weight=\"700\" size={18}>\n {title}\n </Text>\n <Fretboard>\n {notes.map((position) => {\n const note = getNoteFromPosition({ tuning, position })\n\n return (\n <Note\n key={`${position.string}-${position.fret}`}\n {...position}\n kind={rootNote === note ? \"primary\" : \"regular\"}\n />\n )\n })}\n </Fretboard>\n </VStack>\n )\n}\n", "inline": false, "content": {"code_content": "import { IndexProp } from \"@lib/ui/props\"\nimport { useScale } from \"../state/scale\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { stringsCount, tuning } from \"../../guitar/config\"\nimport { Fretboard } from \"../../guitar/fretboard/Fretboard\"\nimport { Note } from \"../../guitar/fretboard/Note\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { Text } from \"@lib/ui/text\"\nimport { getNoteFromPosition } from \"@product/core/note/getNoteFromPosition\"\nimport { getPentatonicPattern } from \"./getPentatonicPattern\"\n\nexport const PentatonicPattern = ({\n index: patternIndex,\n scale,\n}: IndexProp & { scale: PentatonicScale }) => {\n const { rootNote } = useScale()\n\n const notes = getPentatonicPattern({\n index: patternIndex,\n scale,\n rootNote,\n stringsCount,\n tuning,\n })\n\n const noteName = chromaticNotesNames[rootNote]\n const scaleName = scaleNames[scale]\n\n const title = `${noteName} ${scaleName} Pentatonic Pattern #${patternIndex + 1}`\n\n return (\n \n \n {title}\n \n \n {notes.map((position) => {\n const note = getNoteFromPosition({ tuning, position })\n\n return (\n \n )\n })}\n \n \n )\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Fretboard Position System\n

", "content": {"title_content": "Fretboard Position System", "level": "2"}}, {"type": "paragraph", "raw_content": "

To reference a note's position on the fretboard, we need two pieces of information: the string number (zero-based, from top to bottom) and the fret number (where -1 represents an open string, and 0 represents the first fret):

", "content": [{"c": "To reference a note's position on the fretboard, we need two pieces of information: the string number (zero-based, from top to bottom) and the fret number (where -1 represents an open string, and 0 represents the first fret):\n", "t": "text"}]}, {"type": "code", "raw_content": "export type NotePosition = {\n // 0-based index of the string\n string: number\n // -1 if the note is open\n // 0 if the note is on the 1st fret\n fret: number\n}\n", "inline": false, "content": {"code_content": "export type NotePosition = {\n // 0-based index of the string\n string: number\n // -1 if the note is open\n // 0 if the note is on the 1st fret\n fret: number\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Pattern Generation Algorithm\n

", "content": {"title_content": "Pattern Generation Algorithm", "level": "2"}}, {"type": "paragraph", "raw_content": "

The getPentatonicPattern function builds each scale shape using a systematic approach. First, it determines the starting note by adding up the scale intervals based on the pattern index. Then, it follows a specific traversal strategy: starting from the lowest string (6th), it places two notes per string, working its way up to the highest string (1st). For each new note, it calculates the fret position by either using the first note of the pattern or by adding the appropriate interval to the previous note's position. When moving to a new string, the algorithm applies a shift of 4 or 5 frets (depending on the string) to maintain the pattern's shape:

", "content": [{"c": "The", "t": "text"}, {"c": "getPentatonicPattern", "t": "code-inline"}, {"c": "function builds each scale shape using a systematic approach. First, it determines the starting note by adding up the scale intervals based on the pattern index. Then, it follows a specific traversal strategy: starting from the lowest string (6th), it places two notes per string, working its way up to the highest string (1st). For each new note, it calculates the fret position by either using the first note of the pattern or by adding the appropriate interval to the previous note's position. When moving to a new string, the algorithm applies a shift of 4 or 5 frets (depending on the string) to maintain the pattern's shape:\n", "t": "text"}]}, {"type": "code", "raw_content": "import { scalePatterns } from \"@product/core/scale\"\nimport { sum } from \"@lib/utils/array/sum\"\nimport { match } from \"@lib/utils/match\"\nimport { getRelativePentatonic } from \"@product/core/scale/pentatonic/getRelativePentatonic\"\nimport { PentatonicScale } from \"@product/core/scale\"\nimport { getLastItem } from \"@lib/utils/array/getLastItem\"\nimport { range } from \"@lib/utils/array/range\"\nimport { getNoteFret } from \"@product/core/guitar/getNoteFret\"\nimport { chromaticNotesNumber } from \"@product/core/note\"\nimport { NotePosition } from \"@product/core/note/NotePosition\"\n\ntype Input = {\n index: number\n scale: PentatonicScale\n rootNote: number\n stringsCount: number\n tuning: number[]\n}\n\nexport const getPentatonicPattern = ({\n index,\n scale,\n rootNote,\n stringsCount,\n tuning,\n}: Input) => {\n const pattern = scalePatterns[\"minor-pentatonic\"]\n\n const minorRootNote = match(scale, {\n \"minor-pentatonic\": () => rootNote,\n \"major-pentatonic\": () =>\n getRelativePentatonic({ scale, rootNote }).rootNote,\n })\n\n const firstNote =\n (minorRootNote + sum(pattern.slice(0, index))) % chromaticNotesNumber\n\n const result: NotePosition[] = []\n\n range(stringsCount * 2).forEach((index) => {\n const string = stringsCount - Math.floor(index / 2) - 1\n\n const openNote = tuning[string]\n\n const previousPosition = getLastItem(result)\n\n const getFret = () => {\n if (!previousPosition) {\n return getNoteFret({ openNote, note: firstNote })\n }\n\n const step = pattern[(index + index - 1) % pattern.length]\n\n const fret = previousPosition.fret + step\n\n if (index % 2 === 0) {\n const shift = string === 1 ? 4 : 5\n\n return fret - shift\n }\n\n return fret\n }\n\n result.push({\n string,\n fret: getFret(),\n })\n })\n\n if (result.some((position) => position.fret < -1)) {\n return result.map((position) => ({\n ...position,\n fret: position.fret + chromaticNotesNumber,\n }))\n }\n\n return result\n}\n", "inline": false, "content": {"code_content": "import { scalePatterns } from \"@product/core/scale\"\nimport { sum } from \"@lib/utils/array/sum\"\nimport { match } from \"@lib/utils/match\"\nimport { getRelativePentatonic } from \"@product/core/scale/pentatonic/getRelativePentatonic\"\nimport { PentatonicScale } from \"@product/core/scale\"\nimport { getLastItem } from \"@lib/utils/array/getLastItem\"\nimport { range } from \"@lib/utils/array/range\"\nimport { getNoteFret } from \"@product/core/guitar/getNoteFret\"\nimport { chromaticNotesNumber } from \"@product/core/note\"\nimport { NotePosition } from \"@product/core/note/NotePosition\"\n\ntype Input = {\n index: number\n scale: PentatonicScale\n rootNote: number\n stringsCount: number\n tuning: number[]\n}\n\nexport const getPentatonicPattern = ({\n index,\n scale,\n rootNote,\n stringsCount,\n tuning,\n}: Input) => {\n const pattern = scalePatterns[\"minor-pentatonic\"]\n\n const minorRootNote = match(scale, {\n \"minor-pentatonic\": () => rootNote,\n \"major-pentatonic\": () =>\n getRelativePentatonic({ scale, rootNote }).rootNote,\n })\n\n const firstNote =\n (minorRootNote + sum(pattern.slice(0, index))) % chromaticNotesNumber\n\n const result: NotePosition[] = []\n\n range(stringsCount * 2).forEach((index) => {\n const string = stringsCount - Math.floor(index / 2) - 1\n\n const openNote = tuning[string]\n\n const previousPosition = getLastItem(result)\n\n const getFret = () => {\n if (!previousPosition) {\n return getNoteFret({ openNote, note: firstNote })\n }\n\n const step = pattern[(index + index - 1) % pattern.length]\n\n const fret = previousPosition.fret + step\n\n if (index % 2 === 0) {\n const shift = string === 1 ? 4 : 5\n\n return fret - shift\n }\n\n return fret\n }\n\n result.push({\n string,\n fret: getFret(),\n })\n })\n\n if (result.some((position) => position.fret < -1)) {\n return result.map((position) => ({\n ...position,\n fret: position.fret + chromaticNotesNumber,\n }))\n }\n\n return result\n}", "by": "tag_pre_code"}}, {"type": "image", "raw_content": "Enter fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAMklEQVQ4jWNgGHGAEYn9nwg12ACKPiaKnEOETbhcSTSgugsHv4GjYKSB0ZxCHqB6eQgAWBUIC4Akc0gAAAAASUVORK5CYII=", "alt": null, "title": null, "caption": null}}, {"type": "image", "raw_content": "Exit fullscreen mode", "content": {"url": null, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAQ0lEQVQ4jWNgGAVI4D8Uk6SOidquGPwGsiCxiQkvfOA/AwMNXDgKRgJgRGLjSoeMOMSx6qNpTkF3Cak5h5GBYSgUDgB4OQkSobdiFwAAAABJRU5ErkJggg==", "alt": null, "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Handling Edge Cases\n

", "content": {"title_content": "Handling Edge Cases", "level": "2"}}, {"type": "paragraph", "raw_content": "

Sometimes, our pattern calculation might result in negative fret positions (less than -1), which aren't playable on a guitar. In such cases, we shift the entire pattern up by an octave (12 frets) to keep it in a playable range. For example, in the G Minor pentatonic pattern shown below, we move all notes 12 frets higher to maintain the same pattern shape in a more practical position:

", "content": [{"c": "Sometimes, our pattern calculation might result in negative fret positions (less than -1), which aren't playable on a guitar. In such cases, we shift the entire pattern up by an octave (12 frets) to keep it in a playable range. For example, in the G Minor pentatonic pattern shown below, we move all notes 12 frets higher to maintain the same pattern shape in a more practical position:", "t": "text"}]}, {"type": "image", "raw_content": "\"Moving", "content": {"url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w0q8lj8oholwy4rsqg8.jpeg", "data": null, "alt": "Moving Pattern an octave higher", "title": null, "caption": null}}, {"type": "title", "raw_content": "

\n Conclusion\n

", "content": {"title_content": "Conclusion", "level": "2"}}, {"type": "paragraph", "raw_content": "

With these components and algorithms in place, we've created an interactive learning tool that helps guitarists visualize and practice pentatonic scales across the fretboard. The application handles the complexities of musical theory and fretboard geometry, allowing players to focus on mastering these essential patterns in any key they choose.

", "content": [{"c": "With these components and algorithms in place, we've created an interactive learning tool that helps guitarists visualize and practice pentatonic scales across the fretboard. The application handles the complexities of musical theory and fretboard geometry, allowing players to focus on mastering these essential patterns in any key they choose.", "t": "text"}]}]], "html": "\n\n\n \n \n Building a React Guitar Scale Visualizer: Interactive Pentatonic Patterns - DEV Community\n \n \n \n \n \n\n\n\n \n\n\n\n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n\n\n\n
\n \n
\n
\n \n
\n
\n\n
\n \n Skip to content\n
\n \n \n \n \n \"DEV\n\n\n\n \n\n
\n \n
\n
\n
\n\n
\n
\n
\n

DEV Community

\n\n \n
\n\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n \n\n \n
\n \n\n
\n
\n\n\n
\n
\n \n \n \n\n
\n
\n
\n
\n
\n \"Radzion\n
\n
\n Radzion Chachura\n \n

\n Posted on \n\n\n • Originally published at radzion.com \n

\n
\n
\n
\n\n
\n \n \n  \n \n \n \n  \n \n \n \n  \n \n \n \n  \n \n \n \n  \n \n
\n\n\n

\n Building a React Guitar Scale Visualizer: Interactive Pentatonic Patterns\n

\n \n \n
\n
\n\n
\n\n
\n

\n

\n\n

\ud83d\udc19 GitHub | \ud83c\udfae Demo

\n\n

Discover how to build an interactive guitar fretboard that visualizes Major and Minor pentatonic scales using React and TypeScript. This step-by-step guide will walk you through creating an intuitive widget that helps guitarists learn and practice these essential scales. You can explore the live demo at pentafret.com or dive into the complete source code on GitHub.

\n\n

\"5

\n\n

\n \n \n Project Overview\n

\n\n

Our application allows users to explore guitar scales interactively by selecting a root note and scale type. The app then visualizes the corresponding notes across 15 frets on the fretboard. For a detailed walkthrough of the app's foundation and the core fretboard rendering implementation, check out this post where we cover those topics in depth.

\n\n

\"Select

\n\n

\n \n \n Understanding Pentatonic Scale Patterns\n

\n\n

One of the most powerful aspects of pentatonic scales is their symmetrical nature - the pattern remains identical for both Major and Minor scales, with only the root note position shifting. For example, compare the G Major pentatonic with the E Minor pentatonic scales - you'll notice the same finger patterns, just starting from different positions. This means that once you master the 5 basic pentatonic patterns, you can apply them to both Major and Minor scales by simply moving the patterns to different positions on the fretboard. This versatility makes pentatonic scales an incredibly efficient learning tool for guitarists, as the same finger patterns can be used to play in any key, Major or Minor.

\n\n

\"G

\n\n

\n \n \n Implementing Scale Pattern Relationships\n

\n\n

To enhance the learning experience, we want to highlight the relationship between Major and Minor pentatonic scales that share the same pattern. When a user selects either a Major or Minor pentatonic scale, we display a clickable subtitle that shows its relative counterpart (e.g., \"same pattern as E Minor pentatonic\" for G Major pentatonic). Clicking this subtitle instantly switches to the related scale, allowing users to visually understand how the same pattern can be used for both scales.
\n

\n\n
\n
import { UnstyledButton } from \"@lib/ui/buttons/UnstyledButton\"\nimport { useChangeScale, useScale } from \"./state/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport styled from \"styled-components\"\nimport { getColor } from \"@lib/ui/theme/getters\"\nimport { getRelativePentatonic } from \"@product/core/scale/getRelativePentatonic\"\n\nconst Button = styled(UnstyledButton)`\n  &:hover {\n    color: ${getColor(\"textPrimary\")};\n  }\n`\n\nexport const PentatonicSubtitle = ({ scale }: { scale: PentatonicScale }) => {\n  const { rootNote } = useScale()\n\n  const changeScale = useChangeScale()\n\n  const relativePentatonic = getRelativePentatonic({\n    scale,\n    rootNote,\n  })\n\n  return (\n    <Button onClick={() => changeScale(relativePentatonic)}>\n      (same pattern as {chromaticNotesNames[relativePentatonic.rootNote]}{\" \"}\n      {scaleNames[relativePentatonic.scale]} pentatonic)\n    </Button>\n  )\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Calculating Relative Scales\n

\n\n

The getRelativePentatonic function is the core calculation engine behind this feature. For any given scale, it determines its relative counterpart by shifting the root note by three semitones - up when converting from Minor and down for Major. For instance, this is how we determine that G Major and E Minor share the same pattern.
\n

\n\n
\n
import { match } from \"@lib/utils/match\"\nimport { chromaticNotesNumber } from \"../note\"\nimport { getPairComplement } from \"@lib/utils/pair/getPairComplement\"\nimport { scalePatterns, pentatonicScales, PentatonicScale } from \"./index\"\n\ntype Pentatonic = {\n  scale: PentatonicScale\n  rootNote: number\n}\n\nexport const getRelativePentatonic = ({\n  scale,\n  rootNote,\n}: Pentatonic): Pentatonic => {\n  const [semitones] = scalePatterns[\"minor-pentatonic\"]\n  const direction = match(scale, {\n    \"minor-pentatonic\": () => 1,\n    \"major-pentatonic\": () => -1,\n  })\n\n  const relativeNote =\n    (rootNote + semitones * direction + chromaticNotesNumber) %\n    chromaticNotesNumber\n\n  const relativeScale = getPairComplement(pentatonicScales, scale)\n\n  return {\n    scale: relativeScale,\n    rootNote: relativeNote,\n  }\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Musical Note Representation\n

\n\n

In our application, we represent musical notes using a zero-based numbering system. Each note is assigned a number from 0 to 11, where A is 0, A# (or Bb) is 1, B is 2, C is 3, and so forth.
\n

\n\n
\n
import { scalePatterns } from \"../scale\"\n\nexport const naturalNotesNames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n\nexport const chromaticNotesNames = scalePatterns.minor.reduce(\n  (acc, step, index) => {\n    const note = naturalNotesNames[index]\n\n    acc.push(note)\n\n    if (step === 2) {\n      acc.push(`${note}#`)\n    }\n\n    return acc\n  },\n  [] as string[],\n)\n\nexport const chromaticNotesNumber = chromaticNotesNames.length\n\nexport const isNaturalNote = (note: number) =>\n  chromaticNotesNames[note].length === 1\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Visualizing Scale Patterns\n

\n\n

To present the scale patterns in an organized and visually appealing way, we create a PentatonicPatterns component. This component displays a collection of essential scale shapes, each representing a different position on the fretboard. It shows a title with the current scale name (e.g., \"G Major Pentatonic Patterns\") and renders multiple PentatonicPattern components, one for each shape in the selected scale:
\n

\n\n
\n
import { range } from \"@lib/utils/array/range\"\nimport { scaleNames, PentatonicScale, scalePatterns } from \"@product/core/scale\"\nimport { Text } from \"@lib/ui/text\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { useScale } from \"../state/scale\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { PentatonicPattern } from \"./PentatonicPattern\"\n\nexport const PentatonicPatterns = ({ scale }: { scale: PentatonicScale }) => {\n  const { rootNote } = useScale()\n\n  const noteName = chromaticNotesNames[rootNote]\n  const scaleName = scaleNames[scale]\n\n  const title = `${noteName} ${scaleName} Pentatonic Patterns`\n\n  return (\n    <VStack gap={60}>\n      <VStack gap={8}>\n        <Text\n          centerHorizontally\n          weight={800}\n          size={32}\n          color=\"contrast\"\n          as=\"h2\"\n        >\n          {title}\n        </Text>\n        <Text\n          centerHorizontally\n          weight={700}\n          size={20}\n          color=\"supporting\"\n          as=\"h4\"\n        >\n          {scalePatterns[scale].length} Essential Shapes for Guitar Solos\n        </Text>\n      </VStack>\n      {range(scalePatterns[scale].length).map((index) => (\n        <PentatonicPattern key={index} index={index} scale={scale} />\n      ))}\n    </VStack>\n  )\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Rendering Individual Patterns\n

\n\n

Each pattern is rendered using the PentatonicPattern component, which creates an interactive fretboard visualization for a specific position. The component takes a pattern index and scale type as props, calculates the note positions using getPentatonicPattern, and renders them on a fretboard. Root notes are highlighted to help guitarists identify key reference points while practicing:
\n

\n\n
\n
import { IndexProp } from \"@lib/ui/props\"\nimport { useScale } from \"../state/scale\"\nimport { PentatonicScale, scaleNames } from \"@product/core/scale\"\nimport { chromaticNotesNames } from \"@product/core/note\"\nimport { stringsCount, tuning } from \"../../guitar/config\"\nimport { Fretboard } from \"../../guitar/fretboard/Fretboard\"\nimport { Note } from \"../../guitar/fretboard/Note\"\nimport { VStack } from \"@lib/ui/css/stack\"\nimport { Text } from \"@lib/ui/text\"\nimport { getNoteFromPosition } from \"@product/core/note/getNoteFromPosition\"\nimport { getPentatonicPattern } from \"./getPentatonicPattern\"\n\nexport const PentatonicPattern = ({\n  index: patternIndex,\n  scale,\n}: IndexProp & { scale: PentatonicScale }) => {\n  const { rootNote } = useScale()\n\n  const notes = getPentatonicPattern({\n    index: patternIndex,\n    scale,\n    rootNote,\n    stringsCount,\n    tuning,\n  })\n\n  const noteName = chromaticNotesNames[rootNote]\n  const scaleName = scaleNames[scale]\n\n  const title = `${noteName} ${scaleName} Pentatonic Pattern #${patternIndex + 1}`\n\n  return (\n    <VStack gap={40}>\n      <Text centerHorizontally color=\"contrast\" as=\"h3\" weight=\"700\" size={18}>\n        {title}\n      </Text>\n      <Fretboard>\n        {notes.map((position) => {\n          const note = getNoteFromPosition({ tuning, position })\n\n          return (\n            <Note\n              key={`${position.string}-${position.fret}`}\n              {...position}\n              kind={rootNote === note ? \"primary\" : \"regular\"}\n            />\n          )\n        })}\n      </Fretboard>\n    </VStack>\n  )\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Fretboard Position System\n

\n\n

To reference a note's position on the fretboard, we need two pieces of information: the string number (zero-based, from top to bottom) and the fret number (where -1 represents an open string, and 0 represents the first fret):
\n

\n\n
\n
export type NotePosition = {\n  // 0-based index of the string\n  string: number\n  // -1 if the note is open\n  // 0 if the note is on the 1st fret\n  fret: number\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Pattern Generation Algorithm\n

\n\n

The getPentatonicPattern function builds each scale shape using a systematic approach. First, it determines the starting note by adding up the scale intervals based on the pattern index. Then, it follows a specific traversal strategy: starting from the lowest string (6th), it places two notes per string, working its way up to the highest string (1st). For each new note, it calculates the fret position by either using the first note of the pattern or by adding the appropriate interval to the previous note's position. When moving to a new string, the algorithm applies a shift of 4 or 5 frets (depending on the string) to maintain the pattern's shape:
\n

\n\n
\n
import { scalePatterns } from \"@product/core/scale\"\nimport { sum } from \"@lib/utils/array/sum\"\nimport { match } from \"@lib/utils/match\"\nimport { getRelativePentatonic } from \"@product/core/scale/pentatonic/getRelativePentatonic\"\nimport { PentatonicScale } from \"@product/core/scale\"\nimport { getLastItem } from \"@lib/utils/array/getLastItem\"\nimport { range } from \"@lib/utils/array/range\"\nimport { getNoteFret } from \"@product/core/guitar/getNoteFret\"\nimport { chromaticNotesNumber } from \"@product/core/note\"\nimport { NotePosition } from \"@product/core/note/NotePosition\"\n\ntype Input = {\n  index: number\n  scale: PentatonicScale\n  rootNote: number\n  stringsCount: number\n  tuning: number[]\n}\n\nexport const getPentatonicPattern = ({\n  index,\n  scale,\n  rootNote,\n  stringsCount,\n  tuning,\n}: Input) => {\n  const pattern = scalePatterns[\"minor-pentatonic\"]\n\n  const minorRootNote = match(scale, {\n    \"minor-pentatonic\": () => rootNote,\n    \"major-pentatonic\": () =>\n      getRelativePentatonic({ scale, rootNote }).rootNote,\n  })\n\n  const firstNote =\n    (minorRootNote + sum(pattern.slice(0, index))) % chromaticNotesNumber\n\n  const result: NotePosition[] = []\n\n  range(stringsCount * 2).forEach((index) => {\n    const string = stringsCount - Math.floor(index / 2) - 1\n\n    const openNote = tuning[string]\n\n    const previousPosition = getLastItem(result)\n\n    const getFret = () => {\n      if (!previousPosition) {\n        return getNoteFret({ openNote, note: firstNote })\n      }\n\n      const step = pattern[(index + index - 1) % pattern.length]\n\n      const fret = previousPosition.fret + step\n\n      if (index % 2 === 0) {\n        const shift = string === 1 ? 4 : 5\n\n        return fret - shift\n      }\n\n      return fret\n    }\n\n    result.push({\n      string,\n      fret: getFret(),\n    })\n  })\n\n  if (result.some((position) => position.fret < -1)) {\n    return result.map((position) => ({\n      ...position,\n      fret: position.fret + chromaticNotesNumber,\n    }))\n  }\n\n  return result\n}\n
\n
\n
\n Enter fullscreen mode\n \n\n\n Exit fullscreen mode\n \n\n\n
\n
\n
\n\n\n\n

\n \n \n Handling Edge Cases\n

\n\n

Sometimes, our pattern calculation might result in negative fret positions (less than -1), which aren't playable on a guitar. In such cases, we shift the entire pattern up by an octave (12 frets) to keep it in a playable range. For example, in the G Minor pentatonic pattern shown below, we move all notes 12 frets higher to maintain the same pattern shape in a more practical position:

\n\n

\"Moving

\n\n

\n \n \n Conclusion\n

\n\n

With these components and algorithms in place, we've created an interactive learning tool that helps guitarists visualize and practice pentatonic scales across the fretboard. The application handles the complexities of musical theory and fretboard geometry, allowing players to focus on mastering these essential patterns in any key they choose.

\n\n\n
\n\n
\n
\n
\n
\n
\n

\n Top comments (9)\n

\n
\n\n\n
\n
\n Subscribe\n
\n
\n
\n
\n \n\n
\n\n\n
\n\n \n\n \n \n \n\n \n \"pic\"\n \n
\n
\n \n\n
\n\n
\n
\n \n \n
\n\n
\n
\n
\n
\n\n \n Create template\n \n

Templates let you quickly answer FAQs or store snippets for re-use.

\n
\n\n
\n\n
\n \n \n Dismiss\n
\n
\n\n
\n
\n\n\n
\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"highcenburg\n \n\n\n
\n
\n \n\n\n
\n \n Vicente G. Reyes\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

I'm on B Standard/Drop A on my 6 string guitar. Would love to have an option to choose a tuning to show all notes of the fretboard \ud83d\ude2c

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 2\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n
\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"radzion\n \n\n\n
\n
\n \n\n\n
\n \n Radzion Chachura\n \n \n \n\n\n \n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Hello! I've noted your request and added the tuning customization to the backlog. :)

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 2\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n
\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"highcenburg\n \n\n\n
\n
\n \n\n\n
\n \n Vicente G. Reyes\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Can't wait!

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 1\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n
\n\n\n
\n \n\n\n
\n \n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"dan_campbell_8a72ca0ca1d2\n \n\n\n
\n
\n \n\n\n
\n \n Dan Campbell\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Look at songperformer.net in the theory section, it has lots of different tunings, even a sequencer, you can also overlay scales/modes/chord tones across the fretboard, it's free to use, I wrote it.

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 3\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"highcenburg\n \n\n\n
\n
\n \n\n\n
\n \n Vicente G. Reyes\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Interesting. I'll take a look at this

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 1\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n\n\n \n
\n\n\n \n
\n\n\n \n \n\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"dan_campbell_8a72ca0ca1d2\n \n\n\n
\n
\n \n\n\n
\n \n Dan Campbell\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

There are quite a few fretboard visualisers out there, I wrote the one in songperformer.net, using JavaScript, no frameworks. For fun you should add audio, colour coding, left and right handed, allow selection of number of frets, different tunings and instruments, show on keyboards at the same time and allow multiple scales/ modes to overlay, circle of fifths and AI integration for music theory help. I did this embedded in a WASM app so no server trips required. Use SVG, then you will have scalable graphics too.
\n\"Image

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 3\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n\n\n \n
\n\n
\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"coolerhansen\n \n\n\n
\n
\n \n\n\n
\n \n CoolerHansen\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

FINALLY, something actually interesting on here instead of obvious noobs posting their ChatGPT-generated tutorials. Kudos!

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 3\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"radzion\n \n\n\n
\n
\n \n\n\n
\n \n Radzion Chachura\n \n \n \n\n\n \n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Thanks!

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 1\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n\n\n \n
\n\n\n \n
\n\n
\n \n \n Collapse\n \n\n\n Expand\n \n\n\n \n \n \n \n  \n \n
\n \n \"rakannimer\n \n\n\n
\n
\n \n\n\n
\n \n Rakan Nimer\n \n \n\n \n\n\n \n\n\n\n\n
\n \n
\n
    \n
  • Copy link
  • \n
  • \n
  • \n \n Hide\n \n
  • \n \n \n
  • \n
\n
\n
\n
\n\n\n \n

Very cool!

\n\n\n
\n\n
\n\n \n\n
\n \n Like comment: \n\n Like comment: \n \n\n\n 2\n \n Like\n \n \n\n \n Comment button\n\n Reply\n \n\n
\n\n
\n\n\n\n \n
\n\n\n \n \n\n
\n\n\n \n\n
\n\n \n
\n
\n
\n

\n Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.\n

\n \n

\n \n

\n
\n

For further actions, you may consider blocking this person and/or reporting abuse

\n
\n\n\n\n \n\n
\n
\n
\n\n
\n

Read next

\n \n
\n \n \"rimi_jalil2002\n \n
\n

Can English Replace Java? The Future of Programming in Plain Language

\n

\n Rimsha Jalil - \n

\n
\n
\n
\n \n
\n \n \"abhay_yt_52a8e72b213be229\n \n
\n

Comprehensive Guide to MongoDB Installation and Configuration

\n

\n Abhay Singh Kathayat - \n

\n
\n
\n
\n \n
\n \n \"abhay_yt_52a8e72b213be229\n \n
\n

Exploring the mongo Shell: A Command-Line Interface for MongoDB

\n

\n Abhay Singh Kathayat - \n

\n
\n
\n
\n \n
\n \n \"kafeel_ahmad\n \n
\n

JavaScript Best Practices

\n

\n Kafeel Ahmad (kaf shekh) - \n

\n
\n
\n
\n
\n\n \n \n\n \n\n\n \n\n\n
\n
\n\n
\n\n\n\n\n\n\n
\n\n\n
\n \n\n \n\n\n
\n\n
\n
\n
\n \"DEV\n
\n
\n

\n We're a place where coders share, stay up-to-date and grow their careers.\n

\n
\n \n
\n
\n\n\n\n
\n
\n
\n \n \n \n \n \n
\n\n \n\n \n \n \n", "statics": {"paragraph": 13, "paragraph.text": 19, "image": 18, "title": 11, "code": 7, "paragraph.code-inline": 6}} diff --git a/bench/data/groundtruth/code_5.jsonl b/bench/data/groundtruth/code_5.jsonl index 3b75b31d..cbcec0cf 100644 --- a/bench/data/groundtruth/code_5.jsonl +++ b/bench/data/groundtruth/code_5.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

XmlSuiteResultFormatter

", "content": {"title_content": "XmlSuiteResultFormatter", "level": "1"}}, {"type": "code", "raw_content": "

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

", "inline": false, "content": {"code_content": " public class XmlSuiteResultFormatter\n extends Object implements IFormatterGenerator", "by": "tag_code"}}, {"type": "table", "raw_content": "
java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n
", "content": {"html": "
java.lang.Object \u4e2d
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter
", "is_complex": true}}, {"type": "paragraph", "raw_content": "

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

", "content": [{"c": "\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002", "t": "text"}]}, {"type": "title", "raw_content": "

\u6458\u8981

", "content": {"title_content": "\u6458\u8981", "level": "2"}}, {"type": "table", "raw_content": "

\u5d4c\u5957\u7c7b

classXmlSuiteResultFormatter.RunHistory

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

", "content": {"html": "
\u5d4c\u5957\u7c7b
classXmlSuiteResultFormatter.RunHistory<br>\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002
", "is_complex": false}}, {"type": "table", "raw_content": "

\u5b57\u6bb5

public static final StringNS

public static final StringTEST_RESULT_FILE_NAME

", "content": {"html": "
\u5b57\u6bb5
public static final StringNS
public static final StringTEST_RESULT_FILE_NAME
", "is_complex": false}}, {"type": "table", "raw_content": "

\u516c\u5171\u6784\u9020\u51fd\u6570

XmlSuiteResultFormatter()
", "content": {"html": "
\u516c\u5171\u6784\u9020\u51fd\u6570
XmlSuiteResultFormatter()
", "is_complex": false}}, {"type": "table", "raw_content": "

\u516c\u5171\u65b9\u6cd5

void addBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

void addSuiteAttributes(XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

void parseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

SuiteResultHolder parseResults(File resultDir, boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

void parseSuiteAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

static String sanitizeXmlContent(String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

static String truncateStackTrace(String fullStackTrace, String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

File writeResults(SuiteResultHolder holder, File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

", "content": {"html": "
\u516c\u5171\u65b9\u6cd5
voidaddBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)<br>\u5141\u8bb8\u901a\u8fc7<br>serializer.attribute<br>\u5411<br>\u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002
voidaddSuiteAttributes(XmlSerializer serializer)<br>\u5141\u8bb8\u901a\u8fc7<br>serializer.attribute<br>\u5411<br>\u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002
voidparseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)<br>\u4ece<br>addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)<br>\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002
SuiteResultHolderparseResults(File resultDir, boolean shallow)<br>\u5bf9<br>writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)<br>\u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa<br>SuiteResultHolder<br>\u3002
voidparseSuiteAttributes(XmlPullParser parser, IInvocationContext context)<br>\u4ece<br>addSuiteAttributes(org.xmlpull.v1.XmlSerializer)<br>\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002
static StringsanitizeXmlContent(String s)<br>\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002
static StringtruncateStackTrace(String fullStackTrace, String testCaseName)<br>\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b<br>ERROR(/STACK_TRACE_MAX_SIZE)<br>\u4e2a\u5b57\u7b26\u3002
FilewriteResults(SuiteResultHolder holder, File resultDir)<br>\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

\u5b57\u6bb5

", "content": {"title_content": "\u5b57\u6bb5", "level": "2"}}, {"type": "title", "raw_content": "

\u5317\u7f8e\u6d32

", "content": {"title_content": "\u5317\u7f8e\u6d32", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static final String NS
", "inline": false, "content": {"code_content": "public static final String NS", "by": "tag_pre"}}, {"type": "title", "raw_content": "

TEST_RESULTS_FILE_NAME

", "content": {"title_content": "TEST_RESULTS_FILE_NAME", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static final String TEST_RESULT_FILE_NAME
", "inline": false, "content": {"code_content": "public static final String TEST_RESULT_FILE_NAME", "by": "tag_pre"}}, {"type": "title", "raw_content": "

\u516c\u5171\u6784\u9020\u51fd\u6570

", "content": {"title_content": "\u516c\u5171\u6784\u9020\u51fd\u6570", "level": "2"}}, {"type": "title", "raw_content": "

XmlSuiteResultFormatter

", "content": {"title_content": "XmlSuiteResultFormatter", "level": "3"}}, {"type": "code", "raw_content": "
\npublic XmlSuiteResultFormatter ()
", "inline": false, "content": {"code_content": "public XmlSuiteResultFormatter ()", "by": "tag_pre"}}, {"type": "title", "raw_content": "

\u516c\u5171\u65b9\u6cd5

", "content": {"title_content": "\u516c\u5171\u65b9\u6cd5", "level": "2"}}, {"type": "title", "raw_content": "

addBuildInfoAttributes

", "content": {"title_content": "addBuildInfoAttributes", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)
", "inline": false, "content": {"code_content": "public void addBuildInfoAttributes (XmlSerializer serializer,\n SuiteResultHolder holder)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

", "content": [{"c": "\u5141\u8bb8\u901a\u8fc7", "t": "text"}, {"c": "serializer.attribute", "t": "code-inline"}, {"c": "\u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
holderSuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002
", "content": {"html": "
\u53c2\u6570
serializerXmlSerializer<br>\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
holderSuiteResultHolder<br>\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

", "content": {"title_content": "\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void addSuiteAttributes (XmlSerializer serializer)
", "inline": false, "content": {"code_content": "public void addSuiteAttributes (XmlSerializer serializer)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

", "content": [{"c": "\u5141\u8bb8\u901a\u8fc7", "t": "text"}, {"c": "serializer.attribute", "t": "code-inline"}, {"c": "\u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
", "content": {"html": "
\u53c2\u6570
serializerXmlSerializer<br>\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

parseBuildInfoAttributes

", "content": {"title_content": "parseBuildInfoAttributes", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)
", "inline": false, "content": {"code_content": "public void parseBuildInfoAttributes (XmlPullParser parser,\n IInvocationContext context)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

", "content": [{"c": "\u4ece", "t": "text"}, {"c": "addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)", "t": "code-inline"}, {"c": "\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
", "content": {"html": "
\u53c2\u6570
parserXmlPullParser<br>\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext<br>\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684<br>IInvocationContext<br>\u3002
", "is_complex": false}}, {"type": "table", "raw_content": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "content": {"html": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

parseResults

", "content": {"title_content": "parseResults", "level": "3"}}, {"type": "code", "raw_content": "
\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)
", "inline": false, "content": {"code_content": "public SuiteResultHolder parseResults (File resultDir,\n boolean shallow)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

", "content": [{"c": "\u5bf9", "t": "text"}, {"c": "writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)", "t": "code-inline"}, {"c": "\u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa", "t": "text"}, {"c": "SuiteResultHolder", "t": "code-inline"}, {"c": "\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
resultDirFile\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002
shallowboolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002
", "content": {"html": "
\u53c2\u6570
resultDirFile<br>\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002
shallowboolean<br>\uff1a\u4ec5\u52a0\u8f7d<br>SuiteResultHolder<br>\u7684\u9876\u7ea7\u4fe1\u606f\u3002
", "is_complex": false}}, {"type": "table", "raw_content": "
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002
", "content": {"html": "
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 <br>SuiteResultHolder<br>\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

parseSuite \u5c5e\u6027

", "content": {"title_content": "parseSuite \u5c5e\u6027", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)
", "inline": false, "content": {"code_content": "public void parseSuiteAttributes (XmlPullParser parser,\n IInvocationContext context)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

", "content": [{"c": "\u4ece", "t": "text"}, {"c": "addSuiteAttributes(org.xmlpull.v1.XmlSerializer)", "t": "code-inline"}, {"c": "\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
", "content": {"html": "
\u53c2\u6570
parserXmlPullParser<br>\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext<br>\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684<br>IInvocationContext<br>\u3002
", "is_complex": false}}, {"type": "table", "raw_content": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "content": {"html": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "is_complex": false}}, {"type": "title", "raw_content": "

sanitizeXmlContent

", "content": {"title_content": "sanitizeXmlContent", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static String sanitizeXmlContent (String s)
", "inline": false, "content": {"code_content": "public static String sanitizeXmlContent (String s)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

", "content": [{"c": "\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
sString
", "content": {"html": "
\u53c2\u6570
sString
", "is_complex": false}}, {"type": "table", "raw_content": "
\u8fd4\u56de
String
", "content": {"html": "
\u8fd4\u56de
String
", "is_complex": false}}, {"type": "title", "raw_content": "

truncateStackTrace

", "content": {"title_content": "truncateStackTrace", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)
", "inline": false, "content": {"code_content": "public static String truncateStackTrace (String fullStackTrace,\n String testCaseName)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

", "content": [{"c": "\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b", "t": "text"}, {"c": "ERROR(/STACK_TRACE_MAX_SIZE)", "t": "code-inline"}, {"c": "\u4e2a\u5b57\u7b26\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
fullStackTraceString
testCaseNameString
", "content": {"html": "
\u53c2\u6570
fullStackTraceString
testCaseNameString
", "is_complex": false}}, {"type": "table", "raw_content": "
\u8fd4\u56de
String
", "content": {"html": "
\u8fd4\u56de
String
", "is_complex": false}}, {"type": "title", "raw_content": "

writeResults

", "content": {"title_content": "writeResults", "level": "3"}}, {"type": "code", "raw_content": "
\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)
", "inline": false, "content": {"code_content": "public File writeResults (SuiteResultHolder holder,\n File resultDir)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

", "content": [{"c": "\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
holderSuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f
resultDirFile\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002
", "content": {"html": "
\u53c2\u6570
holderSuiteResultHolder<br>\uff1a\u4e00\u4e2a<br>SuiteResultHolder<br>\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f
resultDirFile<br>\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55<br>ERROR(/File)<br>\u3002
", "is_complex": false}}, {"type": "table", "raw_content": "
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002
", "content": {"html": "
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 <br>ERROR(/File)<br>\u3002
", "is_complex": false}}]], "main_html": "

XmlSuiteResultFormatter

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

\u6458\u8981

\u5d4c\u5957\u7c7b

classXmlSuiteResultFormatter.RunHistory

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

\u5b57\u6bb5

public static final StringNS

public static final StringTEST_RESULT_FILE_NAME

\u516c\u5171\u6784\u9020\u51fd\u6570

XmlSuiteResultFormatter()

\u516c\u5171\u65b9\u6cd5

void addBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

void addSuiteAttributes(XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

void parseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

SuiteResultHolder parseResults(File resultDir, boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

void parseSuiteAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

static String sanitizeXmlContent(String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

static String truncateStackTrace(String fullStackTrace, String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

File writeResults(SuiteResultHolder holder, File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

\u5b57\u6bb5

\u5317\u7f8e\u6d32

\npublic static final String NS

TEST_RESULTS_FILE_NAME

\npublic static final String TEST_RESULT_FILE_NAME

\u516c\u5171\u6784\u9020\u51fd\u6570

XmlSuiteResultFormatter

\npublic XmlSuiteResultFormatter ()

\u516c\u5171\u65b9\u6cd5

addBuildInfoAttributes

\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
holderSuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

\npublic void addSuiteAttributes (XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

parseBuildInfoAttributes

\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002

parseResults

\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

\u53c2\u6570
resultDirFile\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002
shallowboolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002

parseSuite \u5c5e\u6027

\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002

sanitizeXmlContent

\npublic static String sanitizeXmlContent (String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

\u53c2\u6570
sString
\u8fd4\u56de
String

truncateStackTrace

\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

\u53c2\u6570
fullStackTraceString
testCaseNameString
\u8fd4\u56de
String

writeResults

\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

\u53c2\u6570
holderSuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f
resultDirFile\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002
", "statics": {"title": 16, "code": 12, "table": 19, "paragraph": 9, "paragraph.text": 16, "paragraph.code-inline": 7}, "url": "https://source.android.com/reference/tradefed/com/android/tradefed/result/suite/XmlSuiteResultFormatter?hl=zh-cn", "content": "# XmlSuiteResultFormatter\n\n```\n public class XmlSuiteResultFormatter\n extends Object implements IFormatterGenerator\n```\n\n
java.lang.Object \u4e2d
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter
\n\n\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002\n\n## \u6458\u8981\n\n| \u5d4c\u5957\u7c7b | |\n|---|---|\n| class | XmlSuiteResultFormatter.RunHistory
\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002 |\n\n| \u5b57\u6bb5 | |\n|---|---|\n| public static final String | NS |\n| public static final String | TEST_RESULT_FILE_NAME |\n\n| \u516c\u5171\u6784\u9020\u51fd\u6570 |\n|---|\n| XmlSuiteResultFormatter() |\n\n| \u516c\u5171\u65b9\u6cd5 | |\n|---|---|\n| void | addBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)
\u5141\u8bb8\u901a\u8fc7
serializer.attribute
\u5411
\u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002 |\n| void | addSuiteAttributes(XmlSerializer serializer)
\u5141\u8bb8\u901a\u8fc7
serializer.attribute
\u5411
\u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002 |\n| void | parseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)
\u4ece
addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)
\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002 |\n| SuiteResultHolder | parseResults(File resultDir, boolean shallow)
\u5bf9
writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)
\u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa
SuiteResultHolder
\u3002 |\n| void | parseSuiteAttributes(XmlPullParser parser, IInvocationContext context)
\u4ece
addSuiteAttributes(org.xmlpull.v1.XmlSerializer)
\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002 |\n| static String | sanitizeXmlContent(String s)
\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002 |\n| static String | truncateStackTrace(String fullStackTrace, String testCaseName)
\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b
ERROR(/STACK_TRACE_MAX_SIZE)
\u4e2a\u5b57\u7b26\u3002 |\n| File | writeResults(SuiteResultHolder holder, File resultDir)
\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002 |\n\n## \u5b57\u6bb5\n\n### \u5317\u7f8e\u6d32\n\n```\npublic static final String NS\n```\n\n### TEST_RESULTS_FILE_NAME\n\n```\npublic static final String TEST_RESULT_FILE_NAME\n```\n\n## \u516c\u5171\u6784\u9020\u51fd\u6570\n\n### XmlSuiteResultFormatter\n\n```\npublic XmlSuiteResultFormatter ()\n```\n\n## \u516c\u5171\u65b9\u6cd5\n\n### addBuildInfoAttributes\n\n```\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n SuiteResultHolder holder)\n```\n\n\u5141\u8bb8\u901a\u8fc7 `serializer.attribute` \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| serializer | XmlSerializer
\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002 |\n| holder | SuiteResultHolder
\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002 |\n\n### \u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027\n\n```\npublic void addSuiteAttributes (XmlSerializer serializer)\n```\n\n\u5141\u8bb8\u901a\u8fc7 `serializer.attribute` \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| serializer | XmlSerializer
\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002 |\n\n### parseBuildInfoAttributes\n\n```\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n IInvocationContext context)\n```\n\n\u4ece `addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)` \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| parser | XmlPullParser
\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002 |\n| context | IInvocationContext
\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684
IInvocationContext
\u3002 |\n\n| \u629b\u51fa | |\n|---|---|\n| XmlPullParserException | \u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002 |\n\n### parseResults\n\n```\npublic SuiteResultHolder parseResults (File resultDir,\n boolean shallow)\n```\n\n\u5bf9 `writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)` \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa `SuiteResultHolder` \u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| resultDir | File
\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002 |\n| shallow | boolean
\uff1a\u4ec5\u52a0\u8f7d
SuiteResultHolder
\u7684\u9876\u7ea7\u4fe1\u606f\u3002 |\n\n| \u8fd4\u56de | |\n|---|---|\n| SuiteResultHolder | \u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684
SuiteResultHolder
\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002 |\n\n### parseSuite \u5c5e\u6027\n\n```\npublic void parseSuiteAttributes (XmlPullParser parser,\n IInvocationContext context)\n```\n\n\u4ece `addSuiteAttributes(org.xmlpull.v1.XmlSerializer)` \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| parser | XmlPullParser
\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002 |\n| context | IInvocationContext
\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684
IInvocationContext
\u3002 |\n\n| \u629b\u51fa | |\n|---|---|\n| XmlPullParserException | \u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002 |\n\n### sanitizeXmlContent\n\n```\npublic static String sanitizeXmlContent (String s)\n```\n\n\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| s | String |\n\n| \u8fd4\u56de | |\n|---|---|\n| String | |\n\n### truncateStackTrace\n\n```\npublic static String truncateStackTrace (String fullStackTrace,\n String testCaseName)\n```\n\n\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b `ERROR(/STACK_TRACE_MAX_SIZE)` \u4e2a\u5b57\u7b26\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| fullStackTrace | String |\n| testCaseName | String |\n\n| \u8fd4\u56de | |\n|---|---|\n| String | |\n\n### writeResults\n\n```\npublic File writeResults (SuiteResultHolder holder,\n File resultDir)\n```\n\n\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n| \u53c2\u6570 | |\n|---|---|\n| holder | SuiteResultHolder
\uff1a\u4e00\u4e2a
SuiteResultHolder
\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f |\n| resultDir | File
\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55
ERROR(/File)
\u3002 |\n\n| \u8fd4\u56de | |\n|---|---|\n| File | \u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684
ERROR(/File)
\u3002 |\n", "html": "\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n XmlSuiteResultFormatter  |  Android Open Source Project\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n
\n
\n \n
\n\n \n\n \n\n \"Android\n \n\n\n\n\n\n\n\n \n
    \n\n
  • \n\n\n\n\n\n\n
  • \n\n
\n
\n\n
\n
\n
\n\n\n\n \n\n \n\n \n\n\n
\n\n\n
\n
\n \n
\n \n
\n\n
\n
\n /\n
\n
\n
\n
\n \n\n\n
\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n \n Android Code Search\n \n\n\n\n\n\n\n \n\n\n \u767b\u5f55\n\n \n\n\n
\n
\n
\n\n\n\n
\n
\n\n\n\n\n
\n
\n\n
\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\n \n \n \n
\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n\n\n\n
\n
\n
\n \"\"\n \n\n \u6b64\u9875\u9762\u7531 Cloud Translation API \u7ffb\u8bd1\u3002\n \n
\n \n
\n
\n\n\n \n\n\n \n\n\n \n\n \n\n \u4f7f\u7528\u96c6\u5408\u8ba9\u4e00\u5207\u4e95\u4e95\u6709\u6761\n \n \n\n \u6839\u636e\u60a8\u7684\u504f\u597d\u4fdd\u5b58\u5185\u5bb9\u5e76\u5bf9\u5176\u8fdb\u884c\u5206\u7c7b\u3002\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n\n\n\n
\n\n \n\n\n\n\n\n
\n\n\n\n

XmlSuiteResultFormatter

\n

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

\n\n\n \n\n \n \n\n\n \n\n \n\n \n \n\n\n
java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n
\n\n\n\n\n

\n\n\n

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

\n\n\n\n\n\n\n\n\n\n

\u6458\u8981

\n\n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u5d4c\u5957\u7c7b

\n\n\n\n\n class\n XmlSuiteResultFormatter.RunHistory\n

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

\n
\n\n\n\n\n \n \n \n \n\n\n \n \n \n \n\n\n\n

\u5b57\u6bb5

\n public\n static\n final\n String\n NS\n

\n\n\n

\n
\n public\n static\n final\n String\n TEST_RESULT_FILE_NAME\n

\n\n\n

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n \n\n\n\n

\u516c\u5171\u6784\u9020\u51fd\u6570

\n \n XmlSuiteResultFormatter()\n \n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n\n

\u516c\u5171\u65b9\u6cd5

\n\n\n\n\n\n void\n \n \n addBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)\n \n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n addSuiteAttributes(XmlSerializer serializer)\n \n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n parseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)\n \n\n

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

\n\n
\n\n\n\n\n\n SuiteResultHolder\n \n \n parseResults(File resultDir, boolean shallow)\n \n\n

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n parseSuiteAttributes(XmlPullParser parser, IInvocationContext context)\n \n\n

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

\n\n
\n\n\n static\n\n\n String\n \n \n sanitizeXmlContent(String s)\n \n\n

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

\n\n
\n\n\n static\n\n\n String\n \n \n truncateStackTrace(String fullStackTrace, String testCaseName)\n \n\n

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

\n\n
\n\n\n\n\n\n File\n \n \n writeResults(SuiteResultHolder holder, File resultDir)\n \n\n

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u5b57\u6bb5

\n\n\n
\n

\u5317\u7f8e\u6d32

\n
\n\n\n\n\n\n
\n
\npublic static final String NS
\n\n\n\n\n

\n\n\n
\n\n
\n

TEST_RESULTS_FILE_NAME

\n
\n\n\n\n\n\n
\n
\npublic static final String TEST_RESULT_FILE_NAME
\n\n\n\n\n

\n\n\n
\n\n\n\n\n\n\n\n\n

\u516c\u5171\u6784\u9020\u51fd\u6570

\n\n\n
\n

XmlSuiteResultFormatter

\n
\n
\n
\n\n\n\n
\n
\npublic XmlSuiteResultFormatter ()
\n\n\n\n\n

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u516c\u5171\u65b9\u6cd5

\n\n\n
\n

addBuildInfoAttributes

\n
\n
\n
\n\n\n\n
\n
\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)
\n\n\n\n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
serializer\n XmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

holder\n SuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002

\n\n
\n\n
\n

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

\n
\n
\n
\n\n\n\n
\n
\npublic void addSuiteAttributes (XmlSerializer serializer)
\n\n\n\n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\n \n \n \n \n \n \n
\u53c2\u6570
serializer\n XmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

\n\n
\n\n
\n

parseBuildInfoAttributes

\n
\n
\n
\n\n\n\n
\n
\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)
\n\n\n\n\n

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
parser\n XmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002

context\n IInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002

\n \n \n \n \n \n \n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n\n
\n\n
\n

parseResults

\n
\n
\n
\n\n\n\n
\n
\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)
\n\n\n\n\n

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
resultDir\n File\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002

shallow\n boolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002

\n \n \n \n \n \n \n
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002

\n\n
\n\n
\n

parseSuite \u5c5e\u6027

\n
\n
\n
\n\n\n\n
\n
\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)
\n\n\n\n\n

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
parser\n XmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002

context\n IInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002

\n \n \n \n \n \n \n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n\n
\n\n
\n

sanitizeXmlContent

\n
\n
\n
\n\n\n\n
\n
\npublic static String sanitizeXmlContent (String s)
\n\n\n\n\n

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

\n \n \n \n \n \n \n
\u53c2\u6570
s\n String

\n \n \n \n \n \n \n
\u8fd4\u56de
String

\n\n
\n\n
\n

truncateStackTrace

\n
\n
\n
\n\n\n\n
\n
\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)
\n\n\n\n\n

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
fullStackTrace\n String

testCaseName\n String

\n \n \n \n \n \n \n
\u8fd4\u56de
String

\n\n
\n\n
\n

writeResults

\n
\n
\n
\n\n\n\n
\n
\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)
\n\n\n\n\n

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
holder\n SuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f

resultDir\n File\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002

\n \n \n \n \n \n \n
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n
\n\n\n\n\n\n\n
\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n
\n\n\n
\n
\n\n\n\n

\u672c\u9875\u9762\u4e0a\u7684\u5185\u5bb9\u548c\u4ee3\u7801\u793a\u4f8b\u53d7\u5185\u5bb9\u8bb8\u53ef\u90e8\u5206\u6240\u8ff0\u8bb8\u53ef\u7684\u9650\u5236\u3002Java \u548c OpenJDK \u662f Oracle \u548c/\u6216\u5176\u5173\u8054\u516c\u53f8\u7684\u6ce8\u518c\u5546\u6807\u3002

\n

\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-08-22\u3002

\n
\n\n\n\n\n\n\n\n
\n\n\n \n\n
\n\n
\n
\n \n\n\n\n \n \n\n\n\n\n \n \n\n\n\n\n\n \n \n\n
\n \n \n \n \n \n\n \n\n\n \n\n \n\n\n\n \n \n\n"} +{"content_list": [[{"type": "title", "raw_content": "

XmlSuiteResultFormatter

", "content": {"title_content": "XmlSuiteResultFormatter", "level": "1"}}, {"type": "code", "raw_content": "

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

", "inline": false, "content": {"code_content": "public class XmlSuiteResultFormatter\nextends Object implements IFormatterGenerator", "by": "tag_code"}}, {"type": "table", "raw_content": "
java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n
", "content": {"html": "
java.lang.Object \u4e2d
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter
", "is_complex": true, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

", "content": [{"c": "\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002", "t": "text"}]}, {"type": "title", "raw_content": "

\u6458\u8981

", "content": {"title_content": "\u6458\u8981", "level": "2"}}, {"type": "table", "raw_content": "

\u5d4c\u5957\u7c7b

classXmlSuiteResultFormatter.RunHistory

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

", "content": {"html": "
\u5d4c\u5957\u7c7b
classXmlSuiteResultFormatter.RunHistory
", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

\u5b57\u6bb5

", "content": {"html": "
\u5b57\u6bb5
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "\n \n public\n static\n final\n String\n \n NS\n

\n\n\n

\n \n \n\n\n ", "inline": false, "content": {"code_content": "public static final String NS", "by": "tag_code"}}, {"type": "code", "raw_content": "\n \n public\n static\n final\n String\n \n TEST_RESULT_FILE_NAME\n

\n\n\n

\n \n \n\n\n\n", "inline": false, "content": {"code_content": "public static final String TEST_RESULT_FILE_NAME", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

\u516c\u5171\u6784\u9020\u51fd\u6570

", "content": {"html": "
\u516c\u5171\u6784\u9020\u51fd\u6570
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "\n XmlSuiteResultFormatter()\n \n\n ", "inline": false, "content": {"code_content": "XmlSuiteResultFormatter()", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

\u516c\u5171\u65b9\u6cd5

voidaddBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

voidaddSuiteAttributes(XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

voidparseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

SuiteResultHolderparseResults(File resultDir, boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

voidparseSuiteAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

static StringsanitizeXmlContent(String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

static StringtruncateStackTrace(String fullStackTrace, String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

FilewriteResults(SuiteResultHolder holder, File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

", "content": {"html": "
\u516c\u5171\u65b9\u6cd5
voidaddBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)<br>serializer.attribute
voidaddSuiteAttributes(XmlSerializer serializer)<br>serializer.attribute
voidparseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)<br>addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)
SuiteResultHolderparseResults(File resultDir, boolean shallow)<br>writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)<br>SuiteResultHolder
voidparseSuiteAttributes(XmlPullParser parser, IInvocationContext context)<br>addSuiteAttributes(org.xmlpull.v1.XmlSerializer)
static StringsanitizeXmlContent(String s)
static StringtruncateStackTrace(String fullStackTrace, String testCaseName)<br>ERROR(/STACK_TRACE_MAX_SIZE)
FilewriteResults(SuiteResultHolder holder, File resultDir)
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

\u5b57\u6bb5

", "content": {"title_content": "\u5b57\u6bb5", "level": "2"}}, {"type": "title", "raw_content": "

\u5317\u7f8e\u6d32

", "content": {"title_content": "\u5317\u7f8e\u6d32", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static final String NS
", "inline": false, "content": {"code_content": "public static final String NS", "by": "tag_pre"}}, {"type": "title", "raw_content": "

TEST_RESULTS_FILE_NAME

", "content": {"title_content": "TEST_RESULTS_FILE_NAME", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static final String TEST_RESULT_FILE_NAME
", "inline": false, "content": {"code_content": "public static final String TEST_RESULT_FILE_NAME", "by": "tag_pre"}}, {"type": "title", "raw_content": "

\u516c\u5171\u6784\u9020\u51fd\u6570

", "content": {"title_content": "\u516c\u5171\u6784\u9020\u51fd\u6570", "level": "2"}}, {"type": "title", "raw_content": "

XmlSuiteResultFormatter

", "content": {"title_content": "XmlSuiteResultFormatter", "level": "3"}}, {"type": "code", "raw_content": "
\npublic XmlSuiteResultFormatter ()
", "inline": false, "content": {"code_content": "public XmlSuiteResultFormatter ()", "by": "tag_pre"}}, {"type": "title", "raw_content": "

\u516c\u5171\u65b9\u6cd5

", "content": {"title_content": "\u516c\u5171\u65b9\u6cd5", "level": "2"}}, {"type": "title", "raw_content": "

addBuildInfoAttributes

", "content": {"title_content": "addBuildInfoAttributes", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)
", "inline": false, "content": {"code_content": "public void addBuildInfoAttributes (XmlSerializer serializer,\n SuiteResultHolder holder)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

", "content": [{"c": "\u5141\u8bb8\u901a\u8fc7", "t": "text"}, {"c": "serializer.attribute", "t": "code-inline"}, {"c": "\u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
holderSuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002
", "content": {"html": "
\u53c2\u6570
serializerXmlSerializer
holderSuiteResultHolder
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

", "content": {"title_content": "\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void addSuiteAttributes (XmlSerializer serializer)
", "inline": false, "content": {"code_content": "public void addSuiteAttributes (XmlSerializer serializer)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

", "content": [{"c": "\u5141\u8bb8\u901a\u8fc7", "t": "text"}, {"c": "serializer.attribute", "t": "code-inline"}, {"c": "\u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
", "content": {"html": "
\u53c2\u6570
serializerXmlSerializer
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

parseBuildInfoAttributes

", "content": {"title_content": "parseBuildInfoAttributes", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)
", "inline": false, "content": {"code_content": "public void parseBuildInfoAttributes (XmlPullParser parser,\n IInvocationContext context)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

", "content": [{"c": "\u4ece", "t": "text"}, {"c": "addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)", "t": "code-inline"}, {"c": "\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
", "content": {"html": "
\u53c2\u6570
parserXmlPullParser
contextIInvocationContext<br>IInvocationContext
", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "content": {"html": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

parseResults

", "content": {"title_content": "parseResults", "level": "3"}}, {"type": "code", "raw_content": "
\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)
", "inline": false, "content": {"code_content": "public SuiteResultHolder parseResults (File resultDir,\n boolean shallow)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

", "content": [{"c": "\u5bf9", "t": "text"}, {"c": "writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)", "t": "code-inline"}, {"c": "\u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa", "t": "text"}, {"c": "SuiteResultHolder", "t": "code-inline"}, {"c": "\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
resultDirFile\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002
shallowboolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002
", "content": {"html": "
\u53c2\u6570
resultDirFile
shallowboolean<br>SuiteResultHolder
", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002
", "content": {"html": "
\u8fd4\u56de
SuiteResultHolderSuiteResultHolder
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

parseSuite \u5c5e\u6027

", "content": {"title_content": "parseSuite \u5c5e\u6027", "level": "3"}}, {"type": "code", "raw_content": "
\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)
", "inline": false, "content": {"code_content": "public void parseSuiteAttributes (XmlPullParser parser,\n IInvocationContext context)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

", "content": [{"c": "\u4ece", "t": "text"}, {"c": "addSuiteAttributes(org.xmlpull.v1.XmlSerializer)", "t": "code-inline"}, {"c": "\u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
", "content": {"html": "
\u53c2\u6570
parserXmlPullParser
contextIInvocationContext<br>IInvocationContext
", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "content": {"html": "
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

sanitizeXmlContent

", "content": {"title_content": "sanitizeXmlContent", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static String sanitizeXmlContent (String s)
", "inline": false, "content": {"code_content": "public static String sanitizeXmlContent (String s)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

", "content": [{"c": "\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
", "content": {"html": "
\u53c2\u6570
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "\n s\n \n String \n \n ", "inline": false, "content": {"code_content": "s String", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u8fd4\u56de
", "content": {"html": "
\u8fd4\u56de
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "String", "inline": false, "content": {"code_content": "String", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

truncateStackTrace

", "content": {"title_content": "truncateStackTrace", "level": "3"}}, {"type": "code", "raw_content": "
\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)
", "inline": false, "content": {"code_content": "public static String truncateStackTrace (String fullStackTrace,\n String testCaseName)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

", "content": [{"c": "\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b", "t": "text"}, {"c": "ERROR(/STACK_TRACE_MAX_SIZE)", "t": "code-inline"}, {"c": "\u4e2a\u5b57\u7b26\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
", "content": {"html": "
\u53c2\u6570
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "\n fullStackTrace\n \n String \n \n ", "inline": false, "content": {"code_content": "fullStackTrace String", "by": "tag_code"}}, {"type": "code", "raw_content": "\n testCaseName\n \n String \n \n ", "inline": false, "content": {"code_content": "testCaseName String", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u8fd4\u56de
", "content": {"html": "
\u8fd4\u56de
", "is_complex": true, "table_nest_level": "1"}}, {"type": "code", "raw_content": "String", "inline": false, "content": {"code_content": "String", "by": "tag_code"}}, {"type": "table", "raw_content": "
", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

writeResults

", "content": {"title_content": "writeResults", "level": "3"}}, {"type": "code", "raw_content": "
\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)
", "inline": false, "content": {"code_content": "public File writeResults (SuiteResultHolder holder,\n File resultDir)", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

", "content": [{"c": "\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002", "t": "text"}]}, {"type": "table", "raw_content": "
\u53c2\u6570
holderSuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f
resultDirFile\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002
", "content": {"html": "
\u53c2\u6570
holderSuiteResultHolder<br>SuiteResultHolder
resultDirFile<br>ERROR(/File)
", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002
", "content": {"html": "
\u8fd4\u56de
FileERROR(/File)
", "is_complex": true, "table_nest_level": "1"}}]], "main_html": "

XmlSuiteResultFormatter

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

\u6458\u8981

\u5d4c\u5957\u7c7b

classXmlSuiteResultFormatter.RunHistory

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

\u5b57\u6bb5

\n \n public\n static\n final\n String\n \n NS\n

\n\n\n

\n \n \n\n\n \n \n public\n static\n final\n String\n \n TEST_RESULT_FILE_NAME\n

\n\n\n

\n \n \n\n\n\n

\u516c\u5171\u6784\u9020\u51fd\u6570

\n XmlSuiteResultFormatter()\n \n\n

\u516c\u5171\u65b9\u6cd5

voidaddBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

voidaddSuiteAttributes(XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

voidparseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

SuiteResultHolderparseResults(File resultDir, boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

voidparseSuiteAttributes(XmlPullParser parser, IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

static StringsanitizeXmlContent(String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

static StringtruncateStackTrace(String fullStackTrace, String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

FilewriteResults(SuiteResultHolder holder, File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

\u5b57\u6bb5

\u5317\u7f8e\u6d32

\npublic static final String NS

TEST_RESULTS_FILE_NAME

\npublic static final String TEST_RESULT_FILE_NAME

\u516c\u5171\u6784\u9020\u51fd\u6570

XmlSuiteResultFormatter

\npublic XmlSuiteResultFormatter ()

\u516c\u5171\u65b9\u6cd5

addBuildInfoAttributes

\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002
holderSuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

\npublic void addSuiteAttributes (XmlSerializer serializer)

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\u53c2\u6570
serializerXmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

parseBuildInfoAttributes

\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002

parseResults

\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

\u53c2\u6570
resultDirFile\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002
shallowboolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002

parseSuite \u5c5e\u6027

\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\u53c2\u6570
parserXmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002
contextIInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002

sanitizeXmlContent

\npublic static String sanitizeXmlContent (String s)

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

\u53c2\u6570
\n s\n \n String \n \n
\u8fd4\u56de
String

truncateStackTrace

\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

\u53c2\u6570
\n fullStackTrace\n \n String \n \n \n testCaseName\n \n String \n \n
\u8fd4\u56de
String

writeResults

\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

\u53c2\u6570
holderSuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f
resultDirFile\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002
", "statics": {"title": 16, "code": 20, "table": 25, "table.complex": 19, "paragraph": 9, "paragraph.text": 16, "paragraph.code-inline": 7}, "url": "https://source.android.com/reference/tradefed/com/android/tradefed/result/suite/XmlSuiteResultFormatter?hl=zh-cn", "content": "# XmlSuiteResultFormatter\n\n```\npublic class XmlSuiteResultFormatter\nextends Object implements IFormatterGenerator\n```\n\n
java.lang.Object \u4e2d
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter
\n\n\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002\n\n## \u6458\u8981\n\n
\u5d4c\u5957\u7c7b
classXmlSuiteResultFormatter.RunHistory
\n\n\u5b57\u6bb5\n\n```\npublic static final String NS\n```\n\n```\npublic static final String TEST_RESULT_FILE_NAME\n```\n\n
\u516c\u5171\u6784\u9020\u51fd\u6570
\n\n```\nXmlSuiteResultFormatter()\n```\n\n
\u516c\u5171\u65b9\u6cd5
voidaddBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)<br>serializer.attribute
voidaddSuiteAttributes(XmlSerializer serializer)<br>serializer.attribute
voidparseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)<br>addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)
SuiteResultHolderparseResults(File resultDir, boolean shallow)<br>writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)<br>SuiteResultHolder
voidparseSuiteAttributes(XmlPullParser parser, IInvocationContext context)<br>addSuiteAttributes(org.xmlpull.v1.XmlSerializer)
static StringsanitizeXmlContent(String s)
static StringtruncateStackTrace(String fullStackTrace, String testCaseName)<br>ERROR(/STACK_TRACE_MAX_SIZE)
FilewriteResults(SuiteResultHolder holder, File resultDir)
\n\n## \u5b57\u6bb5\n\n### \u5317\u7f8e\u6d32\n\n```\npublic static final String NS\n```\n\n### TEST_RESULTS_FILE_NAME\n\n```\npublic static final String TEST_RESULT_FILE_NAME\n```\n\n## \u516c\u5171\u6784\u9020\u51fd\u6570\n\n### XmlSuiteResultFormatter\n\n```\npublic XmlSuiteResultFormatter ()\n```\n\n## \u516c\u5171\u65b9\u6cd5\n\n### addBuildInfoAttributes\n\n```\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n SuiteResultHolder holder)\n```\n\n\u5141\u8bb8\u901a\u8fc7 `serializer.attribute` \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n
\u53c2\u6570
serializerXmlSerializer
holderSuiteResultHolder
\n\n### \u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027\n\n```\npublic void addSuiteAttributes (XmlSerializer serializer)\n```\n\n\u5141\u8bb8\u901a\u8fc7 `serializer.attribute` \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n
\u53c2\u6570
serializerXmlSerializer
\n\n### parseBuildInfoAttributes\n\n```\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n IInvocationContext context)\n```\n\n\u4ece `addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder)` \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n
\u53c2\u6570
parserXmlPullParser
contextIInvocationContext<br>IInvocationContext
\n\n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n### parseResults\n\n```\npublic SuiteResultHolder parseResults (File resultDir,\n boolean shallow)\n```\n\n\u5bf9 `writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File)` \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa `SuiteResultHolder` \u3002\n\n
\u53c2\u6570
resultDirFile
shallowboolean<br>SuiteResultHolder
\n\n
\u8fd4\u56de
SuiteResultHolderSuiteResultHolder
\n\n### parseSuite \u5c5e\u6027\n\n```\npublic void parseSuiteAttributes (XmlPullParser parser,\n IInvocationContext context)\n```\n\n\u4ece `addSuiteAttributes(org.xmlpull.v1.XmlSerializer)` \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n
\u53c2\u6570
parserXmlPullParser
contextIInvocationContext<br>IInvocationContext
\n\n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n### sanitizeXmlContent\n\n```\npublic static String sanitizeXmlContent (String s)\n```\n\n\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\u53c2\u6570\n\n```\ns String\n```\n\n
\u8fd4\u56de
\n\n```\nString\n```\n\n### truncateStackTrace\n\n```\npublic static String truncateStackTrace (String fullStackTrace,\n String testCaseName)\n```\n\n\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b `ERROR(/STACK_TRACE_MAX_SIZE)` \u4e2a\u5b57\u7b26\u3002\n\n\u53c2\u6570\n\n```\nfullStackTrace String\n```\n\n```\ntestCaseName String\n```\n\n
\u8fd4\u56de
\n\n```\nString\n```\n\n### writeResults\n\n```\npublic File writeResults (SuiteResultHolder holder,\n File resultDir)\n```\n\n\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n
\u53c2\u6570
holderSuiteResultHolder<br>SuiteResultHolder
resultDirFile<br>ERROR(/File)
\n\n
\u8fd4\u56de
FileERROR(/File)
\n", "html": "\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n XmlSuiteResultFormatter  |  Android Open Source Project\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n\n
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n
\n
\n \n
\n\n \n\n \n\n \"Android\n \n\n\n\n\n\n\n\n \n
    \n\n
  • \n\n\n\n\n\n\n
  • \n\n
\n
\n\n
\n
\n
\n\n\n\n \n\n \n\n \n\n\n
\n\n\n
\n
\n \n
\n \n
\n\n
\n
\n /\n
\n
\n
\n
\n \n\n\n
\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n \n Android Code Search\n \n\n\n\n\n\n\n \n\n\n \u767b\u5f55\n\n \n\n\n
\n
\n
\n\n\n\n
\n
\n\n\n\n\n
\n
\n\n
\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\n \n \n \n
\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n\n\n\n
\n
\n
\n \"\"\n \n\n \u6b64\u9875\u9762\u7531 Cloud Translation API \u7ffb\u8bd1\u3002\n \n
\n \n
\n
\n\n\n \n\n\n \n\n\n \n\n \n\n \u4f7f\u7528\u96c6\u5408\u8ba9\u4e00\u5207\u4e95\u4e95\u6709\u6761\n \n \n\n \u6839\u636e\u60a8\u7684\u504f\u597d\u4fdd\u5b58\u5185\u5bb9\u5e76\u5bf9\u5176\u8fdb\u884c\u5206\u7c7b\u3002\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n\n\n\n
\n\n \n\n\n\n\n\n
\n\n\n\n

XmlSuiteResultFormatter

\n

\n\n public\n\n\n\n class\n XmlSuiteResultFormatter\n\n
\n\n\n\n\n extends Object\n\n\n\n\n\n\n\n\n implements\n\n IFormatterGenerator\n\n\n\n\n\n

\n\n\n \n\n \n \n\n\n \n\n \n\n \n \n\n\n
java.lang.Object \u4e2d\n
\u21b3com.android.tradefed.result.suite.XmlSuiteResultFormatter\n
\n\n\n\n\n

\n\n\n

\u7528\u4e8e\u5c06\u5957\u4ef6\u8fd0\u884c\u4f5c\u4e1a\u4fdd\u5b58\u4e3a XML \u7684\u5b9e\u7528\u7a0b\u5e8f\u7c7b\u3002TODO\uff1a\u79fb\u9664\u6240\u6709\u7279\u6b8a\u7684\u517c\u5bb9\u6027\u6d4b\u8bd5\n \u83b7\u5f97\u76f8\u540c\u7684\u683c\u5f0f\u3002

\n\n\n\n\n\n\n\n\n\n

\u6458\u8981

\n\n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u5d4c\u5957\u7c7b

\n\n\n\n\n class\n XmlSuiteResultFormatter.RunHistory\n

\u7528\u4e8e JSON \u8f6c\u6362\u7684\u8f85\u52a9\u5bf9\u8c61\u3002\n\n\n

\n
\n\n\n\n\n \n \n \n \n\n\n \n \n \n \n\n\n\n

\u5b57\u6bb5

\n public\n static\n final\n String\n NS\n

\n\n\n

\n
\n public\n static\n final\n String\n TEST_RESULT_FILE_NAME\n

\n\n\n

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n \n\n\n\n

\u516c\u5171\u6784\u9020\u51fd\u6570

\n \n XmlSuiteResultFormatter()\n \n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n \n\n\n \n\n \n \n\n\n\n

\u516c\u5171\u65b9\u6cd5

\n\n\n\n\n\n void\n \n \n addBuildInfoAttributes(XmlSerializer serializer, SuiteResultHolder holder)\n \n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n addSuiteAttributes(XmlSerializer serializer)\n \n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n parseBuildInfoAttributes(XmlPullParser parser, IInvocationContext context)\n \n\n

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

\n\n
\n\n\n\n\n\n SuiteResultHolder\n \n \n parseResults(File resultDir, boolean shallow)\n \n\n

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002\n\n\n

\n\n
\n\n\n\n\n\n void\n \n \n parseSuiteAttributes(XmlPullParser parser, IInvocationContext context)\n \n\n

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002\n\n\n

\n\n
\n\n\n static\n\n\n String\n \n \n sanitizeXmlContent(String s)\n \n\n

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002\n\n\n

\n\n
\n\n\n static\n\n\n String\n \n \n truncateStackTrace(String fullStackTrace, String testCaseName)\n \n\n

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002\n\n\n

\n\n
\n\n\n\n\n\n File\n \n \n writeResults(SuiteResultHolder holder, File resultDir)\n \n\n

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002\n\n\n

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u5b57\u6bb5

\n\n\n
\n

\u5317\u7f8e\u6d32

\n
\n\n\n\n\n\n
\n
\npublic static final String NS
\n\n\n\n\n

\n\n\n
\n\n
\n

TEST_RESULTS_FILE_NAME

\n
\n\n\n\n\n\n
\n
\npublic static final String TEST_RESULT_FILE_NAME
\n\n\n\n\n

\n\n\n
\n\n\n\n\n\n\n\n\n

\u516c\u5171\u6784\u9020\u51fd\u6570

\n\n\n
\n

XmlSuiteResultFormatter

\n
\n
\n
\n\n\n\n
\n
\npublic XmlSuiteResultFormatter ()
\n\n\n\n\n

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\u516c\u5171\u65b9\u6cd5

\n\n\n
\n

addBuildInfoAttributes

\n
\n
\n
\n\n\n\n
\n
\npublic void addBuildInfoAttributes (XmlSerializer serializer,\n                SuiteResultHolder holder)
\n\n\n\n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
serializer\n XmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

holder\n SuiteResultHolder\uff1a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5176\u4e2d\u5305\u542b\u8981\u5199\u5165\u5957\u4ef6\u7ed3\u679c\u7684\u4fe1\u606f\u3002

\n\n
\n\n
\n

\u6dfb\u52a0\u5957\u4ef6\u5c5e\u6027

\n
\n
\n
\n\n\n\n
\n
\npublic void addSuiteAttributes (XmlSerializer serializer)
\n\n\n\n\n

\u5141\u8bb8\u901a\u8fc7 serializer.attribute \u5411 \u6807\u8bb0\u6dfb\u52a0\u4e00\u4e9b\u5c5e\u6027\u3002

\n \n \n \n \n \n \n
\u53c2\u6570
serializer\n XmlSerializer\uff1a\u5bf9 XML \u5957\u4ef6\u7ed3\u679c\u8fdb\u884c\u5e8f\u5217\u5316\u7684\u5bf9\u8c61\u3002

\n\n
\n\n
\n

parseBuildInfoAttributes

\n
\n
\n
\n\n\n\n
\n
\npublic void parseBuildInfoAttributes (XmlPullParser parser,\n                IInvocationContext context)
\n\n\n\n\n

\u4ece addBuildInfoAttributes(org.xmlpull.v1.XmlSerializer, com.android.tradefed.result.suite.SuiteResultHolder) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
parser\n XmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002

context\n IInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002

\n \n \n \n \n \n \n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n\n
\n\n
\n

parseResults

\n
\n
\n
\n\n\n\n
\n
\npublic SuiteResultHolder parseResults (File resultDir,\n                boolean shallow)
\n\n\n\n\n

\u5bf9 writeResults(com.android.tradefed.result.suite.SuiteResultHolder, File) \u8fdb\u884c\u53cd\u5411\u8fd0\u7b97\uff0c\u4ee5\u8ba1\u7b97\u7ed3\u679c\n \u76ee\u5f55\uff0c\u7136\u540e\u5728\u8be5\u76ee\u5f55\u4e2d\u521b\u5efa SuiteResultHolder\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
resultDir\n File\uff1a\u7528\u4e8e\u67e5\u627e\u7ed3\u679c\u7684\u76ee\u5f55\u3002

shallow\n boolean\uff1a\u4ec5\u52a0\u8f7d SuiteResultHolder \u7684\u9876\u7ea7\u4fe1\u606f\u3002

\n \n \n \n \n \n \n
\u8fd4\u56de
SuiteResultHolder\u5305\u542b\u7ed3\u679c\u8868\u793a\u6cd5\u7684 SuiteResultHolder\u3002\u6216 null\uff0c\u5982\u679c\n \u51fa\u73b0\u4efb\u4f55\u95ee\u9898\u3002

\n\n
\n\n
\n

parseSuite \u5c5e\u6027

\n
\n
\n
\n\n\n\n
\n
\npublic void parseSuiteAttributes (XmlPullParser parser,\n                IInvocationContext context)
\n\n\n\n\n

\u4ece addSuiteAttributes(org.xmlpull.v1.XmlSerializer) \u5f00\u59cb\u9006\u5411\u8fd0\u7b97\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
parser\n XmlPullParser\uff1a\u4ece\u4e2d\u8bfb\u53d6\u5c5e\u6027\u7684\u89e3\u6790\u5668\u3002

context\n IInvocationContext\uff1a\u7528\u4e8e\u653e\u7f6e\u5c5e\u6027\u7684 IInvocationContext\u3002

\n \n \n \n \n \n \n
\u629b\u51fa
XmlPullParserException\u5f53 XmlPullParser \u5931\u8d25\u65f6\u3002
\n\n\n
\n\n
\n

sanitizeXmlContent

\n
\n
\n
\n\n\n\n
\n
\npublic static String sanitizeXmlContent (String s)
\n\n\n\n\n

\u6e05\u7406\u5b57\u7b26\u4e32\u4ee5\u8f6c\u4e49\u7279\u6b8a\u5b57\u7b26\u3002

\n \n \n \n \n \n \n
\u53c2\u6570
s\n String

\n \n \n \n \n \n \n
\u8fd4\u56de
String

\n\n
\n\n
\n

truncateStackTrace

\n
\n
\n
\n\n\n\n
\n
\npublic static String truncateStackTrace (String fullStackTrace,\n                String testCaseName)
\n\n\n\n\n

\u622a\u65ad\u5b8c\u6574\u7684\u5806\u6808\u8f68\u8ff9\uff0c\u6700\u591a\u5305\u542b ERROR(/STACK_TRACE_MAX_SIZE) \u4e2a\u5b57\u7b26\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
fullStackTrace\n String

testCaseName\n String

\n \n \n \n \n \n \n
\u8fd4\u56de
String

\n\n
\n\n
\n

writeResults

\n
\n
\n
\n\n\n\n
\n
\npublic File writeResults (SuiteResultHolder holder,\n                File resultDir)
\n\n\n\n\n

\u4ee5 XML \u683c\u5f0f\u7f16\u5199\u8c03\u7528\u7ed3\u679c\u3002

\n \n \n \n \n \n \n \n \n \n \n
\u53c2\u6570
holder\n SuiteResultHolder\uff1a\u4e00\u4e2a SuiteResultHolder\uff0c\u5305\u542b xml \u6240\u9700\u7684\u6240\u6709\u4fe1\u606f

resultDir\n File\uff1a\u7528\u4e8e\u5b58\u653e\u7ed3\u679c\u7684\u7ed3\u679c\u76ee\u5f55 ERROR(/File)\u3002

\n \n \n \n \n \n \n
\u8fd4\u56de
File\u6307\u5411 xml \u8f93\u51fa\u6587\u4ef6\u7684 ERROR(/File)\u3002

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n
\n\n\n\n\n\n\n
\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n
\n\n\n
\n
\n\n\n\n

\u672c\u9875\u9762\u4e0a\u7684\u5185\u5bb9\u548c\u4ee3\u7801\u793a\u4f8b\u53d7\u5185\u5bb9\u8bb8\u53ef\u90e8\u5206\u6240\u8ff0\u8bb8\u53ef\u7684\u9650\u5236\u3002Java \u548c OpenJDK \u662f Oracle \u548c/\u6216\u5176\u5173\u8054\u516c\u53f8\u7684\u6ce8\u518c\u5546\u6807\u3002

\n

\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-08-22\u3002

\n
\n\n\n\n\n\n\n\n
\n\n\n \n\n
\n\n
\n
\n \n\n\n\n \n \n\n\n\n\n \n \n\n\n\n\n\n \n \n\n
\n \n \n \n \n \n\n \n\n\n \n\n \n\n\n\n \n \n\n"} diff --git a/bench/data/groundtruth/code_6.jsonl b/bench/data/groundtruth/code_6.jsonl index c6115f23..f0ded27e 100644 --- a/bench/data/groundtruth/code_6.jsonl +++ b/bench/data/groundtruth/code_6.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "", "content": [{"c": "RSS", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Installs and Configures Ark Survival Evolved Dedicated Server

", "content": [{"c": "Installs and Configures Ark Survival Evolved Dedicated Server", "t": "text"}]}, {"type": "list", "raw_content": "
", "content": {"items": [], "ordered": true}}, {"type": "code", "raw_content": "
cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n ", "inline": false, "content": {"code_content": "cookbook 'chef-arkserver', '= 0.1.0', :supermarket", "by": "tag_pre"}}, {"type": "code", "raw_content": "
cookbook 'chef-arkserver', '= 0.1.0'
\n ", "inline": false, "content": {"code_content": "cookbook 'chef-arkserver', '= 0.1.0'", "by": "tag_pre"}}, {"type": "code", "raw_content": "
knife supermarket install chef-arkserver
\n ", "inline": false, "content": {"code_content": "knife supermarket install chef-arkserver", "by": "tag_pre"}}, {"type": "code", "raw_content": "
knife supermarket download chef-arkserver
\n ", "inline": false, "content": {"code_content": "knife supermarket download chef-arkserver", "by": "tag_pre"}}, {"type": "list", "raw_content": "
README
Dependencies
Quality\n \n 43%
", "content": {"items": [[[{"c": "README", "t": "text"}]], [[{"c": "Dependencies", "t": "text"}]], [[{"c": "Quality\n ", "t": "text"}, {"c": "\n 43%", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

Ark: Survival Evolved Chef Cookbook

", "content": {"title_content": "Ark: Survival Evolved Chef Cookbook", "level": "1"}}, {"type": "image", "raw_content": "\"Build", "content": {"url": "https://travis-ci.org/f0rkz/chef-arkserver.svg", "data": null, "alt": "Build Status", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

", "content": [{"c": "This cookbook will install and configure an Ark: Survival Evolved dedicated server. Utilize the following README for more information on how to utilize this cookbook.", "t": "text"}]}, {"type": "title", "raw_content": "

Usage

", "content": {"title_content": "Usage", "level": "2"}}, {"type": "paragraph", "raw_content": "

Include chef-arkserver in your node's runlist

", "content": [{"c": "Include", "t": "text"}, {"c": "chef-arkserver", "t": "code-inline"}, {"c": "in your node's runlist", "t": "text"}]}, {"type": "title", "raw_content": "

Configuration

", "content": {"title_content": "Configuration", "level": "2"}}, {"type": "paragraph", "raw_content": "

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

", "content": [{"c": "In order to properly utilize this cookbook, a suite of default configuration options are included in the cookbook's", "t": "text"}, {"c": "attributes/default.rb", "t": "code-inline"}, {"c": "file. You will need to override the default options in your cookbook's node configuration.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

An example of overriding configuration options is structured as follows:

", "content": [{"c": "An example of overriding configuration options is structured as follows:", "t": "text"}]}, {"type": "code", "raw_content": "
{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n
", "inline": false, "content": {"code_content": "{\n \"name\": \"my.ark.server.net\",\n \"chef_environment\": \"_default\",\n \"normal\": {\n \"ark\": {\n \"gameserver\": {\n \"configuration\": {\n \"map\": \"ScorchedEarth_P\",\n \"ServerSettings\": {\n \"XPMultiplier\": \"5.0000\",\n \"TamingSpeedMultiplier\": \"2.0000\",\n \"RCONPort\": 27025\n },\n \"SessionSettings\": {\n \"SessionName\": \"My Ark Dedicated Server\"\n },\n \"MessageOfTheDay\": {\n \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n }\n }\n }\n },\n \"tags\": [\n\n ]\n },\n \"policy_name\": null,\n \"policy_group\": null,\n \"run_list\": [\n \"role[base]\",\n \"recipe[]\"\n]\n\n}", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

", "content": [{"c": "This configuration will build your", "t": "text"}, {"c": "GameUserSettings.ini", "t": "code-inline"}, {"c": "file with the requested overrided options defined above.", "t": "text"}]}, {"type": "title", "raw_content": "

Dependent cookbooks

", "content": {"title_content": "Dependent cookbooks", "level": "3"}}, {"type": "table", "raw_content": "
chef-steamcmd >= 0.0.0
", "content": {"html": "
chef-steamcmd >= 0.0.0
", "is_complex": false}}, {"type": "title", "raw_content": "

Contingent cookbooks

", "content": {"title_content": "Contingent cookbooks", "level": "3"}}, {"type": "paragraph", "raw_content": "

There are no cookbooks that are contingent upon this one.

", "content": [{"c": "There are no cookbooks that are contingent upon this one.", "t": "text"}]}, {"type": "title", "raw_content": "

Collaborator Number Metric\n

", "content": {"title_content": "Collaborator Number Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": " 0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n ", "inline": false, "content": {"code_content": "Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Contributing File Metric\n

", "content": {"title_content": "Contributing File Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": " 0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Foodcritic Metric\n

", "content": {"title_content": "Foodcritic Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": " 0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

License Metric\n

", "content": {"title_content": "License Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": " 0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

No Binaries Metric\n

", "content": {"title_content": "No Binaries Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": " 0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Testing File Metric\n

", "content": {"title_content": "Testing File Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": " 0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Version Tag Metric\n

", "content": {"title_content": "Version Tag Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": " 0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number", "by": "tag_pre"}}]], "main_html": "

Installs and Configures Ark Survival Evolved Dedicated Server

cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n
cookbook 'chef-arkserver', '= 0.1.0'
\n
knife supermarket install chef-arkserver
\n
knife supermarket download chef-arkserver
\n
README
Dependencies
Quality\n \n 43%

Ark: Survival Evolved Chef Cookbook

\"Build

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

Usage

Include chef-arkserver in your node's runlist

Configuration

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

An example of overriding configuration options is structured as follows:

{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

Dependent cookbooks

chef-steamcmd >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric\n

\n            

0.1.0 failed this metric

\n
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n

Contributing File Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n

Foodcritic Metric\n

\n            

0.1.0 passed this metric

\n \n

License Metric\n

\n            

0.1.0 passed this metric

\n \n

No Binaries Metric\n

\n            

0.1.0 passed this metric

\n \n

Testing File Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n

Version Tag Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n ", "statics": {"paragraph": 8, "paragraph.text": 11, "list": 2, "code": 16, "list.text": 4, "title": 12, "image": 1, "paragraph.code-inline": 3, "table": 1}, "url": "https://supermarket.chef.io/cookbooks/chef-arkserver/versions/0.1.0", "content": "RSS\n\nInstalls and Configures Ark Survival Evolved Dedicated Server\n\n```\ncookbook 'chef-arkserver', '= 0.1.0', :supermarket\n```\n\n```\ncookbook 'chef-arkserver', '= 0.1.0'\n```\n\n```\nknife supermarket install chef-arkserver\n```\n\n```\nknife supermarket download chef-arkserver\n```\n\n1. README\n2. Dependencies\n3. Quality 43%\n\n# Ark: Survival Evolved Chef Cookbook\n\nThis cookbook will install and configure an Ark: Survival Evolved dedicated server. Utilize the following README for more information on how to utilize this cookbook.\n\n## Usage\n\nInclude `chef-arkserver` in your node's runlist\n\n## Configuration\n\nIn order to properly utilize this cookbook, a suite of default configuration options are included in the cookbook's `attributes/default.rb` file. You will need to override the default options in your cookbook's node configuration.\n\nAn example of overriding configuration options is structured as follows:\n\n```\n{\n \"name\": \"my.ark.server.net\",\n \"chef_environment\": \"_default\",\n \"normal\": {\n \"ark\": {\n \"gameserver\": {\n \"configuration\": {\n \"map\": \"ScorchedEarth_P\",\n \"ServerSettings\": {\n \"XPMultiplier\": \"5.0000\",\n \"TamingSpeedMultiplier\": \"2.0000\",\n \"RCONPort\": 27025\n },\n \"SessionSettings\": {\n \"SessionName\": \"My Ark Dedicated Server\"\n },\n \"MessageOfTheDay\": {\n \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n }\n }\n }\n },\n \"tags\": [\n\n ]\n },\n \"policy_name\": null,\n \"policy_group\": null,\n \"run_list\": [\n \"role[base]\",\n \"recipe[]\"\n]\n\n}\n```\n\nThis configuration will build your `GameUserSettings.ini` file with the requested overrided options defined above.\n\n### Dependent cookbooks\n\nchef-steamcmd >= 0.0.0\n\n### Contingent cookbooks\n\nThere are no cookbooks that are contingent upon this one.\n\n# Collaborator Number Metric\n\n```\n 0.1.0 failed this metric\n```\n\n```\nFailure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.\n```\n\n# Contributing File Metric\n\n```\n 0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file\n```\n\n# Foodcritic Metric\n\n```\n 0.1.0 passed this metric\n```\n\n# License Metric\n\n```\n 0.1.0 passed this metric\n```\n\n# No Binaries Metric\n\n```\n 0.1.0 passed this metric\n```\n\n# Testing File Metric\n\n```\n 0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file\n```\n\n# Version Tag Metric\n\n```\n 0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number\n```\n", "html": "\n\n\n\n\n \n \n \n chef-arkserver Cookbook - Chef Supermarket\n \n \n \n \n \n \n \n\n \n\n\n\n \n \n \n
\n
\n \n \n\n
\n Menu\n
\n \n \n\n
\n
\n\n
\n
\n\n
\n

Adoptable Cookbooks List

\n\n

\n Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!\n
\n List of Adoptable Cookbooks\n

\n
\n\n
\n

Supermarket Belongs to the Community

\n\n

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

\n
\n\n \n
\n
\n\n\n\n
\n
\n
\n
\n Cookbooks \n\n \n
\n\n
\n \n \n
\n\n\n\n
\n
\n\n
\n Advanced Options \n
\n
\n
\n\n
\n

Select Badges

\n
\n\n
\n \n
\n
\n\n

Select Supported Platforms

\n
\n\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n

Select Status

\n
\n
\n \n
\n
\n\n
\n \n
\n
\n
\n\n
\n\n\n\n
\n
\n\n \n \n RSS\n \n

\n chef-arkserver\n \n \n \n (15) Versions\n \n 0.1.0\n \n \n\n \n Follow0\n\n\n

\n\n

Installs and Configures Ark Survival Evolved Dedicated Server

\n\n
\n
\n
\n Policyfile\n
\n\n
\n Berkshelf\n
\n\n
\n Knife\n
\n
\n\n
\n
\n
cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n
\n\n
\n
cookbook 'chef-arkserver', '= 0.1.0'
\n
\n\n
\n
knife supermarket install chef-arkserver
\n
knife supermarket download chef-arkserver
\n
\n
\n
\n\n\n
\n
README
\n
Dependencies
\n
\n Quality\n \n 43%\n \n
\n
\n
\n
\n

Ark: Survival Evolved Chef Cookbook

\n\n

\"Build

\n\n

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

\n\n

Usage

\n\n

Include chef-arkserver in your node's runlist

\n\n

Configuration

\n\n

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

\n\n

An example of overriding configuration options is structured as follows:

\n
\n
{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n
\n
\n\n

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

\n\n
\n
\n

Dependent cookbooks

\n \n \n \n \n\n\n \n
chef-steamcmd >= 0.0.0
\n\n

Contingent cookbooks

\n

There are no cookbooks that are contingent upon this one.

\n
\n
\n

Collaborator Number Metric\n
\n            

0.1.0 failed this metric

\n
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n

Contributing File Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n

Foodcritic Metric\n
\n            

0.1.0 passed this metric

\n \n

License Metric\n
\n            

0.1.0 passed this metric

\n \n

No Binaries Metric\n
\n            

0.1.0 passed this metric

\n \n

Testing File Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n

Version Tag Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n
\n

\n\n
\n
\n\n
\n \n\n
\n\n
\n\n\n\n\n

\n Details\n

\n\n
\n\n \n\n

\n Updated September 8, 2017\n Created on September 8, 2017\n

\n\n

Supported Platforms

\n
    \n
  • \n \"debian\n
  • \n
  • \n \"ubuntu\n
  • \n
\n\n\n\n

License

\n

Apache-2.0\n

\n\n

Required Chef Infra Client

\n

(>= 12.1)

\n\n\n Download Cookbook\n
\n
\n\n
\n\n
\n \n\n \n
\n
\n\n \n \n\n"} +{"content_list": [[{"type": "paragraph", "raw_content": "", "content": [{"c": "RSS", "t": "text"}]}, {"type": "paragraph", "raw_content": "

Installs and Configures Ark Survival Evolved Dedicated Server

", "content": [{"c": "Installs and Configures Ark Survival Evolved Dedicated Server", "t": "text"}]}, {"type": "list", "raw_content": "
", "content": {"items": [], "ordered": true}}, {"type": "code", "raw_content": "
cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n ", "inline": false, "content": {"code_content": "cookbook 'chef-arkserver', '= 0.1.0', :supermarket", "by": "tag_pre"}}, {"type": "code", "raw_content": "
cookbook 'chef-arkserver', '= 0.1.0'
\n ", "inline": false, "content": {"code_content": "cookbook 'chef-arkserver', '= 0.1.0'", "by": "tag_pre"}}, {"type": "code", "raw_content": "
knife supermarket install chef-arkserver
\n ", "inline": false, "content": {"code_content": "knife supermarket install chef-arkserver", "by": "tag_pre"}}, {"type": "code", "raw_content": "
knife supermarket download chef-arkserver
\n ", "inline": false, "content": {"code_content": "knife supermarket download chef-arkserver", "by": "tag_pre"}}, {"type": "list", "raw_content": "
README
Dependencies
Quality\n \n 43%
", "content": {"items": [[[{"c": "README", "t": "text"}]], [[{"c": "Dependencies", "t": "text"}]], [[{"c": "Quality\n ", "t": "text"}, {"c": "\n 43%", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

Ark: Survival Evolved Chef Cookbook

", "content": {"title_content": "Ark: Survival Evolved Chef Cookbook", "level": "1"}}, {"type": "image", "raw_content": "\"Build", "content": {"url": "https://travis-ci.org/f0rkz/chef-arkserver.svg", "data": null, "alt": "Build Status", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

", "content": [{"c": "This cookbook will install and configure an Ark: Survival Evolved dedicated server. Utilize the following README for more information on how to utilize this cookbook.", "t": "text"}]}, {"type": "title", "raw_content": "

Usage

", "content": {"title_content": "Usage", "level": "2"}}, {"type": "paragraph", "raw_content": "

Include chef-arkserver in your node's runlist

", "content": [{"c": "Include", "t": "text"}, {"c": "chef-arkserver", "t": "code-inline"}, {"c": "in your node's runlist", "t": "text"}]}, {"type": "title", "raw_content": "

Configuration

", "content": {"title_content": "Configuration", "level": "2"}}, {"type": "paragraph", "raw_content": "

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

", "content": [{"c": "In order to properly utilize this cookbook, a suite of default configuration options are included in the cookbook's", "t": "text"}, {"c": "attributes/default.rb", "t": "code-inline"}, {"c": "file. You will need to override the default options in your cookbook's node configuration.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

An example of overriding configuration options is structured as follows:

", "content": [{"c": "An example of overriding configuration options is structured as follows:", "t": "text"}]}, {"type": "code", "raw_content": "
{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n
", "inline": false, "content": {"code_content": "{\n \"name\": \"my.ark.server.net\",\n \"chef_environment\": \"_default\",\n \"normal\": {\n \"ark\": {\n \"gameserver\": {\n \"configuration\": {\n \"map\": \"ScorchedEarth_P\",\n \"ServerSettings\": {\n \"XPMultiplier\": \"5.0000\",\n \"TamingSpeedMultiplier\": \"2.0000\",\n \"RCONPort\": 27025\n },\n \"SessionSettings\": {\n \"SessionName\": \"My Ark Dedicated Server\"\n },\n \"MessageOfTheDay\": {\n \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n }\n }\n }\n },\n \"tags\": [\n\n ]\n },\n \"policy_name\": null,\n \"policy_group\": null,\n \"run_list\": [\n \"role[base]\",\n \"recipe[]\"\n]\n\n}", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

", "content": [{"c": "This configuration will build your", "t": "text"}, {"c": "GameUserSettings.ini", "t": "code-inline"}, {"c": "file with the requested overrided options defined above.", "t": "text"}]}, {"type": "title", "raw_content": "

Dependent cookbooks

", "content": {"title_content": "Dependent cookbooks", "level": "3"}}, {"type": "table", "raw_content": "
chef-steamcmd >= 0.0.0
", "content": {"html": "
chef-steamcmd >= 0.0.0
", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

Contingent cookbooks

", "content": {"title_content": "Contingent cookbooks", "level": "3"}}, {"type": "paragraph", "raw_content": "

There are no cookbooks that are contingent upon this one.

", "content": [{"c": "There are no cookbooks that are contingent upon this one.", "t": "text"}]}, {"type": "title", "raw_content": "

Collaborator Number Metric\n

", "content": {"title_content": "Collaborator Number Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": "0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n ", "inline": false, "content": {"code_content": "Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Contributing File Metric\n

", "content": {"title_content": "Contributing File Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": "0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Foodcritic Metric\n

", "content": {"title_content": "Foodcritic Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": "0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

License Metric\n

", "content": {"title_content": "License Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": "0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

No Binaries Metric\n

", "content": {"title_content": "No Binaries Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 passed this metric

\n \n ", "inline": false, "content": {"code_content": "0.1.0 passed this metric", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Testing File Metric\n

", "content": {"title_content": "Testing File Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": "0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file", "by": "tag_pre"}}, {"type": "title", "raw_content": "

Version Tag Metric\n

", "content": {"title_content": "Version Tag Metric", "level": "1"}}, {"type": "code", "raw_content": "
\n            

0.1.0 failed this metric

\n ", "inline": false, "content": {"code_content": "0.1.0 failed this metric", "by": "tag_pre"}}, {"type": "code", "raw_content": "
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n ", "inline": false, "content": {"code_content": "Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number", "by": "tag_pre"}}]], "main_html": "

Installs and Configures Ark Survival Evolved Dedicated Server

cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n
cookbook 'chef-arkserver', '= 0.1.0'
\n
knife supermarket install chef-arkserver
\n
knife supermarket download chef-arkserver
\n
README
Dependencies
Quality\n \n 43%

Ark: Survival Evolved Chef Cookbook

\"Build

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

Usage

Include chef-arkserver in your node's runlist

Configuration

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

An example of overriding configuration options is structured as follows:

{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

Dependent cookbooks

chef-steamcmd >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric\n

\n            

0.1.0 failed this metric

\n
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n

Contributing File Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n

Foodcritic Metric\n

\n            

0.1.0 passed this metric

\n \n

License Metric\n

\n            

0.1.0 passed this metric

\n \n

No Binaries Metric\n

\n            

0.1.0 passed this metric

\n \n

Testing File Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n

Version Tag Metric\n

\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n ", "statics": {"paragraph": 8, "paragraph.text": 11, "list": 2, "code": 16, "list.text": 4, "title": 12, "image": 1, "paragraph.code-inline": 3, "table": 1}, "url": "https://supermarket.chef.io/cookbooks/chef-arkserver/versions/0.1.0", "content": "RSS\n\nInstalls and Configures Ark Survival Evolved Dedicated Server\n\n```\ncookbook 'chef-arkserver', '= 0.1.0', :supermarket\n```\n\n```\ncookbook 'chef-arkserver', '= 0.1.0'\n```\n\n```\nknife supermarket install chef-arkserver\n```\n\n```\nknife supermarket download chef-arkserver\n```\n\n1. README\n2. Dependencies\n3. Quality 43%\n\n# Ark: Survival Evolved Chef Cookbook\n\nThis cookbook will install and configure an Ark: Survival Evolved dedicated server. Utilize the following README for more information on how to utilize this cookbook.\n\n## Usage\n\nInclude `chef-arkserver` in your node's runlist\n\n## Configuration\n\nIn order to properly utilize this cookbook, a suite of default configuration options are included in the cookbook's `attributes/default.rb` file. You will need to override the default options in your cookbook's node configuration.\n\nAn example of overriding configuration options is structured as follows:\n\n```\n{\n \"name\": \"my.ark.server.net\",\n \"chef_environment\": \"_default\",\n \"normal\": {\n \"ark\": {\n \"gameserver\": {\n \"configuration\": {\n \"map\": \"ScorchedEarth_P\",\n \"ServerSettings\": {\n \"XPMultiplier\": \"5.0000\",\n \"TamingSpeedMultiplier\": \"2.0000\",\n \"RCONPort\": 27025\n },\n \"SessionSettings\": {\n \"SessionName\": \"My Ark Dedicated Server\"\n },\n \"MessageOfTheDay\": {\n \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n }\n }\n }\n },\n \"tags\": [\n\n ]\n },\n \"policy_name\": null,\n \"policy_group\": null,\n \"run_list\": [\n \"role[base]\",\n \"recipe[]\"\n]\n\n}\n```\n\nThis configuration will build your `GameUserSettings.ini` file with the requested overrided options defined above.\n\n### Dependent cookbooks\n\nchef-steamcmd >= 0.0.0\n\n### Contingent cookbooks\n\nThere are no cookbooks that are contingent upon this one.\n\n# Collaborator Number Metric\n\n```\n0.1.0 failed this metric\n```\n\n```\nFailure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.\n```\n\n# Contributing File Metric\n\n```\n0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file\n```\n\n# Foodcritic Metric\n\n```\n0.1.0 passed this metric\n```\n\n# License Metric\n\n```\n0.1.0 passed this metric\n```\n\n# No Binaries Metric\n\n```\n0.1.0 passed this metric\n```\n\n# Testing File Metric\n\n```\n0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file\n```\n\n# Version Tag Metric\n\n```\n0.1.0 failed this metric\n```\n\n```\nFailure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number\n```\n", "html": "\n\n\n\n\n \n \n \n chef-arkserver Cookbook - Chef Supermarket\n \n \n \n \n \n \n \n\n \n\n\n\n \n \n \n
\n
\n \n \n\n
\n Menu\n
\n \n \n\n
\n
\n\n
\n
\n\n
\n

Adoptable Cookbooks List

\n\n

\n Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!\n
\n List of Adoptable Cookbooks\n

\n
\n\n
\n

Supermarket Belongs to the Community

\n\n

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

\n
\n\n \n
\n
\n\n\n\n
\n
\n
\n
\n Cookbooks \n\n \n
\n\n
\n \n \n
\n\n\n\n
\n
\n\n
\n Advanced Options \n
\n
\n
\n\n
\n

Select Badges

\n
\n\n
\n \n
\n
\n\n

Select Supported Platforms

\n
\n\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n

Select Status

\n
\n
\n \n
\n
\n\n
\n \n
\n
\n
\n\n
\n\n\n\n
\n
\n\n \n \n RSS\n \n

\n chef-arkserver\n \n \n \n (15) Versions\n \n 0.1.0\n \n \n\n \n Follow0\n\n\n

\n\n

Installs and Configures Ark Survival Evolved Dedicated Server

\n\n
\n
\n
\n Policyfile\n
\n\n
\n Berkshelf\n
\n\n
\n Knife\n
\n
\n\n
\n
\n
cookbook 'chef-arkserver', '= 0.1.0', :supermarket
\n
\n\n
\n
cookbook 'chef-arkserver', '= 0.1.0'
\n
\n\n
\n
knife supermarket install chef-arkserver
\n
knife supermarket download chef-arkserver
\n
\n
\n
\n\n\n
\n
README
\n
Dependencies
\n
\n Quality\n \n 43%\n \n
\n
\n
\n
\n

Ark: Survival Evolved Chef Cookbook

\n\n

\"Build

\n\n

This cookbook will install and configure an Ark: Survival Evolved dedicated
\nserver. Utilize the following README for more information on how to utilize this
\ncookbook.

\n\n

Usage

\n\n

Include chef-arkserver in your node's runlist

\n\n

Configuration

\n\n

In order to properly utilize this cookbook, a suite of default configuration
\noptions are included in the cookbook's attributes/default.rb file. You will
\nneed to override the default options in your cookbook's node configuration.

\n\n

An example of overriding configuration options is structured as follows:

\n
\n
{\n  \"name\": \"my.ark.server.net\",\n  \"chef_environment\": \"_default\",\n  \"normal\": {\n    \"ark\": {\n      \"gameserver\": {\n        \"configuration\": {\n          \"map\": \"ScorchedEarth_P\",\n          \"ServerSettings\": {\n            \"XPMultiplier\": \"5.0000\",\n            \"TamingSpeedMultiplier\": \"2.0000\",\n            \"RCONPort\": 27025\n          },\n          \"SessionSettings\": {\n            \"SessionName\": \"My Ark Dedicated Server\"\n          },\n          \"MessageOfTheDay\": {\n            \"Message\": \"Welcome to my ARK Server dot Net\\nPlease enjoy your stay!\"\n          }\n        }\n      }\n    },\n    \"tags\": [\n\n    ]\n  },\n  \"policy_name\": null,\n  \"policy_group\": null,\n  \"run_list\": [\n  \"role[base]\",\n  \"recipe[]\"\n]\n\n}\n
\n
\n\n

This configuration will build your GameUserSettings.ini file with the requested
\noverrided options defined above.

\n\n
\n
\n

Dependent cookbooks

\n \n \n \n \n\n\n \n
chef-steamcmd >= 0.0.0
\n\n

Contingent cookbooks

\n

There are no cookbooks that are contingent upon this one.

\n
\n
\n

Collaborator Number Metric\n
\n            

0.1.0 failed this metric

\n
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
\n \n

Contributing File Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
\n \n

Foodcritic Metric\n
\n            

0.1.0 passed this metric

\n \n

License Metric\n
\n            

0.1.0 passed this metric

\n \n

No Binaries Metric\n
\n            

0.1.0 passed this metric

\n \n

Testing File Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
\n \n

Version Tag Metric\n
\n            

0.1.0 failed this metric

\n
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
\n \n
\n

\n\n
\n
\n\n
\n \n\n
\n\n
\n\n\n\n\n

\n Details\n

\n\n
\n\n \n\n

\n Updated September 8, 2017\n Created on September 8, 2017\n

\n\n

Supported Platforms

\n
    \n
  • \n \"debian\n
  • \n
  • \n \"ubuntu\n
  • \n
\n\n\n\n

License

\n

Apache-2.0\n

\n\n

Required Chef Infra Client

\n

(>= 12.1)

\n\n\n Download Cookbook\n
\n
\n\n
\n\n
\n \n\n \n
\n
\n\n \n \n\n"} diff --git a/bench/data/groundtruth/math_1.jsonl b/bench/data/groundtruth/math_1.jsonl new file mode 100644 index 00000000..82cfd9aa --- /dev/null +++ b/bench/data/groundtruth/math_1.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "paragraph", "raw_content": "

In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field \\hat A to be an (operator-valued distributional) 1-form, we can write a smeared operator \\hat A_H in terms of the inner product on the exterior algebra as \\bigl<\\hat A,H\\bigr> (taking the test function H also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution). \\hat A projects into annihilation and creation parts, \\hat A^+ and \\hat A^- respectively, \\hat A=\\hat A^+ +\\hat A^-, for which the action on the vacuum is defined by \\hat A^+\\left|0\\right>=0, and we have the commutation relations \\Bigl[\\bigl<\\hat A^+,H\\bigr>,\\bigl<\\hat A^-,J\\bigr>\\Bigr]=\\left<H,E(J)\\right>, where \\widetilde{E(J)}(k)=2\\pi\\delta(k^2)\\theta(k_0)\\tilde J(k) projects to the positive frequency forward light-cone.

", "content": [{"c": "In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field", "t": "text"}, {"c": "\\hat A", "t": "equation-inline"}, {"c": "to be an (operator-valued distributional) 1-form, we can write a smeared operator", "t": "text"}, {"c": "\\hat A_H", "t": "equation-inline"}, {"c": "in terms of the inner product on the exterior algebra as", "t": "text"}, {"c": "\\bigl<\\hat A,H\\bigr>", "t": "equation-inline"}, {"c": "(taking the test function", "t": "text"}, {"c": "H", "t": "equation-inline"}, {"c": "also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution).", "t": "text"}, {"c": "\\hat A", "t": "equation-inline"}, {"c": "projects into annihilation and creation parts,", "t": "text"}, {"c": "\\hat A^+", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\\hat A^-", "t": "equation-inline"}, {"c": "respectively,", "t": "text"}, {"c": "\\hat A=\\hat A^+ +\\hat A^-", "t": "equation-inline"}, {"c": ", for which the action on the vacuum is defined by", "t": "text"}, {"c": "\\hat A^+\\left|0\\right>=0", "t": "equation-inline"}, {"c": ", and we have the commutation relations", "t": "text"}, {"c": "\\Bigl[\\bigl<\\hat A^+,H\\bigr>,\\bigl<\\hat A^-,J\\bigr>\\Bigr]=\\left", "t": "equation-inline"}, {"c": ", where", "t": "text"}, {"c": "\\widetilde{E(J)}(k)=2\\pi\\delta(k^2)\\theta(k_0)\\tilde J(k)", "t": "equation-inline"}, {"c": "projects to the positive frequency forward light-cone.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

The commutation relations are not positive semi-definite for arbitrary test functions $H$, $\\Bigl[\\bigl<\\hat A^+,H^*\\bigr>,\\bigl<\\hat A^-,H\\bigr>\\Bigr]\\not\\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\\delta\\hat A^+\\left|\\psi\\right>=0$, for all states $\\left|\\psi\\right>$, not just for the vacuum state.

", "content": [{"c": "The commutation relations are not positive semi-definite for arbitrary test functions $H$, $\\Bigl[\\bigl<\\hat A^+,H^*\\bigr>,\\bigl<\\hat A^-,H\\bigr>\\Bigr]\\not\\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\\delta\\hat A^+\\left|\\psi\\right>=0$, for all states $\\left|\\psi\\right>$, not just for the vacuum state.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

By the Hodge decomposition theorem, we can write the test function H uniquely as H=d\\phi+\\delta F+\\omega, where \\phi is a 0-form, F is a 2-form, and \\omega is a harmonic 1-form, so we can write\n$$\\bigl<\\hat A^+\\!,H\\bigr>\\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,d\\phi+\\delta F+\\omega\\bigr>\\left|\\psi\\right>\\!\n =\\Bigl(\\!\\bigl<\\delta\\hat A^+,\\phi\\bigr>+\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\!\\Bigr)\n \\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\left|\\psi\\right>.$$\nThe harmonic 1-form \\omega has to be zero to satisfy the Schwartz space condition, and by the left action of \\hat A^- on arbitrary states we have the same projection of the arbitrary test function H to \\delta F, so all we are left with is the electromagnetic field observable \\hat\\Phi_F=\\hat A_{\\delta F}=\\bigl<\\hat A,\\delta F\\bigr>. Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that \\Bigl[\\bigl<\\hat A^+,\\delta F^*\\bigr>,\\bigl<\\hat A^-,\\delta F\\bigr>\\Bigr]\\ge 0, using which we can use the GNS construction of a free field Hilbert space.

", "content": [{"c": "By the Hodge decomposition theorem, we can write the test function", "t": "text"}, {"c": "H", "t": "equation-inline"}, {"c": "uniquely as", "t": "text"}, {"c": "H=d\\phi+\\delta F+\\omega", "t": "equation-inline"}, {"c": ", where", "t": "text"}, {"c": "\\phi", "t": "equation-inline"}, {"c": "is a 0-form,", "t": "text"}, {"c": "F", "t": "equation-inline"}, {"c": "is a 2-form, and", "t": "text"}, {"c": "\\omega", "t": "equation-inline"}, {"c": "is a harmonic 1-form, so we can write\n$$\\bigl<\\hat A^+\\!,H\\bigr>\\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,d\\phi+\\delta F+\\omega\\bigr>\\left|\\psi\\right>\\!\n =\\Bigl(\\!\\bigl<\\delta\\hat A^+,\\phi\\bigr>+\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\!\\Bigr)\n \\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\left|\\psi\\right>.$$\nThe harmonic 1-form", "t": "text"}, {"c": "\\omega", "t": "equation-inline"}, {"c": "has to be zero to satisfy the Schwartz space condition, and by the left action of", "t": "text"}, {"c": "\\hat A^-", "t": "equation-inline"}, {"c": "on arbitrary states we have the same projection of the arbitrary test function", "t": "text"}, {"c": "H", "t": "equation-inline"}, {"c": "to", "t": "text"}, {"c": "\\delta F", "t": "equation-inline"}, {"c": ", so all we are left with is the electromagnetic field observable", "t": "text"}, {"c": "\\hat\\Phi_F=\\hat A_{\\delta F}=\\bigl<\\hat A,\\delta F\\bigr>", "t": "equation-inline"}, {"c": ". Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that", "t": "text"}, {"c": "\\Bigl[\\bigl<\\hat A^+,\\delta F^*\\bigr>,\\bigl<\\hat A^-,\\delta F\\bigr>\\Bigr]\\ge 0", "t": "equation-inline"}, {"c": ", using which we can use the GNS construction of a free field Hilbert space.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

So this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.

", "content": [{"c": "So this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.", "t": "text"}]}, {"type": "list", "raw_content": "
    ", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "
    • Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things.
      \n\u2013\u00a0David Z
      CommentedJul 18, 2011 at 3:41
    • 4
      There is no difference between your formalism and any of the standard ones. A is a one form in all of them.CommentedSep 3, 2011 at 6:46
    ", "content": {"items": [[[{"c": "Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "David Z", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jul 18, 2011 at 3:41", "t": "text"}]], [[{"c": "4", "t": "text"}, {"c": "There is no difference between your formalism and any of the standard ones. A is a one form in all of them.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Sep 3, 2011 at 6:46", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

    \nKnow someone who can answer? Share a link to this question via email, Twitter, or Facebook.

    ", "content": {"title_content": "Know someone who can answer? Share a link to this question via email , Twitter , or Facebook .", "level": "2"}}, {"type": "title", "raw_content": "

    \nBrowse other questions tagged

    ", "content": {"title_content": "Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": "
      or ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

      ", "content": {"title_content": "or ask your own question .", "level": "2"}}]], "main_html": "

      In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field \\hat A to be an (operator-valued distributional) 1-form, we can write a smeared operator \\hat A_H in terms of the inner product on the exterior algebra as \\bigl<\\hat A,H\\bigr> (taking the test function H also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution). \\hat A projects into annihilation and creation parts, \\hat A^+ and \\hat A^- respectively, \\hat A=\\hat A^+ +\\hat A^-, for which the action on the vacuum is defined by \\hat A^+\\left|0\\right>=0, and we have the commutation relations \\Bigl[\\bigl<\\hat A^+,H\\bigr>,\\bigl<\\hat A^-,J\\bigr>\\Bigr]=\\left<H,E(J)\\right>, where \\widetilde{E(J)}(k)=2\\pi\\delta(k^2)\\theta(k_0)\\tilde J(k) projects to the positive frequency forward light-cone.

      The commutation relations are not positive semi-definite for arbitrary test functions $H$, $\\Bigl[\\bigl<\\hat A^+,H^*\\bigr>,\\bigl<\\hat A^-,H\\bigr>\\Bigr]\\not\\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\\delta\\hat A^+\\left|\\psi\\right>=0$, for all states $\\left|\\psi\\right>$, not just for the vacuum state.

      By the Hodge decomposition theorem, we can write the test function H uniquely as H=d\\phi+\\delta F+\\omega, where \\phi is a 0-form, F is a 2-form, and \\omega is a harmonic 1-form, so we can write\n$$\\bigl<\\hat A^+\\!,H\\bigr>\\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,d\\phi+\\delta F+\\omega\\bigr>\\left|\\psi\\right>\\!\n =\\Bigl(\\!\\bigl<\\delta\\hat A^+,\\phi\\bigr>+\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\!\\Bigr)\n \\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\left|\\psi\\right>.$$\nThe harmonic 1-form \\omega has to be zero to satisfy the Schwartz space condition, and by the left action of \\hat A^- on arbitrary states we have the same projection of the arbitrary test function H to \\delta F, so all we are left with is the electromagnetic field observable \\hat\\Phi_F=\\hat A_{\\delta F}=\\bigl<\\hat A,\\delta F\\bigr>. Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that \\Bigl[\\bigl<\\hat A^+,\\delta F^*\\bigr>,\\bigl<\\hat A^-,\\delta F\\bigr>\\Bigr]\\ge 0, using which we can use the GNS construction of a free field Hilbert space.

      So this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.

        • Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things.
          \n\u2013\u00a0David Z
          CommentedJul 18, 2011 at 3:41
        • 4
          There is no difference between your formalism and any of the standard ones. A is a one form in all of them.CommentedSep 3, 2011 at 6:46

        \nKnow someone who can answer? Share a link to this question via email, Twitter, or Facebook.

        \nBrowse other questions tagged

          or

          ", "statics": {"paragraph": 4, "paragraph.text": 26, "paragraph.equation-inline": 22, "list": 3, "list.text": 9, "title": 3}, "url": "https://physics.stackexchange.com/questions/10098/1-form-formulation-of-quantized-electromagnetism", "content": "In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field $\\hat A$ to be an (operator-valued distributional) 1-form, we can write a smeared operator $\\hat A_H$ in terms of the inner product on the exterior algebra as $\\bigl<\\hat A,H\\bigr>$ (taking the test function $H$ also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution). $\\hat A$ projects into annihilation and creation parts, $\\hat A^+$ and $\\hat A^-$ respectively, $\\hat A=\\hat A^+ +\\hat A^-$ , for which the action on the vacuum is defined by $\\hat A^+\\left|0\\right>=0$ , and we have the commutation relations $\\Bigl[\\bigl<\\hat A^+,H\\bigr>,\\bigl<\\hat A^-,J\\bigr>\\Bigr]=\\left$ , where $\\widetilde{E(J)}(k)=2\\pi\\delta(k^2)\\theta(k_0)\\tilde J(k)$ projects to the positive frequency forward light-cone.\n\nThe commutation relations are not positive semi-definite for arbitrary test functions $H$, $\\Bigl[\\bigl<\\hat A^+,H^*\\bigr>,\\bigl<\\hat A^-,H\\bigr>\\Bigr]\\not\\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\\delta\\hat A^+\\left|\\psi\\right>=0$, for all states $\\left|\\psi\\right>$, not just for the vacuum state.\n\nBy the Hodge decomposition theorem, we can write the test function $H$ uniquely as $H=d\\phi+\\delta F+\\omega$ , where $\\phi$ is a 0-form, $F$ is a 2-form, and $\\omega$ is a harmonic 1-form, so we can write\n$$\\bigl<\\hat A^+\\!,H\\bigr>\\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,d\\phi+\\delta F+\\omega\\bigr>\\left|\\psi\\right>\\!\n =\\Bigl(\\!\\bigl<\\delta\\hat A^+,\\phi\\bigr>+\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\!\\Bigr)\n \\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\left|\\psi\\right>.$$\nThe harmonic 1-form $\\omega$ has to be zero to satisfy the Schwartz space condition, and by the left action of $\\hat A^-$ on arbitrary states we have the same projection of the arbitrary test function $H$ to $\\delta F$ , so all we are left with is the electromagnetic field observable $\\hat\\Phi_F=\\hat A_{\\delta F}=\\bigl<\\hat A,\\delta F\\bigr>$ . Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that $\\Bigl[\\bigl<\\hat A^+,\\delta F^*\\bigr>,\\bigl<\\hat A^-,\\delta F\\bigr>\\Bigr]\\ge 0$ , using which we can use the GNS construction of a free field Hilbert space.\n\nSo this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.\n\n- Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things. \u2013 David Z Commented Jul 18, 2011 at 3:41\n- 4 There is no difference between your formalism and any of the standard ones. A is a one form in all of them. Commented Sep 3, 2011 at 6:46\n\n## Know someone who can answer? Share a link to this question via email , Twitter , or Facebook .\n\n## Browse other questions tagged\n\n## or ask your own question .\n", "html": "\n\n\n\n\n \n\n \n\n quantum field theory - 1-form formulation of quantized electromagnetism - Physics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n\n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
          \n\n\n\n\n\n
          \n
          \n
          \n\n\n
          \n Skip to main content\n\t
          \n\t\t\t\n\t\t\t
          \n\t\t\t\t
          \n\t\t\t
          \n\t\t\t\n\t\t\t
          \n\t\t\t\t
          \n\t\t\t\t\t

          Stack Exchange Network

          \n\t\t\t\t\t

          \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

          \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
          \n\t\t\t
          \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
          \n
          \n\n\t\n\n\n\n\n\n
          \n
          \n
          \n \n Ask questions and share your thoughts on the future of Stack Overflow. Join our first live community AMA this Wednesday, February 26th, at 3 PM ET.\n \n Learn more\n
          \n \n
          \n
          \n \n\n\n\n
          \n
          \n \n \"Physics\"\n \n\n
          \n
          \n\n
          \n\n\n\n\n
          \n
          \n \n
          \n\n\n\n
          \n
          \n\n
          \n

          Teams

          \n

          Q&A for work

          \n

          Connect and share knowledge within a single location that is structured and easy to search.

          \n \n Learn more about Teams\n \n
          \n\n
          \n \n
          \n
          \n\n\n\n\n
          \n\n\n\n
          \n\n\n\n\n
          \n \n\n
          \n\n\n \n
          \n
          \n Asked\n \n
          \n
          \n Modified\n 13 years, 9 months ago\n
          \n
          \n Viewed\n 460 times\n
          \n
          \n\n\n\n
          \n\n
          \n \n
          \n
          \n\t\t
          \n
          \n\n
          \n
          \n\n
          \n \n \n
          \n7
          \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
          \n\n
          \n\n\n\n
          \n $\\begingroup$\n
          \n\n

          In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field $\\hat A$ to be an (operator-valued distributional) 1-form, we can write a smeared operator $\\hat A_H$ in terms of the inner product on the exterior algebra as $\\bigl<\\hat A,H\\bigr>$ (taking the test function $H$ also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution). $\\hat A$ projects into annihilation and creation parts, $\\hat A^+$ and $\\hat A^-$ respectively, $\\hat A=\\hat A^+ +\\hat A^-$, for which the action on the vacuum is defined by $\\hat A^+\\left|0\\right>=0$, and we have the commutation relations $\\Bigl[\\bigl<\\hat A^+,H\\bigr>,\\bigl<\\hat A^-,J\\bigr>\\Bigr]=\\left<H,E(J)\\right>$, where $\\widetilde{E(J)}(k)=2\\pi\\delta(k^2)\\theta(k_0)\\tilde J(k)$ projects to the positive frequency forward light-cone.

          \n\n

          The commutation relations are not positive semi-definite for arbitrary test functions $H$, $\\Bigl[\\bigl<\\hat A^+,H^*\\bigr>,\\bigl<\\hat A^-,H\\bigr>\\Bigr]\\not\\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\\delta\\hat A^+\\left|\\psi\\right>=0$, for all states $\\left|\\psi\\right>$, not just for the vacuum state.

          \n\n

          By the Hodge decomposition theorem, we can write the test function $H$ uniquely as $H=d\\phi+\\delta F+\\omega$, where $\\phi$ is a 0-form, $F$ is a 2-form, and $\\omega$ is a harmonic 1-form, so we can write\n$$\\bigl<\\hat A^+\\!,H\\bigr>\\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,d\\phi+\\delta F+\\omega\\bigr>\\left|\\psi\\right>\\!\n =\\Bigl(\\!\\bigl<\\delta\\hat A^+,\\phi\\bigr>+\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\!\\Bigr)\n \\left|\\psi\\right>\\!\n =\\bigl<\\hat A^+\\!,\\delta F+\\omega\\bigr>\\left|\\psi\\right>.$$\nThe harmonic 1-form $\\omega$ has to be zero to satisfy the Schwartz space condition, and by the left action of $\\hat A^-$ on arbitrary states we have the same projection of the arbitrary test function $H$ to $\\delta F$, so all we are left with is the electromagnetic field observable $\\hat\\Phi_F=\\hat A_{\\delta F}=\\bigl<\\hat A,\\delta F\\bigr>$. Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that $\\Bigl[\\bigl<\\hat A^+,\\delta F^*\\bigr>,\\bigl<\\hat A^-,\\delta F\\bigr>\\Bigr]\\ge 0$, using which we can use the GNS construction of a free field Hilbert space.

          \n\n

          So this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.

          \n
          \n\n \n\n
          \n
          \n
          \n\n\n\n
          \n\n
          \n\n
          \n Share\n
          \n\n
          \n \n
          \n\n \n\n
          \n \n
          \n\n\n\n\n\n\n
          \n
          \n
          \n
          \n\n
          \n
          \n
          \n
          \n asked May 19, 2011 at 17:01\n
          \n\n
          \n
          \n
          \"Peter
          \n
          \n
          \n Peter MorganPeter Morgan\n
          \n 9,98622 gold badges2626 silver badges4141 bronze badges\n
          \n
          \n
          \n\n\n
          \n
          \n
          \n $\\endgroup$\n
          \n\n\n\n\n 2\n
          \n
          \n
            \n\n
          • \n
            \n
            \n
            \n
            \n
            \n
            \n $\\begingroup$\n Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things.\n $\\endgroup$\n
            \n– David Z\n
            \n \n Commented\n Jul 18, 2011 at 3:41\n \n
            \n
            \n
          • \n
          • \n
            \n
            \n 4\n
            \n
            \n
            \n
            \n $\\begingroup$\n There is no difference between your formalism and any of the standard ones. A is a one form in all of them.\n $\\endgroup$\n
            \n– Ron Maimon\n
            \n \n Commented\n Sep 3, 2011 at 6:46\n \n
            \n
            \n
          • \n\n
          \n\t
          \n\n \n
          \n
          \n\n
          \n\n\n\n\n
          \n \n
          \n
          \n
          \n

          \n 0\n

          \n
          \n
          \n\n\n
          \n
          \n \n \n Reset to default\n \n
          \n
          \n \n
          \n
          \n\n\n
          \n
          \n
          \n\n\n\n

          \nKnow someone who can answer? Share a link to this question via email, Twitter, or Facebook.

          \n \n
          \n \n \n \n

          \n Your Answer\n

          \n\n\n\n\n\n
          \n\n\n \n\n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n
          \n
          \n\n \n\n\n\n
          \n
          Draft saved
          \n
          Draft discarded
          \n
          \n\n\n
          \n
          \n\n
          \n \n \n
          \n\n
          \n\n\n
          \n
          \n
          \n
          \n

          Sign up or log in

          \n \n
          \n Sign up using Google\n
          \n
          \n Sign up using Email and Password\n
          \n
          \n \n \n \n
          \n

          Post as a guest

          \n
          \n
          \n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n

          Required, but never shown

          \n
          \n
          \n
          \n \n
          \n
          \n
          \n\n
          \n
          \n
          \n \n \n\n
          \n\n
          \n \n \n

          \n By clicking \u201cPost Your Answer\u201d, you agree to our terms of service and acknowledge you have read our privacy policy.\n

          \n
          \n
          \n
          \n\n\n

          \n \n

          \n
          \n
          \n\n\n
          \n\n\n\n \n\n\n
          \n
          \n\t\t
          \n
          \n
          \n\t

          Linked

          \n\t \n
          \n\n\n\n\n\n \n \n\n\n\n\n\n
          \n

          \n \n Hot Network Questions\n \n

          \n \n\n \n more hot questions\n \n
          \n\n \n \n\n
          \n\n
          \n\n
          \n\n\n\n\n\n\n\n\n
          \n
          \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/math_katex_latex_1.jsonl b/bench/data/groundtruth/math_katex_latex_1.jsonl index 77eb2310..7de24ba4 100644 --- a/bench/data/groundtruth/math_katex_latex_1.jsonl +++ b/bench/data/groundtruth/math_katex_latex_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

          Solve the cubic equation:

          ", "content": {"title_content": "Solve the cubic equation:", "level": "1"}}, {"type": "title", "raw_content": "

          $$x^3+2x^2+8x+1=0 $$

          ", "content": {"title_content": "$$x^3+2x^2+8x+1=0 $$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Quick Answer

          ", "content": [{"c": "Quick Answer", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Since the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.

          ", "content": [{"c": "Since the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$ \\Delta=14.472222222222$$

          ", "content": {"math_content": "\\Delta=14.472222222222", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          In decimals,

          ", "content": [{"c": "In decimals,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Detailed Steps on Solution

          ", "content": [{"c": "Detailed Steps on Solution", "t": "text"}]}, {"type": "title", "raw_content": "

          1. Convert to depressed cubic equation

          ", "content": {"title_content": "1. Convert to depressed cubic equation", "level": "2"}}, {"type": "paragraph", "raw_content": "

          The idea is to convert general form of cubic equation

          ", "content": [{"c": "The idea is to convert general form of cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$ax^3+bx^2+cx+d = 0$$

          ", "content": {"math_content": "ax^3+bx^2+cx+d = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          to the form without quadratic term.

          ", "content": [{"c": "to the form without quadratic term.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3+pt+q = 0$$

          ", "content": {"math_content": "t^3+pt+q = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to

          ", "content": [{"c": "By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0 $$

          ", "content": {"math_content": "t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare with the depressed cubic equation. Then,

          ", "content": [{"c": "Compare with the depressed cubic equation. Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$p = \\dfrac{3ac-b^2}{3a^2}$$

          ", "content": {"math_content": "p = \\dfrac{3ac-b^2}{3a^2}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$q = \\dfrac{2b^3-9abc+27a^2d}{27a^3} $$

          ", "content": {"math_content": "q = \\dfrac{2b^3-9abc+27a^2d}{27a^3}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substitute the values of coefficients, $$p, q$$ is obtained as

          ", "content": [{"c": "Substitute the values of coefficients, $$p, q$$ is obtained as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}$$

          ", "content": {"math_content": "p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}$$

          ", "content": {"math_content": "q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          Use the substitution to transform

          ", "content": {"title_content": "Use the substitution to transform", "level": "3"}}, {"type": "paragraph", "raw_content": "

          Let $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          ", "content": [{"c": "Let $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3 +pt+q=0$$

          ", "content": {"math_content": "t^3 +pt+q=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Let $$x=t-\\dfrac{2}{3}$$

          ", "content": [{"c": "Let $$x=t-\\dfrac{2}{3}$$", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to

          ", "content": [{"c": "The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          ", "content": {"math_content": "t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          2. Cardano's solution

          ", "content": {"title_content": "2. Cardano's solution", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Let $$t=u-v$$

          ", "content": [{"c": "Let $$t=u-v$$", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          ", "content": [{"c": "Cube both sides and extract common factor from two middle terms after expanding the bracket.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Since $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.

          ", "content": [{"c": "Since $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$x^3+3uvx-u^3+v^3=0$$

          ", "content": {"math_content": "x^3+3uvx-u^3+v^3=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare the cubic equation with the original one (1)

          ", "content": [{"c": "Compare the cubic equation with the original one (1)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          $$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation

          ", "content": [{"c": "$$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}$$

          ", "content": {"math_content": "\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Simplifying gives,

          ", "content": [{"c": "Simplifying gives,", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2

          ", "content": [{"c": "$$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Let $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.

          ", "content": [{"c": "Let $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0$$

          ", "content": {"math_content": "m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          ", "content": [{"c": "Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          $$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,

          ", "content": [{"c": "$$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Now we have,

          ", "content": [{"c": "Now we have,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$ and $$v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$

          ", "content": {"math_content": "u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6} and v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Evaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          ", "content": [{"c": "Evaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          If $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.

          ", "content": [{"c": "If $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Similary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.

          ", "content": [{"c": "Similary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          For $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.

          ", "content": [{"c": "For $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Verification for the redicand in $$v$$.

          ", "content": [{"c": "Verification for the redicand in $$v$$.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Since $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$

          ", "content": [{"c": "Since $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          3. Vieta's Substitution

          ", "content": {"title_content": "3. Vieta's Substitution", "level": "2"}}, {"type": "paragraph", "raw_content": "

          In Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          ", "content": [{"c": "In Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t=u-\\dfrac{p}{3u}$$

          ", "content": {"math_content": "t=u-\\dfrac{p}{3u}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation

          ", "content": [{"c": "Substitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0$$

          ", "content": {"math_content": "\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Expand brackets and cancel the like terms

          ", "content": [{"c": "Expand brackets and cancel the like terms", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0$$

          ", "content": {"math_content": "u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Then we get the same equation as (2)

          ", "content": [{"c": "Then we get the same equation as (2)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$

          ", "content": {"math_content": "u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          The rest of the steps will be the same as those of Cardano's solution

          ", "content": [{"c": "The rest of the steps will be the same as those of Cardano's solution", "t": "text"}]}, {"type": "title", "raw_content": "

          4. Euler's Solution

          ", "content": {"title_content": "4. Euler's Solution", "level": "2"}}, {"type": "title", "raw_content": "

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          ", "content": {"title_content": "$$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          ", "content": [{"c": "Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          $$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3

          ", "content": [{"c": "$$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Let the root of the cubic equation be the sum of two cubic roots

          ", "content": [{"c": "Let the root of the cubic equation be the sum of two cubic roots", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          $$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4

          ", "content": [{"c": "$$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          in which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation

          ", "content": [{"c": "in which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          $$z^2-\\alpha z+ \u03b2=0 $$5

          ", "content": [{"c": "$$z^2-\\alpha z+ \u03b2=0 $$5", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Using Vieta's Formula, the following equations are established.

          ", "content": [{"c": "Using Vieta's Formula, the following equations are established.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2 $$

          ", "content": {"math_content": "r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          To determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)

          ", "content": [{"c": "To determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2 $$

          ", "content": {"math_content": "t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substituting, the equation is simplified to

          ", "content": [{"c": "Substituting, the equation is simplified to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t^3=3\\sqrt[3]{\u03b2}t+\\alpha $$

          ", "content": {"math_content": "t^3=3\\sqrt[3]{\u03b2}t+\\alpha", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare the cubic equation with (3), the following equations are established

          ", "content": [{"c": "Compare the cubic equation with (3), the following equations are established", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Solving for $$\u03b2$$ gives

          ", "content": [{"c": "Solving for $$\u03b2$$ gives", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\u03b2=-\\dfrac{8000}{729} $$

          ", "content": {"math_content": "\u03b2=-\\dfrac{8000}{729}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          So the quadratic equation (5) is determined as

          ", "content": [{"c": "So the quadratic equation (5) is determined as", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          $$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6

          ", "content": [{"c": "$$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Solving the quadratic equation yields

          ", "content": [{"c": "Solving the quadratic equation yields", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          ", "content": [{"c": "Therefore, one of the roots of the cubic equation could be obtained from (4).", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          ", "content": {"math_content": "t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in decimals,

          ", "content": [{"c": "in decimals,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t_1=0.53778143658824 $$

          ", "content": {"math_content": "t_1=0.53778143658824", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          However, since the cube root of a quantity has triple values,

          ", "content": [{"c": "However, since the cube root of a quantity has triple values,", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          The other two roots could be determined as,

          ", "content": [{"c": "The other two roots could be determined as,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          ", "content": {"math_content": "t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          ", "content": {"math_content": "t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          ", "content": [{"c": "Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          For the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$

          ", "content": [{"c": "For the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$", "t": "text"}]}, {"type": "title", "raw_content": "

          Calculate the discriminant

          ", "content": {"title_content": "Calculate the discriminant", "level": "3"}}, {"type": "paragraph", "raw_content": "

          The nature of the roots are determined by the sign of the discriminant.

          ", "content": [{"c": "The nature of the roots are determined by the sign of the discriminant.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          4.1 Use the root formula directly

          ", "content": {"title_content": "4.1 Use the root formula directly", "level": "3"}}, {"type": "paragraph", "raw_content": "

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          ", "content": [{"c": "If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}$$

          ", "content": {"math_content": "t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$

          ", "content": [{"c": "in which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Substitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,

          ", "content": [{"c": "Substitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          If we denote

          ", "content": [{"c": "If we denote", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          ", "content": {"math_content": "R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          ", "content": {"math_content": "\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          then,

          ", "content": [{"c": "then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}$$, $$\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}$$

          ", "content": {"math_content": "\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}, \\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          ", "content": {"math_content": "\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          Roots of the general cubic equation

          ", "content": {"title_content": "Roots of the general cubic equation", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Since $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives

          ", "content": [{"c": "Since $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$x_1 = t_1-\\dfrac{2}{3}$$

          ", "content": {"math_content": "x_1 = t_1-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$x_2 = t_2-\\dfrac{2}{3}$$

          ", "content": {"math_content": "x_2 = t_2-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "

          $$x_3 = t_3-\\dfrac{2}{3}$$

          ", "content": {"math_content": "x_3 = t_3-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          5. Summary

          ", "content": {"title_content": "5. Summary", "level": "2"}}, {"type": "paragraph", "raw_content": "

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.

          ", "content": [{"c": "In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in decimal notation,

          ", "content": [{"c": "in decimal notation,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          ", "content": {"math_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          ", "content": {"title_content": "6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Since the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.

          ", "content": [{"c": "Since the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.", "t": "text"}]}, {"type": "title", "raw_content": "

          More cubic equations

          ", "content": {"title_content": "More cubic equations", "level": "2"}}]], "main_html": "

          Solve the cubic equation:

          $$x^3+2x^2+8x+1=0 $$

          Quick Answer

          Since the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.

          $$ \\Delta=14.472222222222$$

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          In decimals,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          Detailed Steps on Solution

          1. Convert to depressed cubic equation

          The idea is to convert general form of cubic equation

          $$ax^3+bx^2+cx+d = 0$$

          to the form without quadratic term.

          $$t^3+pt+q = 0$$

          By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to

          $$t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0 $$

          Compare with the depressed cubic equation. Then,

          $$p = \\dfrac{3ac-b^2}{3a^2}$$

          $$q = \\dfrac{2b^3-9abc+27a^2d}{27a^3} $$

          Substitute the values of coefficients, $$p, q$$ is obtained as

          $$p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}$$

          $$q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}$$

          Use the substitution to transform

          Let $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          $$t^3 +pt+q=0$$

          Let $$x=t-\\dfrac{2}{3}$$

          The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to

          $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          2. Cardano's solution

          Let $$t=u-v$$

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          $$\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}$$

          Since $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.

          $$x^3+3uvx-u^3+v^3=0$$

          Compare the cubic equation with the original one (1)

          $$\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}$$

          $$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation

          $$\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}$$

          Simplifying gives,

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2

          Let $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.

          $$m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0$$

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          $$\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          $$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,

          $$\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          Now we have,

          $$u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$ and $$v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$

          Evaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          If $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.

          $$\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}$$

          Similary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.

          $$\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          For $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.

          $$\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          Verification for the redicand in $$v$$.

          $$\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          Since $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$

          $$\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          3. Vieta's Substitution

          In Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          $$t=u-\\dfrac{p}{3u}$$

          Substitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation

          $$\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0$$

          Expand brackets and cancel the like terms

          $$u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0$$

          Then we get the same equation as (2)

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$

          The rest of the steps will be the same as those of Cardano's solution

          4. Euler's Solution

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          $$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3

          Let the root of the cubic equation be the sum of two cubic roots

          $$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4

          in which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation

          $$z^2-\\alpha z+ \u03b2=0 $$5

          Using Vieta's Formula, the following equations are established.

          $$r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2 $$

          To determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)

          $$t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2 $$

          Substituting, the equation is simplified to

          $$t^3=3\\sqrt[3]{\u03b2}t+\\alpha $$

          Compare the cubic equation with (3), the following equations are established

          $$\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}$$

          Solving for $$\u03b2$$ gives

          $$\u03b2=-\\dfrac{8000}{729} $$

          So the quadratic equation (5) is determined as

          $$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6

          Solving the quadratic equation yields

          $$\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}$$

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          $$t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          in decimals,

          $$t_1=0.53778143658824 $$

          However, since the cube root of a quantity has triple values,

          The other two roots could be determined as,

          $$t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          $$t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          For the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$

          Calculate the discriminant

          The nature of the roots are determined by the sign of the discriminant.

          $$\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}$$

          4.1 Use the root formula directly

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          $$t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}$$

          in which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$

          Substitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,

          $$\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          If we denote

          $$R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          $$\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          then,

          $$\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}$$, $$\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}$$

          $$\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          Roots of the general cubic equation

          Since $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives

          $$x_1 = t_1-\\dfrac{2}{3}$$

          $$x_2 = t_2-\\dfrac{2}{3}$$

          $$x_3 = t_3-\\dfrac{2}{3}$$

          5. Summary

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          in decimal notation,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          Since the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.

          More cubic equations

          ", "statics": {"title": 14, "paragraph": 64, "paragraph.text": 64, "equation-interline": 54}, "url": "https://uniteasy.com/solver/cubicequation/x%5E3%2B2x%5E2%2B8x%2B1%3D0/", "content": "# Solve the cubic equation:\n\n## $$x^3+2x^2+8x+1=0 $$\n\nQuick Answer\n\nSince the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.\n\n$$\n\\Delta=14.472222222222\n$$\n\n$$\n\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}\n$$\n\nIn decimals,\n\n$$\n\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}\n$$\n\nDetailed Steps on Solution\n\n## 1. Convert to depressed cubic equation\n\nThe idea is to convert general form of cubic equation\n\n$$\nax^3+bx^2+cx+d = 0\n$$\n\nto the form without quadratic term.\n\n$$\nt^3+pt+q = 0\n$$\n\nBy substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to\n\n$$\nt^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0\n$$\n\nCompare with the depressed cubic equation. Then,\n\n$$\np = \\dfrac{3ac-b^2}{3a^2}\n$$\n\n$$\nq = \\dfrac{2b^3-9abc+27a^2d}{27a^3}\n$$\n\nSubstitute the values of coefficients, $$p, q$$ is obtained as\n\n$$\np = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}\n$$\n\n$$\nq = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}\n$$\n\n### Use the substitution to transform\n\nLet $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.\n\n$$\nt^3 +pt+q=0\n$$\n\nLet $$x=t-\\dfrac{2}{3}$$\n\nThe cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to\n\n$$\nt^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0\n$$\n\n## 2. Cardano's solution\n\nLet $$t=u-v$$\n\nCube both sides and extract common factor from two middle terms after expanding the bracket.\n\n$$\n\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}\n$$\n\nSince $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.\n\n$$\nx^3+3uvx-u^3+v^3=0\n$$\n\nCompare the cubic equation with the original one (1)\n\n$$\n\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}\n$$\n\n$$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation\n\n$$\n\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}\n$$\n\nSimplifying gives,\n\n$$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2\n\nLet $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.\n\n$$\nm^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0\n$$\n\nSovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.\n\n$$\n\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}\n$$\n\n$$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,\n\n$$\n\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}\n$$\n\nNow we have,\n\n$$\nu^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6} and v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\n$$\n\nEvaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.\n\nIf $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.\n\n$$\n\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}\n$$\n\nSimilary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.\n\n$$\n\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}\n$$\n\nFor $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.\n\n$$\n\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}\n$$\n\nVerification for the redicand in $$v$$.\n\n$$\n\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\nSince $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$\n\n$$\n\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n## 3. Vieta's Substitution\n\nIn Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.\n\n$$\nt=u-\\dfrac{p}{3u}\n$$\n\nSubstitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation\n\n$$\n\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0\n$$\n\nExpand brackets and cancel the like terms\n\n$$\nu^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0\n$$\n\nThen we get the same equation as (2)\n\n$$\nu^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0\n$$\n\nThe rest of the steps will be the same as those of Cardano's solution\n\n## 4. Euler's Solution\n\n## $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$\n\nMove the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.\n\n$$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3\n\nLet the root of the cubic equation be the sum of two cubic roots\n\n$$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4\n\nin which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation\n\n$$z^2-\\alpha z+ \u03b2=0 $$5\n\nUsing Vieta's Formula, the following equations are established.\n\n$$\nr_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2\n$$\n\nTo determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)\n\n$$\nt^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2\n$$\n\nSubstituting, the equation is simplified to\n\n$$\nt^3=3\\sqrt[3]{\u03b2}t+\\alpha\n$$\n\nCompare the cubic equation with (3), the following equations are established\n\n$$\n\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}\n$$\n\nSolving for $$\u03b2$$ gives\n\n$$\n\u03b2=-\\dfrac{8000}{729}\n$$\n\nSo the quadratic equation (5) is determined as\n\n$$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6\n\nSolving the quadratic equation yields\n\n$$\n\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}\n$$\n\nTherefore, one of the roots of the cubic equation could be obtained from (4).\n\n$$\nt_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\nin decimals,\n\n$$\nt_1=0.53778143658824\n$$\n\nHowever, since the cube root of a quantity has triple values,\n\nThe other two roots could be determined as,\n\n$$\nt_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\n$$\nt_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\nCombining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.\n\nFor the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$\n\n### Calculate the discriminant\n\nThe nature of the roots are determined by the sign of the discriminant.\n\n$$\n\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}\n$$\n\n### 4.1 Use the root formula directly\n\nIf the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.\n\n$$\nt_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}\n$$\n\nin which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$\n\nSubstitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,\n\n$$\n\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\nIf we denote\n\n$$\nR = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }\n$$\n\n$$\n\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }\n$$\n\nthen,\n\n$$\n\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}, \\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\n$$\n\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n## Roots of the general cubic equation\n\nSince $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives\n\n$$\nx_1 = t_1-\\dfrac{2}{3}\n$$\n\n$$\nx_2 = t_2-\\dfrac{2}{3}\n$$\n\n$$\nx_3 = t_3-\\dfrac{2}{3}\n$$\n\n## 5. Summary\n\nIn summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.\n\n$$\n\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}\n$$\n\nin decimal notation,\n\n$$\n\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}\n$$\n\n## 6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$\n\nSince the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.\n\n## More cubic equations\n", "html": "\n\n\n\n\n\nSolve x^3+2x^2+8x+1=0 | Uniteasy.com\n\n\n\n\n\n\n\n\n\n\n\n \n
          \n\t
          \n\t\t\n\t\t\t\t\n\t\t\t\t\t\t
            \n\t\t
          • \n\t\t
          \n\t\t\t\t\n\t
          \n
          \n\n\n
          \n\t
          \n
          \n
          \n

          Solve the cubic equation:

          \n

          $$x^3+2x^2+8x+1=0 $$

          \n

          Quick Answer

          \n

          Since the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.

          $$ \\Delta=14.472222222222$$

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          In decimals,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          Detailed Steps on Solution

          1. Convert to depressed cubic equation

          The idea is to convert general form of cubic equation

          $$ax^3+bx^2+cx+d = 0$$

          to the form without quadratic term.

          $$t^3+pt+q = 0$$

          By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to

          $$t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0 $$

          Compare with the depressed cubic equation. Then,

          $$p = \\dfrac{3ac-b^2}{3a^2}$$

          $$q = \\dfrac{2b^3-9abc+27a^2d}{27a^3} $$

          Substitute the values of coefficients, $$p, q$$ is obtained as

          $$p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}$$

          $$q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}$$

          Use the substitution to transform

          Let $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          $$t^3 +pt+q=0$$

          Let $$x=t-\\dfrac{2}{3}$$

          The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to

          $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          2. Cardano's solution

          Let $$t=u-v$$

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          $$\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}$$

          Since $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.

          $$x^3+3uvx-u^3+v^3=0$$

          Compare the cubic equation with the original one (1)

          $$\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}$$

          $$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation

          $$\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}$$

          Simplifying gives,

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2

          Let $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.

          $$m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0$$

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          $$\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          $$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,

          $$\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          Now we have,

          $$u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$ and $$v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$

          Evaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          If $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.

          $$\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}$$

          Similary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.

          $$\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          For $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.

          $$\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          Verification for the redicand in $$v$$.

          $$\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          Since $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$

          $$\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          3. Vieta's Substitution

          In Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          $$t=u-\\dfrac{p}{3u}$$

          Substitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation

          $$\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0$$

          Expand brackets and cancel the like terms

          $$u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0$$

          Then we get the same equation as (2)

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$

          The rest of the steps will be the same as those of Cardano's solution

          4. Euler's Solution

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          $$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3

          Let the root of the cubic equation be the sum of two cubic roots

          $$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4

          in which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation

          $$z^2-\\alpha z+ \u03b2=0 $$5

          Using Vieta's Formula, the following equations are established.

          $$r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2 $$

          To determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)

          $$t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2 $$

          Substituting, the equation is simplified to

          $$t^3=3\\sqrt[3]{\u03b2}t+\\alpha $$

          Compare the cubic equation with (3), the following equations are established

          $$\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}$$

          Solving for $$\u03b2$$ gives

          $$\u03b2=-\\dfrac{8000}{729} $$

          So the quadratic equation (5) is determined as

          $$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6

          Solving the quadratic equation yields

          $$\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}$$

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          $$t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          in decimals,

          $$t_1=0.53778143658824 $$

          However, since the cube root of a quantity has triple values,

          The other two roots could be determined as,

          $$t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          $$t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          For the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$

          Calculate the discriminant

          The nature of the roots are determined by the sign of the discriminant.

          $$\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}$$

          4.1 Use the root formula directly

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          $$t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}$$

          in which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$

          Substitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,

          $$\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          If we denote

          $$R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          $$\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          then,

          $$\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}$$, $$\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}$$

          $$\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          Roots of the general cubic equation

          Since $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives

          $$x_1 = t_1-\\dfrac{2}{3}$$

          $$x_2 = t_2-\\dfrac{2}{3}$$

          $$x_3 = t_3-\\dfrac{2}{3}$$

          5. Summary

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          in decimal notation,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          Since the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.

          \n\n\n\n\n\n\n
          \n
          \n\n
          \n

          More cubic equations

          \n\n
          \n
          \n
          \n
          \n
          \n\n
          \nScroll to Top\n
          \n
          \n\n
          \u00a9 2023 Math Solution. All Rights Reserved.\n
          \n \n\n \n\n\n
          \n
          \n\n\n"} +{"content_list": [[{"type": "title", "raw_content": "

          Solve the cubic equation:

          ", "content": {"title_content": "Solve the cubic equation:", "level": "1"}}, {"type": "title", "raw_content": "

          $$x^3+2x^2+8x+1=0 $$

          ", "content": {"title_content": "$$x^3+2x^2+8x+1=0 $$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Quick Answer

          ", "content": [{"c": "Quick Answer", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Since the discriminant

          ", "content": [{"c": "Since the discriminant", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\Delta >0", "content": {"math_content": "\\Delta >0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , the cubic equation has one real root and two conjugate complex roots.

          ", "content": [{"c": ", the cubic equation has one real root and two conjugate complex roots.", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \\Delta=14.472222222222", "content": {"math_content": "\\Delta=14.472222222222", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "content": {"math_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          In decimals,

          ", "content": [{"c": "In decimals,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "content": {"math_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Detailed Steps on Solution

          ", "content": [{"c": "Detailed Steps on Solution", "t": "text"}]}, {"type": "title", "raw_content": "

          1. Convert to depressed cubic equation

          ", "content": {"title_content": "1. Convert to depressed cubic equation", "level": "2"}}, {"type": "paragraph", "raw_content": "

          The idea is to convert general form of cubic equation

          ", "content": [{"c": "The idea is to convert general form of cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "ax^3+bx^2+cx+d = 0", "content": {"math_content": "ax^3+bx^2+cx+d = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          to the form without quadratic term.

          ", "content": [{"c": "to the form without quadratic term.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3+pt+q = 0", "content": {"math_content": "t^3+pt+q = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          By substituting

          ", "content": [{"c": "By substituting", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x", "content": {"math_content": "x", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          with

          ", "content": [{"c": "with", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t - \\dfrac{b}{3a}", "content": {"math_content": "t - \\dfrac{b}{3a}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , the general cubic equation could be transformed to

          ", "content": [{"c": ", the general cubic equation could be transformed to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0 ", "content": {"math_content": "t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare with the depressed cubic equation. Then,

          ", "content": [{"c": "Compare with the depressed cubic equation. Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "p = \\dfrac{3ac-b^2}{3a^2}", "content": {"math_content": "p = \\dfrac{3ac-b^2}{3a^2}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "q = \\dfrac{2b^3-9abc+27a^2d}{27a^3} ", "content": {"math_content": "q = \\dfrac{2b^3-9abc+27a^2d}{27a^3}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substitute the values of coefficients,

          ", "content": [{"c": "Substitute the values of coefficients,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "p, q", "content": {"math_content": "p, q", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          is obtained as

          ", "content": [{"c": "is obtained as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}", "content": {"math_content": "p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}", "content": {"math_content": "q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          Use the substitution to transform

          ", "content": {"title_content": "Use the substitution to transform", "level": "3"}}, {"type": "paragraph", "raw_content": "

          Let

          ", "content": [{"c": "Let", "t": "text"}]}, {"type": "equation-interline", "raw_content": "p", "content": {"math_content": "p", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "q", "content": {"math_content": "q", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          ", "content": [{"c": "being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3 +pt+q=0", "content": {"math_content": "t^3 +pt+q=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Let

          ", "content": [{"c": "Let", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x=t-\\dfrac{2}{3}", "content": {"math_content": "x=t-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          The cubic equation

          ", "content": [{"c": "The cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x\u00b3 + 2x\u00b2 + 8x + 1=0", "content": {"math_content": "x\u00b3 + 2x\u00b2 + 8x + 1=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          is transformed to

          ", "content": [{"c": "is transformed to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0", "content": {"math_content": "t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          2. Cardano's solution

          ", "content": {"title_content": "2. Cardano's solution", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Let

          ", "content": [{"c": "Let", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t=u-v", "content": {"math_content": "t=u-v", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          ", "content": [{"c": "Cube both sides and extract common factor from two middle terms after expanding the bracket.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Since

          ", "content": [{"c": "Since", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u-v=t", "content": {"math_content": "u-v=t", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , substitution gives a linear term for the equation.\n Rearrange terms.

          ", "content": [{"c": ", substitution gives a linear term for the equation.\n Rearrange terms.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x^3+3uvx-u^3+v^3=0", "content": {"math_content": "x^3+3uvx-u^3+v^3=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare the cubic equation with the original one (1)

          ", "content": [{"c": "Compare the cubic equation with the original one (1)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "v=\\dfrac{20}{9u}", "content": {"math_content": "v=\\dfrac{20}{9u}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          gives relationship between the two variables. Substitute the value of

          ", "content": [{"c": "gives relationship between the two variables. Substitute the value of", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v", "content": {"math_content": "v", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          to the second equation

          ", "content": [{"c": "to the second equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}", "content": {"math_content": "\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Simplifying gives,

          ", "content": [{"c": "Simplifying gives,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0", "content": {"math_content": "u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          2

          ", "content": [{"c": "2", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Let

          ", "content": [{"c": "Let", "t": "text"}]}, {"type": "equation-interline", "raw_content": "m=u^3", "content": {"math_content": "m=u^3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by

          ", "content": [{"c": ", then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v^3=-\\dfrac{101}{27}+u^3", "content": {"math_content": "v^3=-\\dfrac{101}{27}+u^3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          .

          ", "content": [{"c": ".", "t": "text"}]}, {"type": "equation-interline", "raw_content": "m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0", "content": {"math_content": "m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          ", "content": [{"c": "Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "v^3", "content": {"math_content": "v^3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          can be determined by the equation we deduced

          ", "content": [{"c": "can be determined by the equation we deduced", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v^3-u^3=-\\dfrac{101}{27}", "content": {"math_content": "v^3-u^3=-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          . Then,

          ", "content": [{"c": ". Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Now we have,

          ", "content": [{"c": "Now we have,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}", "content": {"math_content": "u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}", "content": {"math_content": "v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Evaluating the simplest cubic equation

          ", "content": [{"c": "Evaluating the simplest cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x^3-A=0", "content": {"math_content": "x^3-A=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          ,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          ", "content": [{"c": ",\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          If

          ", "content": [{"c": "If", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}", "content": {"math_content": "\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , then its reciprocal is equal to its conjugate,

          ", "content": [{"c": ", then its reciprocal is equal to its conjugate,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\dfrac{1}{\u03c9}=\\overline{\u03c9}", "content": {"math_content": "\\dfrac{1}{\u03c9}=\\overline{\u03c9}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          .

          ", "content": [{"c": ".", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Similary, taking cubic root for

          ", "content": [{"c": "Similary, taking cubic root for", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u^3", "content": {"math_content": "u^3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v^3", "content": {"math_content": "v^3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          also gives 3 roots.

          ", "content": [{"c": "also gives 3 roots.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          For

          ", "content": [{"c": "For", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v_2", "content": {"math_content": "v_2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and

          ", "content": [{"c": "and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u_3", "content": {"math_content": "u_3", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , which is the same in value.

          ", "content": [{"c": ", which is the same in value.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Verification for the redicand in

          ", "content": [{"c": "Verification for the redicand in", "t": "text"}]}, {"type": "equation-interline", "raw_content": "v", "content": {"math_content": "v", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          .

          ", "content": [{"c": ".", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Since

          ", "content": [{"c": "Since", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x=u-v", "content": {"math_content": "x=u-v", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , combining the real and imaginary parts gives\n 3 results for

          ", "content": [{"c": ", combining the real and imaginary parts gives\n 3 results for", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t", "content": {"math_content": "t", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          3. Vieta's Substitution

          ", "content": {"title_content": "3. Vieta's Substitution", "level": "2"}}, {"type": "paragraph", "raw_content": "

          In Cardano' solution,

          ", "content": [{"c": "In Cardano' solution,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t", "content": {"math_content": "t", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n

          ", "content": [{"c": "is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0", "content": {"math_content": "t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          . This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          ", "content": [{"c": ". This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t=u-\\dfrac{p}{3u}", "content": {"math_content": "t=u-\\dfrac{p}{3u}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substitute the expression

          ", "content": [{"c": "Substitute the expression", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t=u-\\dfrac{20}{9u}", "content": {"math_content": "t=u-\\dfrac{20}{9u}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          to the cubic equation

          ", "content": [{"c": "to the cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0", "content": {"math_content": "\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Expand brackets and cancel the like terms

          ", "content": [{"c": "Expand brackets and cancel the like terms", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0", "content": {"math_content": "u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Then we get the same equation as (2)

          ", "content": [{"c": "Then we get the same equation as (2)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0", "content": {"math_content": "u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          The rest of the steps will be the same as those of Cardano's solution

          ", "content": [{"c": "The rest of the steps will be the same as those of Cardano's solution", "t": "text"}]}, {"type": "title", "raw_content": "

          4. Euler's Solution

          ", "content": {"title_content": "4. Euler's Solution", "level": "2"}}, {"type": "title", "raw_content": "

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          ", "content": {"title_content": "$$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          ", "content": [{"c": "Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} ", "content": {"math_content": "t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          3

          ", "content": [{"c": "3", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Let the root of the cubic equation be the sum of two cubic roots

          ", "content": [{"c": "Let the root of the cubic equation be the sum of two cubic roots", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} ", "content": {"math_content": "t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          4

          ", "content": [{"c": "4", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          in which

          ", "content": [{"c": "in which", "t": "text"}]}, {"type": "equation-interline", "raw_content": "r_1", "content": {"math_content": "r_1", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "r_2", "content": {"math_content": "r_2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          are two roots of a quadratic equation

          ", "content": [{"c": "are two roots of a quadratic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "z^2-\\alpha z+ \u03b2=0 ", "content": {"math_content": "z^2-\\alpha z+ \u03b2=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          5

          ", "content": [{"c": "5", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Using Vieta's Formula, the following equations are established.

          ", "content": [{"c": "Using Vieta's Formula, the following equations are established.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2 ", "content": {"math_content": "r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          To determine

          ", "content": [{"c": "To determine", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\alpha", "content": {"math_content": "\\alpha", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          ,

          ", "content": [{"c": ",", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03b2", "content": {"math_content": "\u03b2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , cube both sides of the equation (4)

          ", "content": [{"c": ", cube both sides of the equation (4)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2 ", "content": {"math_content": "t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substituting, the equation is simplified to

          ", "content": [{"c": "Substituting, the equation is simplified to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3=3\\sqrt[3]{\u03b2}t+\\alpha ", "content": {"math_content": "t^3=3\\sqrt[3]{\u03b2}t+\\alpha", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Compare the cubic equation with (3), the following equations are established

          ", "content": [{"c": "Compare the cubic equation with (3), the following equations are established", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Solving for

          ", "content": [{"c": "Solving for", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03b2", "content": {"math_content": "\u03b2", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          gives

          ", "content": [{"c": "gives", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03b2=-\\dfrac{8000}{729} ", "content": {"math_content": "\u03b2=-\\dfrac{8000}{729}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          So the quadratic equation (5) is determined as

          ", "content": [{"c": "So the quadratic equation (5) is determined as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0", "content": {"math_content": "z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          6

          ", "content": [{"c": "6", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          Solving the quadratic equation yields

          ", "content": [{"c": "Solving the quadratic equation yields", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}", "content": {"math_content": "\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          ", "content": [{"c": "Therefore, one of the roots of the cubic equation could be obtained from (4).", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} ", "content": {"math_content": "t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in decimals,

          ", "content": [{"c": "in decimals,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t_1=0.53778143658824 ", "content": {"math_content": "t_1=0.53778143658824", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          However, since the cube root of a quantity has triple values,

          ", "content": [{"c": "However, since the cube root of a quantity has triple values,", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          The other two roots could be determined as,

          ", "content": [{"c": "The other two roots could be determined as,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} ", "content": {"math_content": "t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} ", "content": {"math_content": "t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          ", "content": [{"c": "Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          For the equation

          ", "content": [{"c": "For the equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}", "content": {"math_content": "t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , we have $$p=\\dfrac{20}{3}$$ and

          ", "content": [{"c": ", we have $$p=\\dfrac{20}{3}$$ and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "q = -\\dfrac{101}{27}", "content": {"math_content": "q = -\\dfrac{101}{27}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          Calculate the discriminant

          ", "content": {"title_content": "Calculate the discriminant", "level": "3"}}, {"type": "paragraph", "raw_content": "

          The nature of the roots are determined by the sign of the discriminant.

          ", "content": [{"c": "The nature of the roots are determined by the sign of the discriminant.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          4.1 Use the root formula directly

          ", "content": {"title_content": "4.1 Use the root formula directly", "level": "3"}}, {"type": "paragraph", "raw_content": "

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          ", "content": [{"c": "If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}", "content": {"math_content": "t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in which,

          ", "content": [{"c": "in which,", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} ", "content": {"math_content": "\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}", "content": {"math_content": "\\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          Substitute the values of

          ", "content": [{"c": "Substitute the values of", "t": "text"}]}, {"type": "equation-interline", "raw_content": "p, q", "content": {"math_content": "p, q", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          and

          ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\Delta", "content": {"math_content": "\\Delta", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          which we have calculated. Then,

          ", "content": [{"c": "which we have calculated. Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          If we denote

          ", "content": [{"c": "If we denote", "t": "text"}]}, {"type": "equation-interline", "raw_content": "R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "content": {"math_content": "R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "content": {"math_content": "\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          then,

          ", "content": [{"c": "then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}", "content": {"math_content": "\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          ,

          ", "content": [{"c": ",", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "content": {"math_content": "\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "content": {"math_content": "\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          Roots of the general cubic equation

          ", "content": {"title_content": "Roots of the general cubic equation", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Since

          ", "content": [{"c": "Since", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x = t - \\dfrac{b}{3a}", "content": {"math_content": "x = t - \\dfrac{b}{3a}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          , substituting the values of $$t$$, $$a$$ and

          ", "content": [{"c": ", substituting the values of $$t$$, $$a$$ and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "b", "content": {"math_content": "b", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          gives

          ", "content": [{"c": "gives", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x_1 = t_1-\\dfrac{2}{3}", "content": {"math_content": "x_1 = t_1-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "x_2 = t_2-\\dfrac{2}{3}", "content": {"math_content": "x_2 = t_2-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "equation-interline", "raw_content": "x_3 = t_3-\\dfrac{2}{3}", "content": {"math_content": "x_3 = t_3-\\dfrac{2}{3}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          5. Summary

          ", "content": {"title_content": "5. Summary", "level": "2"}}, {"type": "paragraph", "raw_content": "

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation

          ", "content": [{"c": "In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x\u00b3 + 2x\u00b2 + 8x + 1=0", "content": {"math_content": "x\u00b3 + 2x\u00b2 + 8x + 1=0", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          is found to have one real root and two complex roots. Exact values and approximations are given below.

          ", "content": [{"c": "is found to have one real root and two complex roots. Exact values and approximations are given below.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "content": {"math_content": "\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          in decimal notation,

          ", "content": [{"c": "in decimal notation,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "content": {"math_content": "\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}", "math_type": "latex", "by": "katex"}}, {"type": "title", "raw_content": "

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          ", "content": {"title_content": "6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Since the discriminat is greater than zero, the curve of the cubic function

          ", "content": [{"c": "Since the discriminat is greater than zero, the curve of the cubic function", "t": "text"}]}, {"type": "equation-interline", "raw_content": "f(x) = x\u00b3 + 2x\u00b2 + 8x + 1", "content": {"math_content": "f(x) = x\u00b3 + 2x\u00b2 + 8x + 1", "math_type": "latex", "by": "katex"}}, {"type": "paragraph", "raw_content": "

          has one intersection point with the x-axis.

          ", "content": [{"c": "has one intersection point with the x-axis.", "t": "text"}]}, {"type": "title", "raw_content": "

          More cubic equations

          ", "content": {"title_content": "More cubic equations", "level": "2"}}]], "main_html": "

          Solve the cubic equation:

          $$x^3+2x^2+8x+1=0 $$

          Quick Answer

          Since the discriminant

          \\Delta >0

          , the cubic equation has one real root and two conjugate complex roots.

          \\Delta=14.472222222222\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}

          In decimals,

          \\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}

          Detailed Steps on Solution

          1. Convert to depressed cubic equation

          The idea is to convert general form of cubic equation

          ax^3+bx^2+cx+d = 0

          to the form without quadratic term.

          t^3+pt+q = 0

          By substituting

          x

          with

          t - \\dfrac{b}{3a}

          , the general cubic equation could be transformed to

          t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0

          Compare with the depressed cubic equation. Then,

          p = \\dfrac{3ac-b^2}{3a^2}q = \\dfrac{2b^3-9abc+27a^2d}{27a^3}

          Substitute the values of coefficients,

          p, q

          is obtained as

          p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}

          Use the substitution to transform

          Let

          p

          and

          q

          being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          t^3 +pt+q=0

          Let

          x=t-\\dfrac{2}{3}

          The cubic equation

          x\u00b3 + 2x\u00b2 + 8x + 1=0

          is transformed to

          t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0

          2. Cardano's solution

          Let

          t=u-v

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          \\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}

          Since

          u-v=t

          , substitution gives a linear term for the equation.\n Rearrange terms.

          x^3+3uvx-u^3+v^3=0

          Compare the cubic equation with the original one (1)

          \\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}v=\\dfrac{20}{9u}

          gives relationship between the two variables. Substitute the value of

          v

          to the second equation

          \\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}

          Simplifying gives,

          u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0

          2

          Let

          m=u^3

          , then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by

          v^3=-\\dfrac{101}{27}+u^3

          .

          m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          \\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}v^3

          can be determined by the equation we deduced

          v^3-u^3=-\\dfrac{101}{27}

          . Then,

          \\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}

          Now we have,

          u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}

          and

          v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}

          Evaluating the simplest cubic equation

          x^3-A=0

          ,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          If

          \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}

          , then its reciprocal is equal to its conjugate,

          \\dfrac{1}{\u03c9}=\\overline{\u03c9}

          .

          \\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}

          Similary, taking cubic root for

          u^3

          and

          v^3

          also gives 3 roots.

          \\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}

          For

          v_2

          and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and

          u_3

          , which is the same in value.

          \\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}

          Verification for the redicand in

          v

          .

          \\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}

          Since

          x=u-v

          , combining the real and imaginary parts gives\n 3 results for

          t\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}

          3. Vieta's Substitution

          In Cardano' solution,

          t

          is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n

          t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0

          . This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          t=u-\\dfrac{p}{3u}

          Substitute the expression

          t=u-\\dfrac{20}{9u}

          to the cubic equation

          \\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0

          Expand brackets and cancel the like terms

          u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0

          Then we get the same equation as (2)

          u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0

          The rest of the steps will be the same as those of Cardano's solution

          4. Euler's Solution

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27}

          3

          Let the root of the cubic equation be the sum of two cubic roots

          t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2}

          4

          in which

          r_1

          and

          r_2

          are two roots of a quadratic equation

          z^2-\\alpha z+ \u03b2=0

          5

          Using Vieta's Formula, the following equations are established.

          r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2

          To determine

          \\alpha

          ,

          \u03b2

          , cube both sides of the equation (4)

          t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2

          Substituting, the equation is simplified to

          t^3=3\\sqrt[3]{\u03b2}t+\\alpha

          Compare the cubic equation with (3), the following equations are established

          \\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}

          Solving for

          \u03b2

          gives

          \u03b2=-\\dfrac{8000}{729}

          So the quadratic equation (5) is determined as

          z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0

          6

          Solving the quadratic equation yields

          \\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}

          in decimals,

          t_1=0.53778143658824

          However, since the cube root of a quantity has triple values,

          The other two roots could be determined as,

          t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          For the equation

          t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}

          , we have $$p=\\dfrac{20}{3}$$ and

          q = -\\dfrac{101}{27}

          Calculate the discriminant

          The nature of the roots are determined by the sign of the discriminant.

          \\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}

          4.1 Use the root formula directly

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}

          in which,

          \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}

          and

          \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}

          Substitute the values of

          p, q

          and

          \\Delta

          which we have calculated. Then,

          \\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}

          If we denote

          R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }

          then,

          \\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}

          ,

          \\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}

          Roots of the general cubic equation

          Since

          x = t - \\dfrac{b}{3a}

          , substituting the values of $$t$$, $$a$$ and

          b

          gives

          x_1 = t_1-\\dfrac{2}{3}x_2 = t_2-\\dfrac{2}{3}x_3 = t_3-\\dfrac{2}{3}

          5. Summary

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation

          x\u00b3 + 2x\u00b2 + 8x + 1=0

          is found to have one real root and two complex roots. Exact values and approximations are given below.

          \\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}

          in decimal notation,

          \\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          Since the discriminat is greater than zero, the curve of the cubic function

          f(x) = x\u00b3 + 2x\u00b2 + 8x + 1

          has one intersection point with the x-axis.

          More cubic equations

          ", "statics": {"title": 14, "paragraph": 103, "paragraph.text": 103, "equation-interline": 105}, "url": "https://uniteasy.com/solver/cubicequation/x%5E3%2B2x%5E2%2B8x%2B1%3D0/", "content": "# Solve the cubic equation:\n\n## $$x^3+2x^2+8x+1=0 $$\n\nQuick Answer\n\nSince the discriminant\n\n$$\n\\Delta >0\n$$\n\n, the cubic equation has one real root and two conjugate complex roots.\n\n$$\n\\Delta=14.472222222222\n$$\n\n$$\n\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}\n$$\n\nIn decimals,\n\n$$\n\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}\n$$\n\nDetailed Steps on Solution\n\n## 1. Convert to depressed cubic equation\n\nThe idea is to convert general form of cubic equation\n\n$$\nax^3+bx^2+cx+d = 0\n$$\n\nto the form without quadratic term.\n\n$$\nt^3+pt+q = 0\n$$\n\nBy substituting\n\n$$\nx\n$$\n\nwith\n\n$$\nt - \\dfrac{b}{3a}\n$$\n\n, the general cubic equation could be transformed to\n\n$$\nt^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0\n$$\n\nCompare with the depressed cubic equation. Then,\n\n$$\np = \\dfrac{3ac-b^2}{3a^2}\n$$\n\n$$\nq = \\dfrac{2b^3-9abc+27a^2d}{27a^3}\n$$\n\nSubstitute the values of coefficients,\n\n$$\np, q\n$$\n\nis obtained as\n\n$$\np = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}\n$$\n\n$$\nq = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}\n$$\n\n### Use the substitution to transform\n\nLet\n\n$$\np\n$$\n\nand\n\n$$\nq\n$$\n\nbeing the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.\n\n$$\nt^3 +pt+q=0\n$$\n\nLet\n\n$$\nx=t-\\dfrac{2}{3}\n$$\n\nThe cubic equation\n\n$$\nx\u00b3 + 2x\u00b2 + 8x + 1=0\n$$\n\nis transformed to\n\n$$\nt^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0\n$$\n\n## 2. Cardano's solution\n\nLet\n\n$$\nt=u-v\n$$\n\nCube both sides and extract common factor from two middle terms after expanding the bracket.\n\n$$\n\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}\n$$\n\nSince\n\n$$\nu-v=t\n$$\n\n, substitution gives a linear term for the equation.\n Rearrange terms.\n\n$$\nx^3+3uvx-u^3+v^3=0\n$$\n\nCompare the cubic equation with the original one (1)\n\n$$\n\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}\n$$\n\n$$\nv=\\dfrac{20}{9u}\n$$\n\ngives relationship between the two variables. Substitute the value of\n\n$$\nv\n$$\n\nto the second equation\n\n$$\n\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}\n$$\n\nSimplifying gives,\n\n$$\nu^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0\n$$\n\n2\n\nLet\n\n$$\nm=u^3\n$$\n\n, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by\n\n$$\nv^3=-\\dfrac{101}{27}+u^3\n$$\n\n.\n\n$$\nm^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0\n$$\n\nSovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.\n\n$$\n\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}\n$$\n\n$$\nv^3\n$$\n\ncan be determined by the equation we deduced\n\n$$\nv^3-u^3=-\\dfrac{101}{27}\n$$\n\n. Then,\n\n$$\n\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}\n$$\n\nNow we have,\n\n$$\nu^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\n$$\n\nand\n\n$$\nv^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\n$$\n\nEvaluating the simplest cubic equation\n\n$$\nx^3-A=0\n$$\n\n,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.\n\nIf\n\n$$\n\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}\n$$\n\n, then its reciprocal is equal to its conjugate,\n\n$$\n\\dfrac{1}{\u03c9}=\\overline{\u03c9}\n$$\n\n.\n\n$$\n\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}\n$$\n\nSimilary, taking cubic root for\n\n$$\nu^3\n$$\n\nand\n\n$$\nv^3\n$$\n\nalso gives 3 roots.\n\n$$\n\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}\n$$\n\nFor\n\n$$\nv_2\n$$\n\nand $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and\n\n$$\nu_3\n$$\n\n, which is the same in value.\n\n$$\n\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}\n$$\n\nVerification for the redicand in\n\n$$\nv\n$$\n\n.\n\n$$\n\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\nSince\n\n$$\nx=u-v\n$$\n\n, combining the real and imaginary parts gives\n 3 results for\n\n$$\nt\n$$\n\n$$\n\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n## 3. Vieta's Substitution\n\nIn Cardano' solution,\n\n$$\nt\n$$\n\nis defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n\n$$\nt^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0\n$$\n\n. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.\n\n$$\nt=u-\\dfrac{p}{3u}\n$$\n\nSubstitute the expression\n\n$$\nt=u-\\dfrac{20}{9u}\n$$\n\nto the cubic equation\n\n$$\n\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0\n$$\n\nExpand brackets and cancel the like terms\n\n$$\nu^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0\n$$\n\nThen we get the same equation as (2)\n\n$$\nu^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0\n$$\n\nThe rest of the steps will be the same as those of Cardano's solution\n\n## 4. Euler's Solution\n\n## $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$\n\nMove the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.\n\n$$\nt^3=-\\dfrac{20}{3}t+\\dfrac{101}{27}\n$$\n\n3\n\nLet the root of the cubic equation be the sum of two cubic roots\n\n$$\nt=\\sqrt[3]{r_1}+\\sqrt[3]{r_2}\n$$\n\n4\n\nin which\n\n$$\nr_1\n$$\n\nand\n\n$$\nr_2\n$$\n\nare two roots of a quadratic equation\n\n$$\nz^2-\\alpha z+ \u03b2=0\n$$\n\n5\n\nUsing Vieta's Formula, the following equations are established.\n\n$$\nr_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2\n$$\n\nTo determine\n\n$$\n\\alpha\n$$\n\n,\n\n$$\n\u03b2\n$$\n\n, cube both sides of the equation (4)\n\n$$\nt^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2\n$$\n\nSubstituting, the equation is simplified to\n\n$$\nt^3=3\\sqrt[3]{\u03b2}t+\\alpha\n$$\n\nCompare the cubic equation with (3), the following equations are established\n\n$$\n\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}\n$$\n\nSolving for\n\n$$\n\u03b2\n$$\n\ngives\n\n$$\n\u03b2=-\\dfrac{8000}{729}\n$$\n\nSo the quadratic equation (5) is determined as\n\n$$\nz^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0\n$$\n\n6\n\nSolving the quadratic equation yields\n\n$$\n\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}\n$$\n\nTherefore, one of the roots of the cubic equation could be obtained from (4).\n\n$$\nt_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\nin decimals,\n\n$$\nt_1=0.53778143658824\n$$\n\nHowever, since the cube root of a quantity has triple values,\n\nThe other two roots could be determined as,\n\n$$\nt_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\n$$\nt_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\nCombining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.\n\nFor the equation\n\n$$\nt^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}\n$$\n\n, we have $$p=\\dfrac{20}{3}$$ and\n\n$$\nq = -\\dfrac{101}{27}\n$$\n\n### Calculate the discriminant\n\nThe nature of the roots are determined by the sign of the discriminant.\n\n$$\n\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}\n$$\n\n### 4.1 Use the root formula directly\n\nIf the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.\n\n$$\nt_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}\n$$\n\nin which,\n\n$$\n\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}\n$$\n\nand\n\n$$\n\\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}\n$$\n\nSubstitute the values of\n\n$$\np, q\n$$\n\nand\n\n$$\n\\Delta\n$$\n\nwhich we have calculated. Then,\n\n$$\n\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}\n$$\n\nIf we denote\n\n$$\nR = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }\n$$\n\n$$\n\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }\n$$\n\nthen,\n\n$$\n\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\n$$\n\n,\n\n$$\n\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\n$$\n\n$$\n\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n$$\n\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}\n$$\n\n## Roots of the general cubic equation\n\nSince\n\n$$\nx = t - \\dfrac{b}{3a}\n$$\n\n, substituting the values of $$t$$, $$a$$ and\n\n$$\nb\n$$\n\ngives\n\n$$\nx_1 = t_1-\\dfrac{2}{3}\n$$\n\n$$\nx_2 = t_2-\\dfrac{2}{3}\n$$\n\n$$\nx_3 = t_3-\\dfrac{2}{3}\n$$\n\n## 5. Summary\n\nIn summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation\n\n$$\nx\u00b3 + 2x\u00b2 + 8x + 1=0\n$$\n\nis found to have one real root and two complex roots. Exact values and approximations are given below.\n\n$$\n\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}\n$$\n\nin decimal notation,\n\n$$\n\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}\n$$\n\n## 6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$\n\nSince the discriminat is greater than zero, the curve of the cubic function\n\n$$\nf(x) = x\u00b3 + 2x\u00b2 + 8x + 1\n$$\n\nhas one intersection point with the x-axis.\n\n## More cubic equations\n", "html": "\n\n\n\n\n\nSolve x^3+2x^2+8x+1=0 | Uniteasy.com\n\n\n\n\n\n\n\n\n\n\n\n \n
          \n\t
          \n\t\t\n\t\t\t\t\n\t\t\t\t\t\t
            \n\t\t
          • \n\t\t
          \n\t\t\t\t\n\t
          \n
          \n\n\n
          \n\t
          \n
          \n
          \n

          Solve the cubic equation:

          \n

          $$x^3+2x^2+8x+1=0 $$

          \n

          Quick Answer

          \n

          Since the discriminant $$\\Delta >0$$, the cubic equation has one real root and two conjugate complex roots.

          $$ \\Delta=14.472222222222$$

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          In decimals,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          Detailed Steps on Solution

          1. Convert to depressed cubic equation

          The idea is to convert general form of cubic equation

          $$ax^3+bx^2+cx+d = 0$$

          to the form without quadratic term.

          $$t^3+pt+q = 0$$

          By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general cubic equation could be transformed to

          $$t^3+\\dfrac{3ac-b^2}{3a^2}t+\\dfrac{2b^3-9abc+27a^2d}{27a^3} = 0 $$

          Compare with the depressed cubic equation. Then,

          $$p = \\dfrac{3ac-b^2}{3a^2}$$

          $$q = \\dfrac{2b^3-9abc+27a^2d}{27a^3} $$

          Substitute the values of coefficients, $$p, q$$ is obtained as

          $$p = \\dfrac{3\\cdot 1\\cdot 8-2^2}{3\\cdot 1^2}=\\dfrac{20}{3}$$

          $$q = \\dfrac{2\\cdot 2^3-9\\cdot1\\cdot 2\\cdot 8+27\\cdot 1^2\\cdot1}{27\\cdot 1^3}=-\\dfrac{101}{27}$$

          Use the substitution to transform

          Let $$p$$ and $$q$$ being the coefficient of the linean and constant terms, the depressed cubic equation is expressed as.

          $$t^3 +pt+q=0$$

          Let $$x=t-\\dfrac{2}{3}$$

          The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is transformed to

          $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          2. Cardano's solution

          Let $$t=u-v$$

          Cube both sides and extract common factor from two middle terms after expanding the bracket.

          $$\\begin{aligned} \\\\t^3&=(u-v)^3\\\\ & =u^3-3u^2v+3uv^2-v^3\\\\ & =-3uv(u-v)+u^3-v^3\\\\ \\end{aligned}$$

          Since $$u-v=t$$, substitution gives a linear term for the equation.\n Rearrange terms.

          $$x^3+3uvx-u^3+v^3=0$$

          Compare the cubic equation with the original one (1)

          $$\\begin{cases} 3uv=\\dfrac{20}{3}\\quad\\text{or}\\quad v=\\dfrac{20}{9u}\\\\ v^3-u^3=-\\dfrac{101}{27}\\\\ \\end{cases}$$

          $$v=\\dfrac{20}{9u}$$ gives relationship between the two variables. Substitute the value of $$v$$ to the second equation

          $$\\Big(\\dfrac{20}{9u}\\Big)^3-u^3=-\\dfrac{101}{27}$$

          Simplifying gives,

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$2

          Let $$m=u^3$$, then the equation is transformed to a quadratic equation in terms of $$m$$.\n Once the value of $$m$$ is determined, $$v^3$$ could be determined by $$v^3=-\\dfrac{101}{27}+u^3$$.

          $$m^2-\\dfrac{101}{27}m-\\dfrac{8000}{729}=0$$

          Sovling the quadratic euqation will give two roots (some may be equal). Here we only cosider\n one case with positive sign before the square root radical since the negative case will produce the same result.

          $$\\begin{aligned} \\\\u^3=m&=\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\Big(-\\dfrac{101}{27}^2\\Big)-4\\cdot \\Big(-\\dfrac{8000}{729}\\Big)}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{10201}{729}+\\dfrac{32000}{729}}\\\\ & =\\dfrac{101}{54}+\\dfrac{1}{2}\\sqrt{\\dfrac{521}{9}}\\\\ & =\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          $$v^3$$ can be determined by the equation we deduced $$v^3-u^3=-\\dfrac{101}{27}$$. Then,

          $$\\begin{aligned} \\\\v^3&=-\\dfrac{101}{27}+u^3\\\\ & =-\\dfrac{101}{27}+\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ & =-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\\\ \\end{aligned}$$

          Now we have,

          $$u^3=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$ and $$v^3=-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}$$

          Evaluating the simplest cubic equation $$x^3-A=0$$,\n it has 3 roots, in which the first root is a real number . The second and third are\n expressed in the product of cubic root of unity and the first one.

          If $$\u03c9 = \\dfrac{-1+i\\sqrt{3}}{2}$$, then its reciprocal is equal to its conjugate, $$\\dfrac{1}{\u03c9}=\\overline{\u03c9}$$.

          $$\\begin{cases} r_1=\\sqrt[3]{A}\\\\ r_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ r_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{A}\\\\ \\end{cases}$$

          Similary, taking cubic root for $$u^3$$ and $$v^3$$ also gives 3 roots.

          $$\\begin{cases} u_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_2=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ u_3=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          For $$v_2$$ and $$v_3$$, the complex numbers before radicals are the conjugates of\n those for $$u_2$$ and $$u_3$$, which can be verified by the reciprocal property\n of the cubic root of unity from the equation $$v=\\dfrac{20}{9u}$$. The radicand can be taken as the\n negative conjugate of that in $$u_1$$, $$u_2$$ and $$u_3$$, which is the same in value.

          $$\\begin{cases} v_1=\\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_2=\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ v_3=\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{cases}$$

          Verification for the redicand in $$v$$.

          $$\\begin{aligned} \\\\v_1&=\\dfrac{20}{9u_1}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{1}{\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\Big(\\dfrac{101}{54}\\Big)^2-\\Big(\\dfrac{\\sqrt{521}}{6}\\Big)^2}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{10201}{2916}-\\dfrac{521}{36}}}\\\\ & =\\dfrac{20}{9}\\cdot \\dfrac{\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}}{\\sqrt[3]{\\dfrac{-1\\cdot 20^3}{9^3}}}\\\\ & =-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          Since $$x=u-v$$, combining the real and imaginary parts gives\n 3 results for $$t$$

          $$\\begin{aligned} \\\\t_1&=u_1-v_1\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_2&=u_2-v_2\\\\ & =\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&=u_3-v_3\\\\ & =\\dfrac{-1-i\\sqrt{3}}{2}\\cdot \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\Big(\\dfrac{-1+i\\sqrt{3}}{2}\\cdot \\sqrt[3]{-\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          3. Vieta's Substitution

          In Cardano' solution, $$t$$ is defined as the difference of $$u$$ and\n $$v$$. If we substitute the value of $$v$$ (4) into (2), we get the\n equation. $$t=u-\\dfrac{20}{9u}$$. And then substitute the equation to the cubic equation\n $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$. This method is called Vieta's Substitution\n for solving a cubic equation, which simplied the Cardano' solution. The substitution\n expression can be obtained by the following formula directly.

          $$t=u-\\dfrac{p}{3u}$$

          Substitute the expression $$t=u-\\dfrac{20}{9u}$$ to the cubic equation

          $$\\Big(u-\\dfrac{20}{9u}\\Big)^3+\\dfrac{20}{3}\\Big(u-\\dfrac{20}{9u}\\Big)-\\dfrac{101}{27}=0$$

          Expand brackets and cancel the like terms

          $$u^3-\\cancel{\\dfrac{20}{3}u^2\\dfrac{1}{u}}+\\cancel{\\dfrac{400}{27}u\\dfrac{1}{u^2}}-\\dfrac{8000}{729}\\dfrac{1}{u^3}+\\cancel{\\dfrac{20}{3}u}-\\cancel{\\dfrac{400}{27}\\dfrac{1}{u}}-\\dfrac{101}{27}=0$$

          Then we get the same equation as (2)

          $$u^3-\\dfrac{8000}{729}\\dfrac{1}{u^3}-\\dfrac{101}{27}=0$$

          The rest of the steps will be the same as those of Cardano's solution

          4. Euler's Solution

          $$t^3+\\dfrac{20}{3}t-\\dfrac{101}{27}=0$$

          Move the linear term and constant of (1) to its right hand side.\n We get the following form of the equation.

          $$t^3=-\\dfrac{20}{3}t+\\dfrac{101}{27} $$3

          Let the root of the cubic equation be the sum of two cubic roots

          $$t=\\sqrt[3]{r_1}+\\sqrt[3]{r_2} $$4

          in which $$r_1$$ and $$r_2$$ are two roots of a quadratic equation

          $$z^2-\\alpha z+ \u03b2=0 $$5

          Using Vieta's Formula, the following equations are established.

          $$r_1+r_2 = \\alpha \\quad \\text{and} \\quad r_1r_2 = \u03b2 $$

          To determine $$\\alpha$$, $$\u03b2$$, cube both sides of the equation (4)

          $$t^3=3\\sqrt[3]{r_1r_2}(\\sqrt[3]{r_1}+\\sqrt[3]{r_2})+r_1+r_2 $$

          Substituting, the equation is simplified to

          $$t^3=3\\sqrt[3]{\u03b2}t+\\alpha $$

          Compare the cubic equation with (3), the following equations are established

          $$\\begin{cases} 3\\sqrt[3]{\u03b2}=-\\dfrac{20}{3}\\\\ \\alpha=\\dfrac{101}{27}\\\\ \\end{cases}$$

          Solving for $$\u03b2$$ gives

          $$\u03b2=-\\dfrac{8000}{729} $$

          So the quadratic equation (5) is determined as

          $$z^2-\\dfrac{101}{27}z-\\dfrac{8000}{729}=0$$6

          Solving the quadratic equation yields

          $$\\begin{cases} r_1=\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}\\approx5.6746077738748\\\\ r_2=\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}\\approx-1.9338670331341\\\\ \\end{cases}$$

          Therefore, one of the roots of the cubic equation could be obtained from (4).

          $$t_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          in decimals,

          $$t_1=0.53778143658824 $$

          However, since the cube root of a quantity has triple values,

          The other two roots could be determined as,

          $$t_2=\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          $$t_3=\\dfrac{-1-i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\dfrac{-1+i\\sqrt{3}}{2}\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}} $$

          Combining the real and imaginary parts\n results in the same result as that obtained by Cardano's solution.

          For the equation $$t^3 +\\dfrac{20}{3}t-\\dfrac{101}{27}$$, we have $$p=\\dfrac{20}{3}$$ and $$q = -\\dfrac{101}{27}$$

          Calculate the discriminant

          The nature of the roots are determined by the sign of the discriminant.

          $$\\begin{aligned} \\\\\\Delta&=\\dfrac{q^2}{4}+\\dfrac{p^3}{27}\\\\ & =\\dfrac{\\Big(-\\dfrac{101}{27}\\Big)^2}{4}+\\dfrac{\\Big(\\dfrac{20}{3}\\Big)^3}{27}\\\\ & =\\dfrac{10201}{2916}+\\dfrac{8000}{729}\\\\ & =\\dfrac{10201\\cdot 1+8000\\cdot 4}{2916}\\\\ & =14.472222222222\\\\ \\end{aligned}$$

          4.1 Use the root formula directly

          If the discriminant is greater than zero, we can use the root formula to determine the roots of the cubic equation.

          $$t_{1,2,3} =\\begin{cases} \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } +\\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}& \\\\ \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \\overline{\u03c9} \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }}&\\ \\\\ \\overline{\u03c9}\\cdotp \\sqrt[3]{-\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} } } + \u03c9\\cdotp \\sqrt[3]{-\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }} \\end{cases}$$

          in which, $$ \u03c9 = \\dfrac{-1+i\\sqrt{3}}{2} $$ and $$ \\overline{\u03c9} =\\dfrac{-1-i\\sqrt{3}}{2}$$

          Substitute the values of $$p, q$$ and $$\\Delta$$ which we have calculated. Then,

          $$\\begin{aligned} \\\\t_1&=\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{42201}{2916}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{42201}{2916}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}+\\sqrt[3]{\\dfrac{101}{54}-\\sqrt{\\dfrac{521\\cdot\\cancel{81}}{36\\cdot\\cancel{81}}}}\\\\ & =\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\\\ \\end{aligned}$$

          If we denote

          $$R = -\\dfrac{q}{2}+\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          $$\\overline{R} = -\\dfrac{q}{2} -\\sqrt{\\dfrac{q^2}{4}+\\dfrac{p^3}{27} }$$

          then,

          $$\\sqrt[3]{R} = \\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}$$, $$\\sqrt[3]{\\overline{R}} =\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}$$

          $$\\begin{aligned} \\\\t_2&= \u03c9\\cdotp \\sqrt[3]{R}+ \\overline{\u03c9} \\sqrt[3]{\\overline{R} }\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}( \\sqrt[3]{R} - \\sqrt[3]{\\overline{R} }) }{2} i\\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          $$\\begin{aligned} \\\\t_3&= \\overline{\u03c9}\\cdotp \\sqrt[3]{R}+ \u03c9\\cdotp \\sqrt[3]{\\overline{R}}\\\\ & =\\dfrac{-\\sqrt[3]{R}-\\sqrt[3]{\\overline{R} }}{2} +\\dfrac{\\sqrt{3}(- \\sqrt[3]{R} + \\sqrt[3]{\\overline{R} }) }{2}i \\\\ & =\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)\\\\&-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i\\\\ \\end{aligned}$$

          Roots of the general cubic equation

          Since $$x = t - \\dfrac{b}{3a}$$, substituting the values of $$t$$, $$a$$ and $$b$$ gives

          $$x_1 = t_1-\\dfrac{2}{3}$$

          $$x_2 = t_2-\\dfrac{2}{3}$$

          $$x_3 = t_3-\\dfrac{2}{3}$$

          5. Summary

          In summary, we have tried the method of cubic root formula to explore the solutions of the equation. The cubic equation $$x\u00b3 + 2x\u00b2 + 8x + 1=0$$ is found to have one real root and two complex roots. Exact values and approximations are given below.

          $$\\begin{cases} x_1=\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}+\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}-\\dfrac{2}{3} \\\\ x_2=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)+\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\\\ x_3=\\dfrac{1}{2}\\Big(-\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)-\\dfrac{\\sqrt{3}}{2}\\Big(\\sqrt[3]{\\dfrac{101}{54}+\\dfrac{\\sqrt{521}}{6}}-\\sqrt[3]{\\dfrac{101}{54}-\\dfrac{\\sqrt{521}}{6}}\\Big)i-\\dfrac{2}{3} \\end{cases}$$

          in decimal notation,

          $$\\begin{cases} x_1=-0.12888523007843 \\\\ x_2=-0.93555738496079+2.6236564793854i \\\\ x_3=-0.93555738496079-2.6236564793854i \\end{cases}$$

          6. Graph for the function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$

          Since the discriminat is greater than zero, the curve of the cubic function $$f(x) = x\u00b3 + 2x\u00b2 + 8x + 1$$ has one intersection point with the x-axis.

          \n\n\n\n\n\n\n
          \n
          \n\n
          \n

          More cubic equations

          \n\n
          \n
          \n
          \n
          \n
          \n\n
          \nScroll to Top\n
          \n
          \n\n
          \u00a9 2023 Math Solution. All Rights Reserved.\n
          \n \n\n \n\n\n
          \n
          \n\n\n"} diff --git a/bench/data/groundtruth/math_katex_latex_3.jsonl b/bench/data/groundtruth/math_katex_latex_3.jsonl index 5ebdfd92..ac465409 100644 --- a/bench/data/groundtruth/math_katex_latex_3.jsonl +++ b/bench/data/groundtruth/math_katex_latex_3.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "
          \n Show commands:\n Magma\n / PariGP\n / SageMath
          ", "content": [{"c": "Show commands: Magma/ PariGP/ SageMath", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          [N,k,chi] = [3332,1,Mod(667,3332)]
          mf = mfinit([N,k,chi],0)
          lf = mfeigenbasis(mf)
          ", "content": [{"c": "[N,k,chi] = [3332,1,Mod(667,3332)] mf = mfinit([N,k,chi],0) lf = mfeigenbasis(mf)", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          from sage.modular.dirichlet import DirichletCharacter
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
          N = Newforms(chi, 1, names=\"a\")
          ", "content": [{"c": "from sage.modular.dirichlet import DirichletCharacter H = DirichletGroup(3332, base_ring=CyclotomicField(12)) chi = DirichletCharacter(H, H._module([6, 4, 9])) N = Newforms(chi, 1, names=\"a\")", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
          chi := DirichletCharacter(\"3332.667\");
          S:= CuspForms(chi, 1);
          N := Newforms(S);
          ", "content": [{"c": "//Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code chi := DirichletCharacter(\"3332.667\"); S:= CuspForms(chi, 1); N := Newforms(S);", "t": "text"}]}, {"type": "table", "raw_content": "
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\)3332.bc (of order \\(12\\), degree \\(4\\), not minimal)
          ", "content": {"html": "
          Level<br>:\\( N \\)\\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight<br>:\\( k \\)\\(=\\)\\( 1 \\)
          Character orbit<br>:\\([\\chi]\\)\\(=\\)3332.bc<br>(of<br>order<br>\\(12\\),<br>degree<br>\\(4\\), not<br>minimal<br>)
          ", "is_complex": false}}, {"type": "title", "raw_content": "

          Newform invariants

          ", "content": {"title_content": "Newform invariants", "level": "2"}}, {"type": "paragraph", "raw_content": "
          sage:\u00a0f = N[0] # Warning: the index may be different
          ", "content": [{"c": "sage:\u00a0f = N[0] # Warning: the index may be different", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          gp:\u00a0f = lf[1] \\\\ Warning: the index may be different
          ", "content": [{"c": "gp:\u00a0f = lf[1] \\\\ Warning: the index may be different", "t": "text"}]}, {"type": "table", "raw_content": "
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial: \\( x^{4} - x^{2} + 1 \\)\"Copy\"Toggle
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          ", "content": {"html": "
          Self dual<br>:no
          Analytic conductor<br>:\\(1.66288462209\\)
          Analytic rank<br>:\\(0\\)
          Dimension<br>:\\(4\\)
          Coefficient field<br>:\\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial<br>:\\( x^{4} - x^{2} + 1 \\)
          Coefficient ring<br>:\\(\\Z[a_1, a_2]\\)
          Coefficient ring index<br>:\\( 1 \\)
          Twist minimal<br>:no (minimal twist has level 68)
          Projective image<br>:\\(D_{4}\\)
          Projective field<br>:Galois closure of <br>4.2.19652.1
          Artin image<br>:$C_4\\wr C_2\\times C_6$
          Artin field<br>:Galois closure of <br>\\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          ", "is_complex": false}}, {"type": "title", "raw_content": "

          Embedding invariants

          ", "content": {"title_content": "Embedding invariants", "level": "2"}}, {"type": "table", "raw_content": "
          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          ", "content": {"html": "
          Embedding label2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          ", "is_complex": false}}, {"type": "paragraph", "raw_content": "
          sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field
          ", "content": [{"c": "sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          gp:\u00a0mfcoefs(f, 20)
          ", "content": [{"c": "gp:\u00a0mfcoefs(f, 20)", "t": "text"}]}, {"type": "table", "raw_content": "
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\"Copy\"Toggle
          ", "content": {"html": "
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)
          ", "is_complex": false}}, {"type": "title", "raw_content": "

          Character values

          ", "content": {"title_content": "Character values", "level": "2"}}, {"type": "paragraph", "raw_content": "

          We give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).

          ", "content": [{"c": "We give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).", "t": "text"}]}, {"type": "table", "raw_content": "
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          ", "content": {"html": "
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          ", "is_complex": false}}, {"type": "title", "raw_content": "

          Coefficient data

          ", "content": {"title_content": "Coefficient data", "level": "2"}}, {"type": "paragraph", "raw_content": "

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          ", "content": [{"c": "For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the Satake parameters\\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "table", "raw_content": "
          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(3\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(5\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n 0\n \n 0\n
          \n \\(7\\)\n \n 0\n \n 0\n
          \n \\(8\\)\n \n 1.00000i\n 1.00000i
          \n \\(9\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(10\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(11\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n 0\n \n 0\n
          \n \\(13\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n 0\n \n 0\n
          \n \\(15\\)\n \n 0\n \n 0\n
          \n \\(16\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(17\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(18\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(19\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(21\\)\n \n 0\n \n 0\n
          \n \\(22\\)\n \n 0\n \n 0\n
          \n \\(23\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n 0\n \n 0\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(26\\)\n \n 0\n \n 0\n
          \n \\(27\\)\n \n 0\n \n 0\n
          \n \\(28\\)\n \n 0\n \n 0\n
          \n \\(29\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(30\\)\n \n 0\n \n 0\n
          \n \\(31\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(33\\)\n \n 0\n \n 0\n
          \n \\(34\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(35\\)\n \n 0\n \n 0\n
          \n \\(36\\)\n \n 1.00000i\n 1.00000i
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n 0\n \n 0\n
          \n \\(39\\)\n \n 0\n \n 0\n
          \n \\(40\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(41\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n 0\n \n 0\n
          \n \\(43\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n 0\n \n 0\n
          \n \\(45\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(46\\)\n \n 0\n \n 0\n
          \n \\(47\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n 0\n \n 0\n
          \n \\(49\\)\n \n 0\n \n 0\n
          \n \\(50\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(51\\)\n \n 0\n \n 0\n
          \n \\(52\\)\n \n 0\n \n 0\n
          \n \\(53\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n 0\n \n 0\n
          \n \\(55\\)\n \n 0\n \n 0\n
          \n \\(56\\)\n \n 0\n \n 0\n
          \n \\(57\\)\n \n 0\n \n 0\n
          \n \\(58\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(59\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n 0\n \n 0\n
          \n \\(61\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n 0\n \n 0\n
          \n \\(63\\)\n \n 0\n \n 0\n
          \n \\(64\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(65\\)\n \n 0\n \n 0\n
          \n \\(66\\)\n \n 0\n \n 0\n
          \n \\(67\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(69\\)\n \n 0\n \n 0\n
          \n \\(70\\)\n \n 0\n \n 0\n
          \n \\(71\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(73\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(75\\)\n \n 0\n \n 0\n
          \n \\(76\\)\n \n 0\n \n 0\n
          \n \\(77\\)\n \n 0\n \n 0\n
          \n \\(78\\)\n \n 0\n \n 0\n
          \n \\(79\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(81\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(83\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n 0\n \n 0\n
          \n \\(85\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(86\\)\n \n 0\n \n 0\n
          \n \\(87\\)\n \n 0\n \n 0\n
          \n \\(88\\)\n \n 0\n \n 0\n
          \n \\(89\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(91\\)\n \n 0\n \n 0\n
          \n \\(92\\)\n \n 0\n \n 0\n
          \n \\(93\\)\n \n 0\n \n 0\n
          \n \\(94\\)\n \n 0\n \n 0\n
          \n \\(95\\)\n \n 0\n \n 0\n
          \n \\(96\\)\n \n 0\n \n 0\n
          \n \\(97\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(98\\)\n \n 0\n \n 0\n
          \n \\(99\\)\n \n 0\n \n 0\n
          \n \\(100\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(101\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n 0\n \n 0\n
          \n \\(103\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n 0\n \n 0\n
          \n \\(105\\)\n \n 0\n \n 0\n
          \n \\(106\\)\n \n 0\n \n 0\n
          \n \\(107\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n 0\n \n 0\n
          \n \\(109\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n 0\n \n 0\n
          \n \\(111\\)\n \n 0\n \n 0\n
          \n \\(112\\)\n \n 0\n \n 0\n
          \n \\(113\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n 0\n \n 0\n
          \n \\(115\\)\n \n 0\n \n 0\n
          \n \\(116\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(117\\)\n \n 0\n \n 0\n
          \n \\(118\\)\n \n 0\n \n 0\n
          \n \\(119\\)\n \n 0\n \n 0\n
          \n \\(120\\)\n \n 0\n \n 0\n
          \n \\(121\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(123\\)\n \n 0\n \n 0\n
          \n \\(124\\)\n \n 0\n \n 0\n
          \n \\(125\\)\n \n 0\n \n 0\n
          \n \\(126\\)\n \n 0\n \n 0\n
          \n \\(127\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(129\\)\n \n 0\n \n 0\n
          \n \\(130\\)\n \n 0\n \n 0\n
          \n \\(131\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n 0\n \n 0\n
          \n \\(133\\)\n \n 0\n \n 0\n
          \n \\(134\\)\n \n 0\n \n 0\n
          \n \\(135\\)\n \n 0\n \n 0\n
          \n \\(136\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(137\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n 0\n \n 0\n
          \n \\(139\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n 0\n \n 0\n
          \n \\(141\\)\n \n 0\n \n 0\n
          \n \\(142\\)\n \n 0\n \n 0\n
          \n \\(143\\)\n \n 0\n \n 0\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(145\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(147\\)\n \n 0\n \n 0\n
          \n \\(148\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(149\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n 0\n \n 0\n
          \n \\(151\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n 0\n \n 0\n
          \n \\(153\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(154\\)\n \n 0\n \n 0\n
          \n \\(155\\)\n \n 0\n \n 0\n
          \n \\(156\\)\n \n 0\n \n 0\n
          \n \\(157\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n 0\n \n 0\n
          \n \\(159\\)\n \n 0\n \n 0\n
          \n \\(160\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(161\\)\n \n 0\n \n 0\n
          \n \\(162\\)\n \n 1.00000i\n 1.00000i
          \n \\(163\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(165\\)\n \n 0\n \n 0\n
          \n \\(166\\)\n \n 0\n \n 0\n
          \n \\(167\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n 0\n \n 0\n
          \n \\(169\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(170\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(171\\)\n \n 0\n \n 0\n
          \n \\(172\\)\n \n 0\n \n 0\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n 0\n \n 0\n
          \n \\(175\\)\n \n 0\n \n 0\n
          \n \\(176\\)\n \n 0\n \n 0\n
          \n \\(177\\)\n \n 0\n \n 0\n
          \n \\(178\\)\n \n 0\n \n 0\n
          \n \\(179\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n 0\n \n 0\n
          \n \\(183\\)\n \n 0\n \n 0\n
          \n \\(184\\)\n \n 0\n \n 0\n
          \n \\(185\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(186\\)\n \n 0\n \n 0\n
          \n \\(187\\)\n \n 0\n \n 0\n
          \n \\(188\\)\n \n 0\n \n 0\n
          \n \\(189\\)\n \n 0\n \n 0\n
          \n \\(190\\)\n \n 0\n \n 0\n
          \n \\(191\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n 0\n \n 0\n
          \n \\(193\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(195\\)\n \n 0\n \n 0\n
          \n \\(196\\)\n \n 0\n \n 0\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n 0\n \n 0\n
          \n \\(199\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(201\\)\n \n 0\n \n 0\n
          \n \\(202\\)\n \n 0\n \n 0\n
          \n \\(203\\)\n \n 0\n \n 0\n
          \n \\(204\\)\n \n 0\n \n 0\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(206\\)\n \n 0\n \n 0\n
          \n \\(207\\)\n \n 0\n \n 0\n
          \n \\(208\\)\n \n 0\n \n 0\n
          \n \\(209\\)\n \n 0\n \n 0\n
          \n \\(210\\)\n \n 0\n \n 0\n
          \n \\(211\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n 0\n \n 0\n
          \n \\(213\\)\n \n 0\n \n 0\n
          \n \\(214\\)\n \n 0\n \n 0\n
          \n \\(215\\)\n \n 0\n \n 0\n
          \n \\(216\\)\n \n 0\n \n 0\n
          \n \\(217\\)\n \n 0\n \n 0\n
          \n \\(218\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(219\\)\n \n 0\n \n 0\n
          \n \\(220\\)\n \n 0\n \n 0\n
          \n \\(221\\)\n \n 0\n \n 0\n
          \n \\(222\\)\n \n 0\n \n 0\n
          \n \\(223\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n 0\n \n 0\n
          \n \\(225\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(227\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n 0\n \n 0\n
          \n \\(229\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n 0\n \n 0\n
          \n \\(231\\)\n \n 0\n \n 0\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n 0\n \n 0\n
          \n \\(235\\)\n \n 0\n \n 0\n
          \n \\(236\\)\n \n 0\n \n 0\n
          \n \\(237\\)\n \n 0\n \n 0\n
          \n \\(238\\)\n \n 0\n \n 0\n
          \n \\(239\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n 0\n \n 0\n
          \n \\(241\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(243\\)\n \n 0\n \n 0\n
          \n \\(244\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(245\\)\n \n 0\n \n 0\n
          \n \\(246\\)\n \n 0\n \n 0\n
          \n \\(247\\)\n \n 0\n \n 0\n
          \n \\(248\\)\n \n 0\n \n 0\n
          \n \\(249\\)\n \n 0\n \n 0\n
          \n \\(250\\)\n \n 0\n \n 0\n
          \n \\(251\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n 0\n \n 0\n
          \n \\(253\\)\n \n 0\n \n 0\n
          \n \\(254\\)\n \n 0\n \n 0\n
          \n \\(255\\)\n \n 0\n \n 0\n
          \n \\(256\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(257\\)\n \n 1.73205\n \n \u2212\n \n 1.00000i\n 1.73205\n \n \u2212\n \n 1.00000i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n 0\n \n 0\n
          \n \\(259\\)\n \n 0\n \n 0\n
          \n \\(260\\)\n \n 0\n \n 0\n
          \n \\(261\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(262\\)\n \n 0\n \n 0\n
          \n \\(263\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n 0\n \n 0\n
          \n \\(265\\)\n \n 0\n \n 0\n
          \n \\(266\\)\n \n 0\n \n 0\n
          \n \\(267\\)\n \n 0\n \n 0\n
          \n \\(268\\)\n \n 0\n \n 0\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n 0\n \n 0\n
          \n \\(271\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n 1.00000\n
          \n \\(273\\)\n \n 0\n \n 0\n
          \n \\(274\\)\n \n 0\n \n 0\n
          \n \\(275\\)\n \n 0\n \n 0\n
          \n \\(276\\)\n \n 0\n \n 0\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n 0\n \n 0\n
          \n \\(279\\)\n \n 0\n \n 0\n
          \n \\(280\\)\n \n 0\n \n 0\n
          \n \\(281\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n 0\n \n 0\n
          \n \\(283\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n 0\n \n 0\n
          \n \\(285\\)\n \n 0\n \n 0\n
          \n \\(286\\)\n \n 0\n \n 0\n
          \n \\(287\\)\n \n 0\n \n 0\n
          \n \\(288\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(289\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(290\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(291\\)\n \n 0\n \n 0\n
          \n \\(292\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(293\\)\n \n 2.00000\n \n 2.00000\n \n 1.00000\n \n \\(0\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(294\\)\n \n 0\n \n 0\n
          \n \\(295\\)\n \n 0\n \n 0\n
          \n \\(296\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(297\\)\n \n 0\n \n 0\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n 1.73205\n \n +\n \n 1.00000i
          \n \\(299\\)\n \n 0\n \n 0\n
          \n \\(300\\)\n \n 0\n \n 0\n
          \n \\(301\\)\n \n 0\n \n 0\n
          \n \\(302\\)\n \n 0\n \n 0\n
          \n \\(303\\)\n \n 0\n \n 0\n
          \n \\(304\\)\n \n 0\n \n 0\n
          \n \\(305\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(307\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n 0\n \n 0\n
          \n \\(309\\)\n \n 0\n \n 0\n
          \n \\(310\\)\n \n 0\n \n 0\n
          \n \\(311\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n 0\n \n 0\n
          \n \\(313\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n 2.00000i\n 2.00000i
          \n \\(315\\)\n \n 0\n \n 0\n
          \n \\(316\\)\n \n 0\n \n 0\n
          \n \\(317\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n 0\n \n 0\n
          \n \\(319\\)\n \n 0\n \n 0\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(321\\)\n \n 0\n \n 0\n
          \n \\(322\\)\n \n 0\n \n 0\n
          \n \\(323\\)\n \n 0\n \n 0\n
          \n \\(324\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(325\\)\n \n 0\n \n 0\n
          \n \\(326\\)\n \n 0\n \n 0\n
          \n \\(327\\)\n \n 0\n \n 0\n
          \n \\(328\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(329\\)\n \n 0\n \n 0\n
          \n \\(330\\)\n \n 0\n \n 0\n
          \n \\(331\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n 0\n \n 0\n
          \n \\(333\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(334\\)\n \n 0\n \n 0\n
          \n \\(335\\)\n \n 0\n \n 0\n
          \n \\(336\\)\n \n 0\n \n 0\n
          \n \\(337\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(339\\)\n \n 0\n \n 0\n
          \n \\(340\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(341\\)\n \n 0\n \n 0\n
          \n \\(342\\)\n \n 0\n \n 0\n
          \n \\(343\\)\n \n 0\n \n 0\n
          \n \\(344\\)\n \n 0\n \n 0\n
          \n \\(345\\)\n \n 0\n \n 0\n
          \n \\(346\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(347\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n 0\n \n 0\n
          \n \\(349\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n 0\n \n 0\n
          \n \\(351\\)\n \n 0\n \n 0\n
          \n \\(352\\)\n \n 0\n \n 0\n
          \n \\(353\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n 0\n \n 0\n
          \n \\(355\\)\n \n 0\n \n 0\n
          \n \\(356\\)\n \n 0\n \n 0\n
          \n \\(357\\)\n \n 0\n \n 0\n
          \n \\(358\\)\n \n 0\n \n 0\n
          \n \\(359\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(361\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(362\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(363\\)\n \n 0\n \n 0\n
          \n \\(364\\)\n \n 0\n \n 0\n
          \n \\(365\\)\n \n 2.00000i\n 2.00000i
          \n \\(366\\)\n \n 0\n \n 0\n
          \n \\(367\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n 0\n \n 0\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(370\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(371\\)\n \n 0\n \n 0\n
          \n \\(372\\)\n \n 0\n \n 0\n
          \n \\(373\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n 0\n \n 0\n
          \n \\(375\\)\n \n 0\n \n 0\n
          \n \\(376\\)\n \n 0\n \n 0\n
          \n \\(377\\)\n \n 0\n \n 0\n
          \n \\(378\\)\n \n 0\n \n 0\n
          \n \\(379\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n 0\n \n 0\n
          \n \\(381\\)\n \n 0\n \n 0\n
          \n \\(382\\)\n \n 0\n \n 0\n
          \n \\(383\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n 0\n \n 0\n
          \n \\(385\\)\n \n 0\n \n 0\n
          \n \\(386\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(387\\)\n \n 0\n \n 0\n
          \n \\(388\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(389\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n 0\n \n 0\n
          \n \\(391\\)\n \n 0\n \n 0\n
          \n \\(392\\)\n \n 0\n \n 0\n
          \n \\(393\\)\n \n 0\n \n 0\n
          \n \\(394\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(395\\)\n \n 0\n \n 0\n
          \n \\(396\\)\n \n 0\n \n 0\n
          \n \\(397\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n 0\n \n 0\n
          \n \\(399\\)\n \n 0\n \n 0\n
          \n \\(400\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(401\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n 0\n \n 0\n
          \n \\(403\\)\n \n 0\n \n 0\n
          \n \\(404\\)\n \n 0\n \n 0\n
          \n \\(405\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(406\\)\n \n 0\n \n 0\n
          \n \\(407\\)\n \n 0\n \n 0\n
          \n \\(408\\)\n \n 0\n \n 0\n
          \n \\(409\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(411\\)\n \n 0\n \n 0\n
          \n \\(412\\)\n \n 0\n \n 0\n
          \n \\(413\\)\n \n 0\n \n 0\n
          \n \\(414\\)\n \n 0\n \n 0\n
          \n \\(415\\)\n \n 0\n \n 0\n
          \n \\(416\\)\n \n 0\n \n 0\n
          \n \\(417\\)\n \n 0\n \n 0\n
          \n \\(418\\)\n \n 0\n \n 0\n
          \n \\(419\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n 0\n \n 0\n
          \n \\(421\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n 0\n \n 0\n
          \n \\(423\\)\n \n 0\n \n 0\n
          \n \\(424\\)\n \n 0\n \n 0\n
          \n \\(425\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(426\\)\n \n 0\n \n 0\n
          \n \\(427\\)\n \n 0\n \n 0\n
          \n \\(428\\)\n \n 0\n \n 0\n
          \n \\(429\\)\n \n 0\n \n 0\n
          \n \\(430\\)\n \n 0\n \n 0\n
          \n \\(431\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n 0\n \n 0\n
          \n \\(433\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n 0\n \n 0\n
          \n \\(435\\)\n \n 0\n \n 0\n
          \n \\(436\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(437\\)\n \n 0\n \n 0\n
          \n \\(438\\)\n \n 0\n \n 0\n
          \n \\(439\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n 0\n \n 0\n
          \n \\(441\\)\n \n 0\n \n 0\n
          \n \\(442\\)\n \n 0\n \n 0\n
          \n \\(443\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n 0\n \n 0\n
          \n \\(445\\)\n \n 0\n \n 0\n
          \n \\(446\\)\n \n 0\n \n 0\n
          \n \\(447\\)\n \n 0\n \n 0\n
          \n \\(448\\)\n \n 0\n \n 0\n
          \n \\(449\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(451\\)\n \n 0\n \n 0\n
          \n \\(452\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(453\\)\n \n 0\n \n 0\n
          \n \\(454\\)\n \n 0\n \n 0\n
          \n \\(455\\)\n \n 0\n \n 0\n
          \n \\(456\\)\n \n 0\n \n 0\n
          \n \\(457\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(459\\)\n \n 0\n \n 0\n
          \n \\(460\\)\n \n 0\n \n 0\n
          \n \\(461\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n 0\n \n 0\n
          \n \\(463\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(465\\)\n \n 0\n \n 0\n
          \n \\(466\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(467\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n 0\n \n 0\n
          \n \\(469\\)\n \n 0\n \n 0\n
          \n \\(470\\)\n \n 0\n \n 0\n
          \n \\(471\\)\n \n 0\n \n 0\n
          \n \\(472\\)\n \n 0\n \n 0\n
          \n \\(473\\)\n \n 0\n \n 0\n
          \n \\(474\\)\n \n 0\n \n 0\n
          \n \\(475\\)\n \n 0\n \n 0\n
          \n \\(476\\)\n \n 0\n \n 0\n
          \n \\(477\\)\n \n 0\n \n 0\n
          \n \\(478\\)\n \n 0\n \n 0\n
          \n \\(479\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n 0\n \n 0\n
          \n \\(481\\)\n \n 0\n \n 0\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(483\\)\n \n 0\n \n 0\n
          \n \\(484\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(485\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(486\\)\n \n 0\n \n 0\n
          \n \\(487\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(489\\)\n \n 0\n \n 0\n
          \n \\(490\\)\n \n 0\n \n 0\n
          \n \\(491\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n 0\n \n 0\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(494\\)\n \n 0\n \n 0\n
          \n \\(495\\)\n \n 0\n \n 0\n
          \n \\(496\\)\n \n 0\n \n 0\n
          \n \\(497\\)\n \n 0\n \n 0\n
          \n \\(498\\)\n \n 0\n \n 0\n
          \n \\(499\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n 0\n \n 0\n
          \n \\(501\\)\n \n 0\n \n 0\n
          \n \\(502\\)\n \n 0\n \n 0\n
          \n \\(503\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n 0\n \n 0\n
          \n \\(505\\)\n \n 0\n \n 0\n
          \n \\(506\\)\n \n 0\n \n 0\n
          \n \\(507\\)\n \n 0\n \n 0\n
          \n \\(508\\)\n \n 0\n \n 0\n
          \n \\(509\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n 0\n \n 0\n
          \n \\(511\\)\n \n 0\n \n 0\n
          \n \\(512\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(513\\)\n \n 0\n \n 0\n
          \n \\(514\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(515\\)\n \n 0\n \n 0\n
          \n \\(516\\)\n \n 0\n \n 0\n
          \n \\(517\\)\n \n 0\n \n 0\n
          \n \\(518\\)\n \n 0\n \n 0\n
          \n \\(519\\)\n \n 0\n \n 0\n
          \n \\(520\\)\n \n 0\n \n 0\n
          \n \\(521\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(523\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n 0\n \n 0\n
          \n \\(525\\)\n \n 0\n \n 0\n
          \n \\(526\\)\n \n 0\n \n 0\n
          \n \\(527\\)\n \n 0\n \n 0\n
          \n \\(528\\)\n \n 0\n \n 0\n
          \n \\(529\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(530\\)\n \n 0\n \n 0\n
          \n \\(531\\)\n \n 0\n \n 0\n
          \n \\(532\\)\n \n 0\n \n 0\n
          \n \\(533\\)\n \n 0\n \n 0\n
          \n \\(534\\)\n \n 0\n \n 0\n
          \n \\(535\\)\n \n 0\n \n 0\n
          \n \\(536\\)\n \n 0\n \n 0\n
          \n \\(537\\)\n \n 0\n \n 0\n
          \n \\(538\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(539\\)\n \n 0\n \n 0\n
          \n \\(540\\)\n \n 0\n \n 0\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n 0\n \n 0\n
          \n \\(543\\)\n \n 0\n \n 0\n
          \n \\(544\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(545\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(546\\)\n \n 0\n \n 0\n
          \n \\(547\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n 0\n \n 0\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(550\\)\n \n 0\n \n 0\n
          \n \\(551\\)\n \n 0\n \n 0\n
          \n \\(552\\)\n \n 0\n \n 0\n
          \n \\(553\\)\n \n 0\n \n 0\n
          \n \\(554\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(555\\)\n \n 0\n \n 0\n
          \n \\(556\\)\n \n 0\n \n 0\n
          \n \\(557\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n 0\n \n 0\n
          \n \\(559\\)\n \n 0\n \n 0\n
          \n \\(560\\)\n \n 0\n \n 0\n
          \n \\(561\\)\n \n 0\n \n 0\n
          \n \\(562\\)\n \n 0\n \n 0\n
          \n \\(563\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n 0\n \n 0\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(566\\)\n \n 0\n \n 0\n
          \n \\(567\\)\n \n 0\n \n 0\n
          \n \\(568\\)\n \n 0\n \n 0\n
          \n \\(569\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n 0\n \n 0\n
          \n \\(571\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n 0\n \n 0\n
          \n \\(573\\)\n \n 0\n \n 0\n
          \n \\(574\\)\n \n 0\n \n 0\n
          \n \\(575\\)\n \n 0\n \n 0\n
          \n \\(576\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(577\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(579\\)\n \n 0\n \n 0\n
          \n \\(580\\)\n \n 2.00000i\n 2.00000i
          \n \\(581\\)\n \n 0\n \n 0\n
          \n \\(582\\)\n \n 0\n \n 0\n
          \n \\(583\\)\n \n 0\n \n 0\n
          \n \\(584\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(585\\)\n \n 0\n \n 0\n
          \n \\(586\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(587\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n 0\n \n 0\n
          \n \\(589\\)\n \n 0\n \n 0\n
          \n \\(590\\)\n \n 0\n \n 0\n
          \n \\(591\\)\n \n 0\n \n 0\n
          \n \\(592\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(593\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n 0\n \n 0\n
          \n \\(595\\)\n \n 0\n \n 0\n
          \n \\(596\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(597\\)\n \n 0\n \n 0\n
          \n \\(598\\)\n \n 0\n \n 0\n
          \n \\(599\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n 0\n \n 0\n
          \n \\(601\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n 0\n \n 0\n
          \n \\(603\\)\n \n 0\n \n 0\n
          \n \\(604\\)\n \n 0\n \n 0\n
          \n \\(605\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(606\\)\n \n 0\n \n 0\n
          \n \\(607\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n 0\n \n 0\n
          \n \\(609\\)\n \n 0\n \n 0\n
          \n \\(610\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(611\\)\n \n 0\n \n 0\n
          \n \\(612\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(613\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n 0\n \n 0\n
          \n \\(615\\)\n \n 0\n \n 0\n
          \n \\(616\\)\n \n 0\n \n 0\n
          \n \\(617\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n 0\n \n 0\n
          \n \\(619\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n 0\n \n 0\n
          \n \\(621\\)\n \n 0\n \n 0\n
          \n \\(622\\)\n \n 0\n \n 0\n
          \n \\(623\\)\n \n 0\n \n 0\n
          \n \\(624\\)\n \n 0\n \n 0\n
          \n \\(625\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(626\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(627\\)\n \n 0\n \n 0\n
          \n \\(628\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(629\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(630\\)\n \n 0\n \n 0\n
          \n \\(631\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n 0\n \n 0\n
          \n \\(633\\)\n \n 0\n \n 0\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(635\\)\n \n 0\n \n 0\n
          \n \\(636\\)\n \n 0\n \n 0\n
          \n \\(637\\)\n \n 0\n \n 0\n
          \n \\(638\\)\n \n 0\n \n 0\n
          \n \\(639\\)\n \n 0\n \n 0\n
          \n \\(640\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(641\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n 0\n \n 0\n
          \n \\(643\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n 0\n \n 0\n
          \n \\(645\\)\n \n 0\n \n 0\n
          \n \\(646\\)\n \n 0\n \n 0\n
          \n \\(647\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(649\\)\n \n 0\n \n 0\n
          \n \\(650\\)\n \n 0\n \n 0\n
          \n \\(651\\)\n \n 0\n \n 0\n
          \n \\(652\\)\n \n 0\n \n 0\n
          \n \\(653\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n 0\n \n 0\n
          \n \\(655\\)\n \n 0\n \n 0\n
          \n \\(656\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(658\\)\n \n 0\n \n 0\n
          \n \\(659\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n 0\n \n 0\n
          \n \\(661\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n 0\n \n 0\n
          \n \\(663\\)\n \n 0\n \n 0\n
          \n \\(664\\)\n \n 0\n \n 0\n
          \n \\(665\\)\n \n 0\n \n 0\n
          \n \\(666\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(667\\)\n \n 0\n \n 0\n
          \n \\(668\\)\n \n 0\n \n 0\n
          \n \\(669\\)\n \n 0\n \n 0\n
          \n \\(670\\)\n \n 0\n \n 0\n
          \n \\(671\\)\n \n 0\n \n 0\n
          \n \\(672\\)\n \n 0\n \n 0\n
          \n \\(673\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(675\\)\n \n 0\n \n 0\n
          \n \\(676\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n 0\n \n 0\n
          \n \\(679\\)\n \n 0\n \n 0\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(681\\)\n \n 0\n \n 0\n
          \n \\(682\\)\n \n 0\n \n 0\n
          \n \\(683\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n 0\n \n 0\n
          \n \\(685\\)\n \n 0\n \n 0\n
          \n \\(686\\)\n \n 0\n \n 0\n
          \n \\(687\\)\n \n 0\n \n 0\n
          \n \\(688\\)\n \n 0\n \n 0\n
          \n \\(689\\)\n \n 0\n \n 0\n
          \n \\(690\\)\n \n 0\n \n 0\n
          \n \\(691\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(693\\)\n \n 0\n \n 0\n
          \n \\(694\\)\n \n 0\n \n 0\n
          \n \\(695\\)\n \n 0\n \n 0\n
          \n \\(696\\)\n \n 0\n \n 0\n
          \n \\(697\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(698\\)\n \n 0\n \n 0\n
          \n \\(699\\)\n \n 0\n \n 0\n
          \n \\(700\\)\n \n 0\n \n 0\n
          \n \\(701\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n 0\n \n 0\n
          \n \\(703\\)\n \n 0\n \n 0\n
          \n \\(704\\)\n \n 0\n \n 0\n
          \n \\(705\\)\n \n 0\n \n 0\n
          \n \\(706\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(707\\)\n \n 0\n \n 0\n
          \n \\(708\\)\n \n 0\n \n 0\n
          \n \\(709\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n 0\n \n 0\n
          \n \\(711\\)\n \n 0\n \n 0\n
          \n \\(712\\)\n \n 0\n \n 0\n
          \n \\(713\\)\n \n 0\n \n 0\n
          \n \\(714\\)\n \n 0\n \n 0\n
          \n \\(715\\)\n \n 0\n \n 0\n
          \n \\(716\\)\n \n 0\n \n 0\n
          \n \\(717\\)\n \n 0\n \n 0\n
          \n \\(718\\)\n \n 0\n \n 0\n
          \n \\(719\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(721\\)\n \n 0\n \n 0\n
          \n \\(722\\)\n \n 1.00000i\n 1.00000i
          \n \\(723\\)\n \n 0\n \n 0\n
          \n \\(724\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(725\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(726\\)\n \n 0\n \n 0\n
          \n \\(727\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n 0\n \n 0\n
          \n \\(729\\)\n \n 1.00000i\n 1.00000i
          \n \\(730\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(731\\)\n \n 0\n \n 0\n
          \n \\(732\\)\n \n 0\n \n 0\n
          \n \\(733\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n 0\n \n 0\n
          \n \\(735\\)\n \n 0\n \n 0\n
          \n \\(736\\)\n \n 0\n \n 0\n
          \n \\(737\\)\n \n 0\n \n 0\n
          \n \\(738\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(739\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(741\\)\n \n 0\n \n 0\n
          \n \\(742\\)\n \n 0\n \n 0\n
          \n \\(743\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n 0\n \n 0\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n 0.732051\n \n +\n \n 2.73205i
          \n \\(746\\)\n \n 0\n \n 0\n
          \n \\(747\\)\n \n 0\n \n 0\n
          \n \\(748\\)\n \n 0\n \n 0\n
          \n \\(749\\)\n \n 0\n \n 0\n
          \n \\(750\\)\n \n 0\n \n 0\n
          \n \\(751\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n 0\n \n 0\n
          \n \\(753\\)\n \n 0\n \n 0\n
          \n \\(754\\)\n \n 0\n \n 0\n
          \n \\(755\\)\n \n 0\n \n 0\n
          \n \\(756\\)\n \n 0\n \n 0\n
          \n \\(757\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n 0\n \n 0\n
          \n \\(759\\)\n \n 0\n \n 0\n
          \n \\(760\\)\n \n 0\n \n 0\n
          \n \\(761\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n 0\n \n 0\n
          \n \\(763\\)\n \n 0\n \n 0\n
          \n \\(764\\)\n \n 0\n \n 0\n
          \n \\(765\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(766\\)\n \n 0\n \n 0\n
          \n \\(767\\)\n \n 0\n \n 0\n
          \n \\(768\\)\n \n 0\n \n 0\n
          \n \\(769\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n 0\n \n 0\n
          \n \\(771\\)\n \n 0\n \n 0\n
          \n \\(772\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(773\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n 0\n \n 0\n
          \n \\(775\\)\n \n 0\n \n 0\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(777\\)\n \n 0\n \n 0\n
          \n \\(778\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(779\\)\n \n 0\n \n 0\n
          \n \\(780\\)\n \n 0\n \n 0\n
          \n \\(781\\)\n \n 0\n \n 0\n
          \n \\(782\\)\n \n 0\n \n 0\n
          \n \\(783\\)\n \n 0\n \n 0\n
          \n \\(784\\)\n \n 0\n \n 0\n
          \n \\(785\\)\n \n \u22122.00000\n \n +\n \n 2.00000i\n \u22122.00000\n \n +\n \n 2.00000i
          \n \\(786\\)\n \n 0\n \n 0\n
          \n \\(787\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(789\\)\n \n 0\n \n 0\n
          \n \\(790\\)\n \n 0\n \n 0\n
          \n \\(791\\)\n \n 0\n \n 0\n
          \n \\(792\\)\n \n 0\n \n 0\n
          \n \\(793\\)\n \n 0\n \n 0\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(795\\)\n \n 0\n \n 0\n
          \n \\(796\\)\n \n 0\n \n 0\n
          \n \\(797\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n 0\n \n 0\n
          \n \\(799\\)\n \n 0\n \n 0\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(801\\)\n \n 0\n \n 0\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(803\\)\n \n 0\n \n 0\n
          \n \\(804\\)\n \n 0\n \n 0\n
          \n \\(805\\)\n \n 0\n \n 0\n
          \n \\(806\\)\n \n 0\n \n 0\n
          \n \\(807\\)\n \n 0\n \n 0\n
          \n \\(808\\)\n \n 0\n \n 0\n
          \n \\(809\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(811\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n 0\n \n 0\n
          \n \\(813\\)\n \n 0\n \n 0\n
          \n \\(814\\)\n \n 0\n \n 0\n
          \n \\(815\\)\n \n 0\n \n 0\n
          \n \\(816\\)\n \n 0\n \n 0\n
          \n \\(817\\)\n \n 0\n \n 0\n
          \n \\(818\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(819\\)\n \n 0\n \n 0\n
          \n \\(820\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(821\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n 0\n \n 0\n
          \n \\(823\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n 0\n \n 0\n
          \n \\(825\\)\n \n 0\n \n 0\n
          \n \\(826\\)\n \n 0\n \n 0\n
          \n \\(827\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n 0\n \n 0\n
          \n \\(829\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n 0\n \n 0\n
          \n \\(831\\)\n \n 0\n \n 0\n
          \n \\(832\\)\n \n 0\n \n 0\n
          \n \\(833\\)\n \n 0\n \n 0\n
          \n \\(834\\)\n \n 0\n \n 0\n
          \n \\(835\\)\n \n 0\n \n 0\n
          \n \\(836\\)\n \n 0\n \n 0\n
          \n \\(837\\)\n \n 0\n \n 0\n
          \n \\(838\\)\n \n 0\n \n 0\n
          \n \\(839\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n 0\n \n 0\n
          \n \\(841\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(842\\)\n \n 0\n \n 0\n
          \n \\(843\\)\n \n 0\n \n 0\n
          \n \\(844\\)\n \n 0\n \n 0\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(846\\)\n \n 0\n \n 0\n
          \n \\(847\\)\n \n 0\n \n 0\n
          \n \\(848\\)\n \n 0\n \n 0\n
          \n \\(849\\)\n \n 0\n \n 0\n
          \n \\(850\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(851\\)\n \n 0\n \n 0\n
          \n \\(852\\)\n \n 0\n \n 0\n
          \n \\(853\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(854\\)\n \n 0\n \n 0\n
          \n \\(855\\)\n \n 0\n \n 0\n
          \n \\(856\\)\n \n 0\n \n 0\n
          \n \\(857\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n 0\n \n 0\n
          \n \\(859\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n 0\n \n 0\n
          \n \\(861\\)\n \n 0\n \n 0\n
          \n \\(862\\)\n \n 0\n \n 0\n
          \n \\(863\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n 0\n \n 0\n
          \n \\(865\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(866\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(867\\)\n \n 0\n \n 0\n
          \n \\(868\\)\n \n 0\n \n 0\n
          \n \\(869\\)\n \n 0\n \n 0\n
          \n \\(870\\)\n \n 0\n \n 0\n
          \n \\(871\\)\n \n 0\n \n 0\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(873\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(874\\)\n \n 0\n \n 0\n
          \n \\(875\\)\n \n 0\n \n 0\n
          \n \\(876\\)\n \n 0\n \n 0\n
          \n \\(877\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n 0\n \n 0\n
          \n \\(879\\)\n \n 0\n \n 0\n
          \n \\(880\\)\n \n 0\n \n 0\n
          \n \\(881\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n 0\n \n 0\n
          \n \\(883\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n 0\n \n 0\n
          \n \\(885\\)\n \n 0\n \n 0\n
          \n \\(886\\)\n \n 0\n \n 0\n
          \n \\(887\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n 0\n \n 0\n
          \n \\(889\\)\n \n 0\n \n 0\n
          \n \\(890\\)\n \n 0\n \n 0\n
          \n \\(891\\)\n \n 0\n \n 0\n
          \n \\(892\\)\n \n 0\n \n 0\n
          \n \\(893\\)\n \n 0\n \n 0\n
          \n \\(894\\)\n \n 0\n \n 0\n
          \n \\(895\\)\n \n 0\n \n 0\n
          \n \\(896\\)\n \n 0\n \n 0\n
          \n \\(897\\)\n \n 0\n \n 0\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(899\\)\n \n 0\n \n 0\n
          \n \\(900\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(901\\)\n \n 0\n \n 0\n
          \n \\(902\\)\n \n 0\n \n 0\n
          \n \\(903\\)\n \n 0\n \n 0\n
          \n \\(904\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(905\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(906\\)\n \n 0\n \n 0\n
          \n \\(907\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n 0\n \n 0\n
          \n \\(909\\)\n \n 0\n \n 0\n
          \n \\(910\\)\n \n 0\n \n 0\n
          \n \\(911\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n 0\n \n 0\n
          \n \\(913\\)\n \n 0\n \n 0\n
          \n \\(914\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(915\\)\n \n 0\n \n 0\n
          \n \\(916\\)\n \n 2.00000i\n 2.00000i
          \n \\(917\\)\n \n 0\n \n 0\n
          \n \\(918\\)\n \n 0\n \n 0\n
          \n \\(919\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n 0\n \n 0\n
          \n \\(921\\)\n \n 0\n \n 0\n
          \n \\(922\\)\n \n 0\n \n 0\n
          \n \\(923\\)\n \n 0\n \n 0\n
          \n \\(924\\)\n \n 0\n \n 0\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(926\\)\n \n 0\n \n 0\n
          \n \\(927\\)\n \n 0\n \n 0\n
          \n \\(928\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(929\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n 0\n \n 0\n
          \n \\(931\\)\n \n 0\n \n 0\n
          \n \\(932\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(933\\)\n \n 0\n \n 0\n
          \n \\(934\\)\n \n 0\n \n 0\n
          \n \\(935\\)\n \n 0\n \n 0\n
          \n \\(936\\)\n \n 0\n \n 0\n
          \n \\(937\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n 0\n \n 0\n
          \n \\(939\\)\n \n 0\n \n 0\n
          \n \\(940\\)\n \n 0\n \n 0\n
          \n \\(941\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n 0\n \n 0\n
          \n \\(943\\)\n \n 0\n \n 0\n
          \n \\(944\\)\n \n 0\n \n 0\n
          \n \\(945\\)\n \n 0\n \n 0\n
          \n \\(946\\)\n \n 0\n \n 0\n
          \n \\(947\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n 0\n \n 0\n
          \n \\(949\\)\n \n 0\n \n 0\n
          \n \\(950\\)\n \n 0\n \n 0\n
          \n \\(951\\)\n \n 0\n \n 0\n
          \n \\(952\\)\n \n 0\n \n 0\n
          \n \\(953\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n 0\n \n 0\n
          \n \\(955\\)\n \n 0\n \n 0\n
          \n \\(956\\)\n \n 0\n \n 0\n
          \n \\(957\\)\n \n 0\n \n 0\n
          \n \\(958\\)\n \n 0\n \n 0\n
          \n \\(959\\)\n \n 0\n \n 0\n
          \n \\(960\\)\n \n 0\n \n 0\n
          \n \\(961\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(962\\)\n \n 0\n \n 0\n
          \n \\(963\\)\n \n 0\n \n 0\n
          \n \\(964\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(965\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(966\\)\n \n 0\n \n 0\n
          \n \\(967\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(969\\)\n \n 0\n \n 0\n
          \n \\(970\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(971\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n 0\n \n 0\n
          \n \\(973\\)\n \n 0\n \n 0\n
          \n \\(974\\)\n \n 0\n \n 0\n
          \n \\(975\\)\n \n 0\n \n 0\n
          \n \\(976\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(977\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n 0\n \n 0\n
          \n \\(979\\)\n \n 0\n \n 0\n
          \n \\(980\\)\n \n 0\n \n 0\n
          \n \\(981\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(982\\)\n \n 0\n \n 0\n
          \n \\(983\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n 0\n \n 0\n
          \n \\(985\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(986\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(987\\)\n \n 0\n \n 0\n
          \n \\(988\\)\n \n 0\n \n 0\n
          \n \\(989\\)\n \n 0\n \n 0\n
          \n \\(990\\)\n \n 0\n \n 0\n
          \n \\(991\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n 0\n \n 0\n
          \n \\(993\\)\n \n 0\n \n 0\n
          \n \\(994\\)\n \n 0\n \n 0\n
          \n \\(995\\)\n \n 0\n \n 0\n
          \n \\(996\\)\n \n 0\n \n 0\n
          \n \\(997\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n 0\n \n 0\n
          \n \\(999\\)\n \n 0\n \n 0\n
          ", "content": {"html": "
          \\(n\\)\\(a_n\\)\\(a_n / n^{(k-1)/2}\\)\\( \\alpha_n \\)\\( \\theta_n \\)
          \\(p\\)\\(a_p\\)\\(a_p / p^{(k-1)/2}\\)\\( \\alpha_p\\)\\( \\theta_p \\)
          \\(2\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(3\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(4\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(5\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(6\\)00
          \\(7\\)00
          \\(8\\)1.00000<br>i1.00000<br>i
          \\(9\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(10\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(11\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(12\\)00
          \\(13\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(14\\)00
          \\(15\\)00
          \\(16\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(17\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(18\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(19\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(20\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(21\\)00
          \\(22\\)00
          \\(23\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(24\\)00
          \\(25\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(26\\)00
          \\(27\\)00
          \\(28\\)00
          \\(29\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(30\\)00
          \\(31\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(32\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(33\\)00
          \\(34\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(35\\)00
          \\(36\\)1.00000<br>i1.00000<br>i
          \\(37\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(38\\)00
          \\(39\\)00
          \\(40\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(41\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(42\\)00
          \\(43\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(44\\)00
          \\(45\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(46\\)00
          \\(47\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(48\\)00
          \\(49\\)00
          \\(50\\)\u22121.00000\u22121.00000
          \\(51\\)00
          \\(52\\)00
          \\(53\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(54\\)00
          \\(55\\)00
          \\(56\\)00
          \\(57\\)00
          \\(58\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(59\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(60\\)00
          \\(61\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(62\\)00
          \\(63\\)00
          \\(64\\)\u22121.00000\u22121.00000
          \\(65\\)00
          \\(66\\)00
          \\(67\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(68\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(69\\)00
          \\(70\\)00
          \\(71\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(72\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(73\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(74\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(75\\)00
          \\(76\\)00
          \\(77\\)00
          \\(78\\)00
          \\(79\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(80\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(81\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(82\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(83\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(84\\)00
          \\(85\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(86\\)00
          \\(87\\)00
          \\(88\\)00
          \\(89\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(90\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(91\\)00
          \\(92\\)00
          \\(93\\)00
          \\(94\\)00
          \\(95\\)00
          \\(96\\)00
          \\(97\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(98\\)00
          \\(99\\)00
          \\(100\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(101\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(102\\)00
          \\(103\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(104\\)00
          \\(105\\)00
          \\(106\\)00
          \\(107\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(108\\)00
          \\(109\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(110\\)00
          \\(111\\)00
          \\(112\\)00
          \\(113\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(114\\)00
          \\(115\\)00
          \\(116\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(117\\)00
          \\(118\\)00
          \\(119\\)00
          \\(120\\)00
          \\(121\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(122\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(123\\)00
          \\(124\\)00
          \\(125\\)00
          \\(126\\)00
          \\(127\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(128\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(129\\)00
          \\(130\\)00
          \\(131\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(132\\)00
          \\(133\\)00
          \\(134\\)00
          \\(135\\)00
          \\(136\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(137\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(138\\)00
          \\(139\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(140\\)00
          \\(141\\)00
          \\(142\\)00
          \\(143\\)00
          \\(144\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(145\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(146\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(147\\)00
          \\(148\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(149\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(150\\)00
          \\(151\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(152\\)00
          \\(153\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(154\\)00
          \\(155\\)00
          \\(156\\)00
          \\(157\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(158\\)00
          \\(159\\)00
          \\(160\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(161\\)00
          \\(162\\)1.00000<br>i1.00000<br>i
          \\(163\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(164\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(165\\)00
          \\(166\\)00
          \\(167\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(168\\)00
          \\(169\\)\u22121.00000\u22121.00000
          \\(170\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(171\\)00
          \\(172\\)00
          \\(173\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(174\\)00
          \\(175\\)00
          \\(176\\)00
          \\(177\\)00
          \\(178\\)00
          \\(179\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(180\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(181\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(182\\)00
          \\(183\\)00
          \\(184\\)00
          \\(185\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(186\\)00
          \\(187\\)00
          \\(188\\)00
          \\(189\\)00
          \\(190\\)00
          \\(191\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(192\\)00
          \\(193\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(194\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(195\\)00
          \\(196\\)00
          \\(197\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(198\\)00
          \\(199\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(200\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(201\\)00
          \\(202\\)00
          \\(203\\)00
          \\(204\\)00
          \\(205\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(206\\)00
          \\(207\\)00
          \\(208\\)00
          \\(209\\)00
          \\(210\\)00
          \\(211\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(212\\)00
          \\(213\\)00
          \\(214\\)00
          \\(215\\)00
          \\(216\\)00
          \\(217\\)00
          \\(218\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(219\\)00
          \\(220\\)00
          \\(221\\)00
          \\(222\\)00
          \\(223\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(224\\)00
          \\(225\\)\u22121.00000\u22121.00000
          \\(226\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(227\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(228\\)00
          \\(229\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(230\\)00
          \\(231\\)00
          \\(232\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(233\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(234\\)00
          \\(235\\)00
          \\(236\\)00
          \\(237\\)00
          \\(238\\)00
          \\(239\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(240\\)00
          \\(241\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(242\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(243\\)00
          \\(244\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(245\\)00
          \\(246\\)00
          \\(247\\)00
          \\(248\\)00
          \\(249\\)00
          \\(250\\)00
          \\(251\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(252\\)00
          \\(253\\)00
          \\(254\\)00
          \\(255\\)00
          \\(256\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(257\\)1.73205\u22121.00000<br>i1.73205\u22121.00000<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(258\\)00
          \\(259\\)00
          \\(260\\)00
          \\(261\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(262\\)00
          \\(263\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(264\\)00
          \\(265\\)00
          \\(266\\)00
          \\(267\\)00
          \\(268\\)00
          \\(269\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(270\\)00
          \\(271\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(272\\)1.000001.00000
          \\(273\\)00
          \\(274\\)00
          \\(275\\)00
          \\(276\\)00
          \\(277\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(278\\)00
          \\(279\\)00
          \\(280\\)00
          \\(281\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(282\\)00
          \\(283\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(284\\)00
          \\(285\\)00
          \\(286\\)00
          \\(287\\)00
          \\(288\\)\u22121.00000\u22121.00000
          \\(289\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(290\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(291\\)00
          \\(292\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(293\\)2.000002.000001.00000\\(0\\)
          1.00000\\(0\\)
          \\(294\\)00
          \\(295\\)00
          \\(296\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(297\\)00
          \\(298\\)1.73205+1.00000<br>i1.73205+1.00000<br>i
          \\(299\\)00
          \\(300\\)00
          \\(301\\)00
          \\(302\\)00
          \\(303\\)00
          \\(304\\)00
          \\(305\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(306\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(307\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(308\\)00
          \\(309\\)00
          \\(310\\)00
          \\(311\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(312\\)00
          \\(313\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(314\\)2.00000<br>i2.00000<br>i
          \\(315\\)00
          \\(316\\)00
          \\(317\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(318\\)00
          \\(319\\)00
          \\(320\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(321\\)00
          \\(322\\)00
          \\(323\\)00
          \\(324\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(325\\)00
          \\(326\\)00
          \\(327\\)00
          \\(328\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(329\\)00
          \\(330\\)00
          \\(331\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(332\\)00
          \\(333\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(334\\)00
          \\(335\\)00
          \\(336\\)00
          \\(337\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(338\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(339\\)00
          \\(340\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(341\\)00
          \\(342\\)00
          \\(343\\)00
          \\(344\\)00
          \\(345\\)00
          \\(346\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(347\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(348\\)00
          \\(349\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(350\\)00
          \\(351\\)00
          \\(352\\)00
          \\(353\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(354\\)00
          \\(355\\)00
          \\(356\\)00
          \\(357\\)00
          \\(358\\)00
          \\(359\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(360\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(361\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(362\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(363\\)00
          \\(364\\)00
          \\(365\\)2.00000<br>i2.00000<br>i
          \\(366\\)00
          \\(367\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(368\\)00
          \\(369\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(370\\)2.000002.00000
          \\(371\\)00
          \\(372\\)00
          \\(373\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(374\\)00
          \\(375\\)00
          \\(376\\)00
          \\(377\\)00
          \\(378\\)00
          \\(379\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(380\\)00
          \\(381\\)00
          \\(382\\)00
          \\(383\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(384\\)00
          \\(385\\)00
          \\(386\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(387\\)00
          \\(388\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(389\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(390\\)00
          \\(391\\)00
          \\(392\\)00
          \\(393\\)00
          \\(394\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(395\\)00
          \\(396\\)00
          \\(397\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(398\\)00
          \\(399\\)00
          \\(400\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(401\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(402\\)00
          \\(403\\)00
          \\(404\\)00
          \\(405\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(406\\)00
          \\(407\\)00
          \\(408\\)00
          \\(409\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(410\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(411\\)00
          \\(412\\)00
          \\(413\\)00
          \\(414\\)00
          \\(415\\)00
          \\(416\\)00
          \\(417\\)00
          \\(418\\)00
          \\(419\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(420\\)00
          \\(421\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(422\\)00
          \\(423\\)00
          \\(424\\)00
          \\(425\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(426\\)00
          \\(427\\)00
          \\(428\\)00
          \\(429\\)00
          \\(430\\)00
          \\(431\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(432\\)00
          \\(433\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(434\\)00
          \\(435\\)00
          \\(436\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(437\\)00
          \\(438\\)00
          \\(439\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(440\\)00
          \\(441\\)00
          \\(442\\)00
          \\(443\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(444\\)00
          \\(445\\)00
          \\(446\\)00
          \\(447\\)00
          \\(448\\)00
          \\(449\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(450\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(451\\)00
          \\(452\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(453\\)00
          \\(454\\)00
          \\(455\\)00
          \\(456\\)00
          \\(457\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(458\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(459\\)00
          \\(460\\)00
          \\(461\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(462\\)00
          \\(463\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(464\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(465\\)00
          \\(466\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(467\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(468\\)00
          \\(469\\)00
          \\(470\\)00
          \\(471\\)00
          \\(472\\)00
          \\(473\\)00
          \\(474\\)00
          \\(475\\)00
          \\(476\\)00
          \\(477\\)00
          \\(478\\)00
          \\(479\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(480\\)00
          \\(481\\)00
          \\(482\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(483\\)00
          \\(484\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(485\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(486\\)00
          \\(487\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(488\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(489\\)00
          \\(490\\)00
          \\(491\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(492\\)00
          \\(493\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(494\\)00
          \\(495\\)00
          \\(496\\)00
          \\(497\\)00
          \\(498\\)00
          \\(499\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(500\\)00
          \\(501\\)00
          \\(502\\)00
          \\(503\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(504\\)00
          \\(505\\)00
          \\(506\\)00
          \\(507\\)00
          \\(508\\)00
          \\(509\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(510\\)00
          \\(511\\)00
          \\(512\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(513\\)00
          \\(514\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(515\\)00
          \\(516\\)00
          \\(517\\)00
          \\(518\\)00
          \\(519\\)00
          \\(520\\)00
          \\(521\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(522\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(523\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(524\\)00
          \\(525\\)00
          \\(526\\)00
          \\(527\\)00
          \\(528\\)00
          \\(529\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(530\\)00
          \\(531\\)00
          \\(532\\)00
          \\(533\\)00
          \\(534\\)00
          \\(535\\)00
          \\(536\\)00
          \\(537\\)00
          \\(538\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(539\\)00
          \\(540\\)00
          \\(541\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(542\\)00
          \\(543\\)00
          \\(544\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(545\\)\u22122.00000\u22122.00000
          \\(546\\)00
          \\(547\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(548\\)00
          \\(549\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(550\\)00
          \\(551\\)00
          \\(552\\)00
          \\(553\\)00
          \\(554\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(555\\)00
          \\(556\\)00
          \\(557\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(558\\)00
          \\(559\\)00
          \\(560\\)00
          \\(561\\)00
          \\(562\\)00
          \\(563\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(564\\)00
          \\(565\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(566\\)00
          \\(567\\)00
          \\(568\\)00
          \\(569\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(570\\)00
          \\(571\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(572\\)00
          \\(573\\)00
          \\(574\\)00
          \\(575\\)00
          \\(576\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(577\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(578\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(579\\)00
          \\(580\\)2.00000<br>i2.00000<br>i
          \\(581\\)00
          \\(582\\)00
          \\(583\\)00
          \\(584\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(585\\)00
          \\(586\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(587\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(588\\)00
          \\(589\\)00
          \\(590\\)00
          \\(591\\)00
          \\(592\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(593\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(594\\)00
          \\(595\\)00
          \\(596\\)\u22122.00000\u22122.00000
          \\(597\\)00
          \\(598\\)00
          \\(599\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(600\\)00
          \\(601\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(602\\)00
          \\(603\\)00
          \\(604\\)00
          \\(605\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(606\\)00
          \\(607\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(608\\)00
          \\(609\\)00
          \\(610\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(611\\)00
          \\(612\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(613\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(614\\)00
          \\(615\\)00
          \\(616\\)00
          \\(617\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(618\\)00
          \\(619\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(620\\)00
          \\(621\\)00
          \\(622\\)00
          \\(623\\)00
          \\(624\\)00
          \\(625\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(626\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(627\\)00
          \\(628\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(629\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(630\\)00
          \\(631\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(632\\)00
          \\(633\\)00
          \\(634\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(635\\)00
          \\(636\\)00
          \\(637\\)00
          \\(638\\)00
          \\(639\\)00
          \\(640\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(641\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(642\\)00
          \\(643\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(644\\)00
          \\(645\\)00
          \\(646\\)00
          \\(647\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(648\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(649\\)00
          \\(650\\)00
          \\(651\\)00
          \\(652\\)00
          \\(653\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(654\\)00
          \\(655\\)00
          \\(656\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(657\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(658\\)00
          \\(659\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(660\\)00
          \\(661\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(662\\)00
          \\(663\\)00
          \\(664\\)00
          \\(665\\)00
          \\(666\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(667\\)00
          \\(668\\)00
          \\(669\\)00
          \\(670\\)00
          \\(671\\)00
          \\(672\\)00
          \\(673\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(674\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(675\\)00
          \\(676\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(677\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(678\\)00
          \\(679\\)00
          \\(680\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(681\\)00
          \\(682\\)00
          \\(683\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(684\\)00
          \\(685\\)00
          \\(686\\)00
          \\(687\\)00
          \\(688\\)00
          \\(689\\)00
          \\(690\\)00
          \\(691\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(692\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(693\\)00
          \\(694\\)00
          \\(695\\)00
          \\(696\\)00
          \\(697\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(698\\)00
          \\(699\\)00
          \\(700\\)00
          \\(701\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(702\\)00
          \\(703\\)00
          \\(704\\)00
          \\(705\\)00
          \\(706\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(707\\)00
          \\(708\\)00
          \\(709\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(710\\)00
          \\(711\\)00
          \\(712\\)00
          \\(713\\)00
          \\(714\\)00
          \\(715\\)00
          \\(716\\)00
          \\(717\\)00
          \\(718\\)00
          \\(719\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(720\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(721\\)00
          \\(722\\)1.00000<br>i1.00000<br>i
          \\(723\\)00
          \\(724\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(725\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(726\\)00
          \\(727\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(728\\)00
          \\(729\\)1.00000<br>i1.00000<br>i
          \\(730\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(731\\)00
          \\(732\\)00
          \\(733\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(734\\)00
          \\(735\\)00
          \\(736\\)00
          \\(737\\)00
          \\(738\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(739\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(740\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(741\\)00
          \\(742\\)00
          \\(743\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(744\\)00
          \\(745\\)0.732051+2.73205<br>i0.732051+2.73205<br>i
          \\(746\\)00
          \\(747\\)00
          \\(748\\)00
          \\(749\\)00
          \\(750\\)00
          \\(751\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(752\\)00
          \\(753\\)00
          \\(754\\)00
          \\(755\\)00
          \\(756\\)00
          \\(757\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(758\\)00
          \\(759\\)00
          \\(760\\)00
          \\(761\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(762\\)00
          \\(763\\)00
          \\(764\\)00
          \\(765\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(766\\)00
          \\(767\\)00
          \\(768\\)00
          \\(769\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(770\\)00
          \\(771\\)00
          \\(772\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(773\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(774\\)00
          \\(775\\)00
          \\(776\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(777\\)00
          \\(778\\)2.000002.00000
          \\(779\\)00
          \\(780\\)00
          \\(781\\)00
          \\(782\\)00
          \\(783\\)00
          \\(784\\)00
          \\(785\\)\u22122.00000+2.00000<br>i\u22122.00000+2.00000<br>i
          \\(786\\)00
          \\(787\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(788\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(789\\)00
          \\(790\\)00
          \\(791\\)00
          \\(792\\)00
          \\(793\\)00
          \\(794\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(795\\)00
          \\(796\\)00
          \\(797\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(798\\)00
          \\(799\\)00
          \\(800\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(801\\)00
          \\(802\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(803\\)00
          \\(804\\)00
          \\(805\\)00
          \\(806\\)00
          \\(807\\)00
          \\(808\\)00
          \\(809\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(810\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(811\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(812\\)00
          \\(813\\)00
          \\(814\\)00
          \\(815\\)00
          \\(816\\)00
          \\(817\\)00
          \\(818\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(819\\)00
          \\(820\\)2.000002.00000
          \\(821\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(822\\)00
          \\(823\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(824\\)00
          \\(825\\)00
          \\(826\\)00
          \\(827\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(828\\)00
          \\(829\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(830\\)00
          \\(831\\)00
          \\(832\\)00
          \\(833\\)00
          \\(834\\)00
          \\(835\\)00
          \\(836\\)00
          \\(837\\)00
          \\(838\\)00
          \\(839\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(840\\)00
          \\(841\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(842\\)00
          \\(843\\)00
          \\(844\\)00
          \\(845\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(846\\)00
          \\(847\\)00
          \\(848\\)00
          \\(849\\)00
          \\(850\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(851\\)00
          \\(852\\)00
          \\(853\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(854\\)00
          \\(855\\)00
          \\(856\\)00
          \\(857\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(858\\)00
          \\(859\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(860\\)00
          \\(861\\)00
          \\(862\\)00
          \\(863\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(864\\)00
          \\(865\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(866\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(867\\)00
          \\(868\\)00
          \\(869\\)00
          \\(870\\)00
          \\(871\\)00
          \\(872\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(873\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(874\\)00
          \\(875\\)00
          \\(876\\)00
          \\(877\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(878\\)00
          \\(879\\)00
          \\(880\\)00
          \\(881\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(882\\)00
          \\(883\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(884\\)00
          \\(885\\)00
          \\(886\\)00
          \\(887\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(888\\)00
          \\(889\\)00
          \\(890\\)00
          \\(891\\)00
          \\(892\\)00
          \\(893\\)00
          \\(894\\)00
          \\(895\\)00
          \\(896\\)00
          \\(897\\)00
          \\(898\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(899\\)00
          \\(900\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(901\\)00
          \\(902\\)00
          \\(903\\)00
          \\(904\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(905\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(906\\)00
          \\(907\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(908\\)00
          \\(909\\)00
          \\(910\\)00
          \\(911\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(912\\)00
          \\(913\\)00
          \\(914\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(915\\)00
          \\(916\\)2.00000<br>i2.00000<br>i
          \\(917\\)00
          \\(918\\)00
          \\(919\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(920\\)00
          \\(921\\)00
          \\(922\\)00
          \\(923\\)00
          \\(924\\)00
          \\(925\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(926\\)00
          \\(927\\)00
          \\(928\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(929\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(930\\)00
          \\(931\\)00
          \\(932\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(933\\)00
          \\(934\\)00
          \\(935\\)00
          \\(936\\)00
          \\(937\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(938\\)00
          \\(939\\)00
          \\(940\\)00
          \\(941\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(942\\)00
          \\(943\\)00
          \\(944\\)00
          \\(945\\)00
          \\(946\\)00
          \\(947\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(948\\)00
          \\(949\\)00
          \\(950\\)00
          \\(951\\)00
          \\(952\\)00
          \\(953\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(954\\)00
          \\(955\\)00
          \\(956\\)00
          \\(957\\)00
          \\(958\\)00
          \\(959\\)00
          \\(960\\)00
          \\(961\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(962\\)00
          \\(963\\)00
          \\(964\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(965\\)2.000002.00000
          \\(966\\)00
          \\(967\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(968\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(969\\)00
          \\(970\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(971\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(972\\)00
          \\(973\\)00
          \\(974\\)00
          \\(975\\)00
          \\(976\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(977\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(978\\)00
          \\(979\\)00
          \\(980\\)00
          \\(981\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(982\\)00
          \\(983\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(984\\)00
          \\(985\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(986\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(987\\)00
          \\(988\\)00
          \\(989\\)00
          \\(990\\)00
          \\(991\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(992\\)00
          \\(993\\)00
          \\(994\\)00
          \\(995\\)00
          \\(996\\)00
          \\(997\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(998\\)00
          \\(999\\)00
          ", "is_complex": true}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "table", "raw_content": "
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          ", "content": {"html": "
          By <br>twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          ", "is_complex": false}}, {"type": "table", "raw_content": "
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "content": {"html": "
          By <br>twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "is_complex": false}}]], "main_html": "
          \n Show commands:\n Magma\n / PariGP\n / SageMath
          [N,k,chi] = [3332,1,Mod(667,3332)]
          mf = mfinit([N,k,chi],0)
          lf = mfeigenbasis(mf)
          from sage.modular.dirichlet import DirichletCharacter
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
          N = Newforms(chi, 1, names=\"a\")
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
          chi := DirichletCharacter(\"3332.667\");
          S:= CuspForms(chi, 1);
          N := Newforms(S);
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\)3332.bc (of order \\(12\\), degree \\(4\\), not minimal)

          Newform invariants

          sage:\u00a0f = N[0] # Warning: the index may be different
          gp:\u00a0f = lf[1] \\\\ Warning: the index may be different
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial: \\( x^{4} - x^{2} + 1 \\)\"Copy\"Toggle
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)

          Embedding invariants

          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field
          gp:\u00a0mfcoefs(f, 20)
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\"Copy\"Toggle

          Character values

          We give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).

          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)

          Coefficient data

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(3\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(5\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n 0\n \n 0\n
          \n \\(7\\)\n \n 0\n \n 0\n
          \n \\(8\\)\n \n 1.00000i\n 1.00000i
          \n \\(9\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(10\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(11\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n 0\n \n 0\n
          \n \\(13\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n 0\n \n 0\n
          \n \\(15\\)\n \n 0\n \n 0\n
          \n \\(16\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(17\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(18\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(19\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(21\\)\n \n 0\n \n 0\n
          \n \\(22\\)\n \n 0\n \n 0\n
          \n \\(23\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n 0\n \n 0\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(26\\)\n \n 0\n \n 0\n
          \n \\(27\\)\n \n 0\n \n 0\n
          \n \\(28\\)\n \n 0\n \n 0\n
          \n \\(29\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(30\\)\n \n 0\n \n 0\n
          \n \\(31\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(33\\)\n \n 0\n \n 0\n
          \n \\(34\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(35\\)\n \n 0\n \n 0\n
          \n \\(36\\)\n \n 1.00000i\n 1.00000i
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n 0\n \n 0\n
          \n \\(39\\)\n \n 0\n \n 0\n
          \n \\(40\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(41\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n 0\n \n 0\n
          \n \\(43\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n 0\n \n 0\n
          \n \\(45\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(46\\)\n \n 0\n \n 0\n
          \n \\(47\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n 0\n \n 0\n
          \n \\(49\\)\n \n 0\n \n 0\n
          \n \\(50\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(51\\)\n \n 0\n \n 0\n
          \n \\(52\\)\n \n 0\n \n 0\n
          \n \\(53\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n 0\n \n 0\n
          \n \\(55\\)\n \n 0\n \n 0\n
          \n \\(56\\)\n \n 0\n \n 0\n
          \n \\(57\\)\n \n 0\n \n 0\n
          \n \\(58\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(59\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n 0\n \n 0\n
          \n \\(61\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n 0\n \n 0\n
          \n \\(63\\)\n \n 0\n \n 0\n
          \n \\(64\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(65\\)\n \n 0\n \n 0\n
          \n \\(66\\)\n \n 0\n \n 0\n
          \n \\(67\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(69\\)\n \n 0\n \n 0\n
          \n \\(70\\)\n \n 0\n \n 0\n
          \n \\(71\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(73\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(75\\)\n \n 0\n \n 0\n
          \n \\(76\\)\n \n 0\n \n 0\n
          \n \\(77\\)\n \n 0\n \n 0\n
          \n \\(78\\)\n \n 0\n \n 0\n
          \n \\(79\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(81\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(83\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n 0\n \n 0\n
          \n \\(85\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(86\\)\n \n 0\n \n 0\n
          \n \\(87\\)\n \n 0\n \n 0\n
          \n \\(88\\)\n \n 0\n \n 0\n
          \n \\(89\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(91\\)\n \n 0\n \n 0\n
          \n \\(92\\)\n \n 0\n \n 0\n
          \n \\(93\\)\n \n 0\n \n 0\n
          \n \\(94\\)\n \n 0\n \n 0\n
          \n \\(95\\)\n \n 0\n \n 0\n
          \n \\(96\\)\n \n 0\n \n 0\n
          \n \\(97\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(98\\)\n \n 0\n \n 0\n
          \n \\(99\\)\n \n 0\n \n 0\n
          \n \\(100\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(101\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n 0\n \n 0\n
          \n \\(103\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n 0\n \n 0\n
          \n \\(105\\)\n \n 0\n \n 0\n
          \n \\(106\\)\n \n 0\n \n 0\n
          \n \\(107\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n 0\n \n 0\n
          \n \\(109\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n 0\n \n 0\n
          \n \\(111\\)\n \n 0\n \n 0\n
          \n \\(112\\)\n \n 0\n \n 0\n
          \n \\(113\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n 0\n \n 0\n
          \n \\(115\\)\n \n 0\n \n 0\n
          \n \\(116\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(117\\)\n \n 0\n \n 0\n
          \n \\(118\\)\n \n 0\n \n 0\n
          \n \\(119\\)\n \n 0\n \n 0\n
          \n \\(120\\)\n \n 0\n \n 0\n
          \n \\(121\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(123\\)\n \n 0\n \n 0\n
          \n \\(124\\)\n \n 0\n \n 0\n
          \n \\(125\\)\n \n 0\n \n 0\n
          \n \\(126\\)\n \n 0\n \n 0\n
          \n \\(127\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(129\\)\n \n 0\n \n 0\n
          \n \\(130\\)\n \n 0\n \n 0\n
          \n \\(131\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n 0\n \n 0\n
          \n \\(133\\)\n \n 0\n \n 0\n
          \n \\(134\\)\n \n 0\n \n 0\n
          \n \\(135\\)\n \n 0\n \n 0\n
          \n \\(136\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(137\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n 0\n \n 0\n
          \n \\(139\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n 0\n \n 0\n
          \n \\(141\\)\n \n 0\n \n 0\n
          \n \\(142\\)\n \n 0\n \n 0\n
          \n \\(143\\)\n \n 0\n \n 0\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(145\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(147\\)\n \n 0\n \n 0\n
          \n \\(148\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(149\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n 0\n \n 0\n
          \n \\(151\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n 0\n \n 0\n
          \n \\(153\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(154\\)\n \n 0\n \n 0\n
          \n \\(155\\)\n \n 0\n \n 0\n
          \n \\(156\\)\n \n 0\n \n 0\n
          \n \\(157\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n 0\n \n 0\n
          \n \\(159\\)\n \n 0\n \n 0\n
          \n \\(160\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(161\\)\n \n 0\n \n 0\n
          \n \\(162\\)\n \n 1.00000i\n 1.00000i
          \n \\(163\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(165\\)\n \n 0\n \n 0\n
          \n \\(166\\)\n \n 0\n \n 0\n
          \n \\(167\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n 0\n \n 0\n
          \n \\(169\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(170\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(171\\)\n \n 0\n \n 0\n
          \n \\(172\\)\n \n 0\n \n 0\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n 0\n \n 0\n
          \n \\(175\\)\n \n 0\n \n 0\n
          \n \\(176\\)\n \n 0\n \n 0\n
          \n \\(177\\)\n \n 0\n \n 0\n
          \n \\(178\\)\n \n 0\n \n 0\n
          \n \\(179\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n 0\n \n 0\n
          \n \\(183\\)\n \n 0\n \n 0\n
          \n \\(184\\)\n \n 0\n \n 0\n
          \n \\(185\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(186\\)\n \n 0\n \n 0\n
          \n \\(187\\)\n \n 0\n \n 0\n
          \n \\(188\\)\n \n 0\n \n 0\n
          \n \\(189\\)\n \n 0\n \n 0\n
          \n \\(190\\)\n \n 0\n \n 0\n
          \n \\(191\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n 0\n \n 0\n
          \n \\(193\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(195\\)\n \n 0\n \n 0\n
          \n \\(196\\)\n \n 0\n \n 0\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n 0\n \n 0\n
          \n \\(199\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(201\\)\n \n 0\n \n 0\n
          \n \\(202\\)\n \n 0\n \n 0\n
          \n \\(203\\)\n \n 0\n \n 0\n
          \n \\(204\\)\n \n 0\n \n 0\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(206\\)\n \n 0\n \n 0\n
          \n \\(207\\)\n \n 0\n \n 0\n
          \n \\(208\\)\n \n 0\n \n 0\n
          \n \\(209\\)\n \n 0\n \n 0\n
          \n \\(210\\)\n \n 0\n \n 0\n
          \n \\(211\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n 0\n \n 0\n
          \n \\(213\\)\n \n 0\n \n 0\n
          \n \\(214\\)\n \n 0\n \n 0\n
          \n \\(215\\)\n \n 0\n \n 0\n
          \n \\(216\\)\n \n 0\n \n 0\n
          \n \\(217\\)\n \n 0\n \n 0\n
          \n \\(218\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(219\\)\n \n 0\n \n 0\n
          \n \\(220\\)\n \n 0\n \n 0\n
          \n \\(221\\)\n \n 0\n \n 0\n
          \n \\(222\\)\n \n 0\n \n 0\n
          \n \\(223\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n 0\n \n 0\n
          \n \\(225\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(227\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n 0\n \n 0\n
          \n \\(229\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n 0\n \n 0\n
          \n \\(231\\)\n \n 0\n \n 0\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n 0\n \n 0\n
          \n \\(235\\)\n \n 0\n \n 0\n
          \n \\(236\\)\n \n 0\n \n 0\n
          \n \\(237\\)\n \n 0\n \n 0\n
          \n \\(238\\)\n \n 0\n \n 0\n
          \n \\(239\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n 0\n \n 0\n
          \n \\(241\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(243\\)\n \n 0\n \n 0\n
          \n \\(244\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(245\\)\n \n 0\n \n 0\n
          \n \\(246\\)\n \n 0\n \n 0\n
          \n \\(247\\)\n \n 0\n \n 0\n
          \n \\(248\\)\n \n 0\n \n 0\n
          \n \\(249\\)\n \n 0\n \n 0\n
          \n \\(250\\)\n \n 0\n \n 0\n
          \n \\(251\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n 0\n \n 0\n
          \n \\(253\\)\n \n 0\n \n 0\n
          \n \\(254\\)\n \n 0\n \n 0\n
          \n \\(255\\)\n \n 0\n \n 0\n
          \n \\(256\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(257\\)\n \n 1.73205\n \n \u2212\n \n 1.00000i\n 1.73205\n \n \u2212\n \n 1.00000i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n 0\n \n 0\n
          \n \\(259\\)\n \n 0\n \n 0\n
          \n \\(260\\)\n \n 0\n \n 0\n
          \n \\(261\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(262\\)\n \n 0\n \n 0\n
          \n \\(263\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n 0\n \n 0\n
          \n \\(265\\)\n \n 0\n \n 0\n
          \n \\(266\\)\n \n 0\n \n 0\n
          \n \\(267\\)\n \n 0\n \n 0\n
          \n \\(268\\)\n \n 0\n \n 0\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n 0\n \n 0\n
          \n \\(271\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n 1.00000\n
          \n \\(273\\)\n \n 0\n \n 0\n
          \n \\(274\\)\n \n 0\n \n 0\n
          \n \\(275\\)\n \n 0\n \n 0\n
          \n \\(276\\)\n \n 0\n \n 0\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n 0\n \n 0\n
          \n \\(279\\)\n \n 0\n \n 0\n
          \n \\(280\\)\n \n 0\n \n 0\n
          \n \\(281\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n 0\n \n 0\n
          \n \\(283\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n 0\n \n 0\n
          \n \\(285\\)\n \n 0\n \n 0\n
          \n \\(286\\)\n \n 0\n \n 0\n
          \n \\(287\\)\n \n 0\n \n 0\n
          \n \\(288\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(289\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(290\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(291\\)\n \n 0\n \n 0\n
          \n \\(292\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(293\\)\n \n 2.00000\n \n 2.00000\n \n 1.00000\n \n \\(0\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(294\\)\n \n 0\n \n 0\n
          \n \\(295\\)\n \n 0\n \n 0\n
          \n \\(296\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(297\\)\n \n 0\n \n 0\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n 1.73205\n \n +\n \n 1.00000i
          \n \\(299\\)\n \n 0\n \n 0\n
          \n \\(300\\)\n \n 0\n \n 0\n
          \n \\(301\\)\n \n 0\n \n 0\n
          \n \\(302\\)\n \n 0\n \n 0\n
          \n \\(303\\)\n \n 0\n \n 0\n
          \n \\(304\\)\n \n 0\n \n 0\n
          \n \\(305\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(307\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n 0\n \n 0\n
          \n \\(309\\)\n \n 0\n \n 0\n
          \n \\(310\\)\n \n 0\n \n 0\n
          \n \\(311\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n 0\n \n 0\n
          \n \\(313\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n 2.00000i\n 2.00000i
          \n \\(315\\)\n \n 0\n \n 0\n
          \n \\(316\\)\n \n 0\n \n 0\n
          \n \\(317\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n 0\n \n 0\n
          \n \\(319\\)\n \n 0\n \n 0\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(321\\)\n \n 0\n \n 0\n
          \n \\(322\\)\n \n 0\n \n 0\n
          \n \\(323\\)\n \n 0\n \n 0\n
          \n \\(324\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(325\\)\n \n 0\n \n 0\n
          \n \\(326\\)\n \n 0\n \n 0\n
          \n \\(327\\)\n \n 0\n \n 0\n
          \n \\(328\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(329\\)\n \n 0\n \n 0\n
          \n \\(330\\)\n \n 0\n \n 0\n
          \n \\(331\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n 0\n \n 0\n
          \n \\(333\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(334\\)\n \n 0\n \n 0\n
          \n \\(335\\)\n \n 0\n \n 0\n
          \n \\(336\\)\n \n 0\n \n 0\n
          \n \\(337\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(339\\)\n \n 0\n \n 0\n
          \n \\(340\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(341\\)\n \n 0\n \n 0\n
          \n \\(342\\)\n \n 0\n \n 0\n
          \n \\(343\\)\n \n 0\n \n 0\n
          \n \\(344\\)\n \n 0\n \n 0\n
          \n \\(345\\)\n \n 0\n \n 0\n
          \n \\(346\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(347\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n 0\n \n 0\n
          \n \\(349\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n 0\n \n 0\n
          \n \\(351\\)\n \n 0\n \n 0\n
          \n \\(352\\)\n \n 0\n \n 0\n
          \n \\(353\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n 0\n \n 0\n
          \n \\(355\\)\n \n 0\n \n 0\n
          \n \\(356\\)\n \n 0\n \n 0\n
          \n \\(357\\)\n \n 0\n \n 0\n
          \n \\(358\\)\n \n 0\n \n 0\n
          \n \\(359\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(361\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(362\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(363\\)\n \n 0\n \n 0\n
          \n \\(364\\)\n \n 0\n \n 0\n
          \n \\(365\\)\n \n 2.00000i\n 2.00000i
          \n \\(366\\)\n \n 0\n \n 0\n
          \n \\(367\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n 0\n \n 0\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(370\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(371\\)\n \n 0\n \n 0\n
          \n \\(372\\)\n \n 0\n \n 0\n
          \n \\(373\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n 0\n \n 0\n
          \n \\(375\\)\n \n 0\n \n 0\n
          \n \\(376\\)\n \n 0\n \n 0\n
          \n \\(377\\)\n \n 0\n \n 0\n
          \n \\(378\\)\n \n 0\n \n 0\n
          \n \\(379\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n 0\n \n 0\n
          \n \\(381\\)\n \n 0\n \n 0\n
          \n \\(382\\)\n \n 0\n \n 0\n
          \n \\(383\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n 0\n \n 0\n
          \n \\(385\\)\n \n 0\n \n 0\n
          \n \\(386\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(387\\)\n \n 0\n \n 0\n
          \n \\(388\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(389\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n 0\n \n 0\n
          \n \\(391\\)\n \n 0\n \n 0\n
          \n \\(392\\)\n \n 0\n \n 0\n
          \n \\(393\\)\n \n 0\n \n 0\n
          \n \\(394\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(395\\)\n \n 0\n \n 0\n
          \n \\(396\\)\n \n 0\n \n 0\n
          \n \\(397\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n 0\n \n 0\n
          \n \\(399\\)\n \n 0\n \n 0\n
          \n \\(400\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(401\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n 0\n \n 0\n
          \n \\(403\\)\n \n 0\n \n 0\n
          \n \\(404\\)\n \n 0\n \n 0\n
          \n \\(405\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(406\\)\n \n 0\n \n 0\n
          \n \\(407\\)\n \n 0\n \n 0\n
          \n \\(408\\)\n \n 0\n \n 0\n
          \n \\(409\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(411\\)\n \n 0\n \n 0\n
          \n \\(412\\)\n \n 0\n \n 0\n
          \n \\(413\\)\n \n 0\n \n 0\n
          \n \\(414\\)\n \n 0\n \n 0\n
          \n \\(415\\)\n \n 0\n \n 0\n
          \n \\(416\\)\n \n 0\n \n 0\n
          \n \\(417\\)\n \n 0\n \n 0\n
          \n \\(418\\)\n \n 0\n \n 0\n
          \n \\(419\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n 0\n \n 0\n
          \n \\(421\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n 0\n \n 0\n
          \n \\(423\\)\n \n 0\n \n 0\n
          \n \\(424\\)\n \n 0\n \n 0\n
          \n \\(425\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(426\\)\n \n 0\n \n 0\n
          \n \\(427\\)\n \n 0\n \n 0\n
          \n \\(428\\)\n \n 0\n \n 0\n
          \n \\(429\\)\n \n 0\n \n 0\n
          \n \\(430\\)\n \n 0\n \n 0\n
          \n \\(431\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n 0\n \n 0\n
          \n \\(433\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n 0\n \n 0\n
          \n \\(435\\)\n \n 0\n \n 0\n
          \n \\(436\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(437\\)\n \n 0\n \n 0\n
          \n \\(438\\)\n \n 0\n \n 0\n
          \n \\(439\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n 0\n \n 0\n
          \n \\(441\\)\n \n 0\n \n 0\n
          \n \\(442\\)\n \n 0\n \n 0\n
          \n \\(443\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n 0\n \n 0\n
          \n \\(445\\)\n \n 0\n \n 0\n
          \n \\(446\\)\n \n 0\n \n 0\n
          \n \\(447\\)\n \n 0\n \n 0\n
          \n \\(448\\)\n \n 0\n \n 0\n
          \n \\(449\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(451\\)\n \n 0\n \n 0\n
          \n \\(452\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(453\\)\n \n 0\n \n 0\n
          \n \\(454\\)\n \n 0\n \n 0\n
          \n \\(455\\)\n \n 0\n \n 0\n
          \n \\(456\\)\n \n 0\n \n 0\n
          \n \\(457\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(459\\)\n \n 0\n \n 0\n
          \n \\(460\\)\n \n 0\n \n 0\n
          \n \\(461\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n 0\n \n 0\n
          \n \\(463\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(465\\)\n \n 0\n \n 0\n
          \n \\(466\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(467\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n 0\n \n 0\n
          \n \\(469\\)\n \n 0\n \n 0\n
          \n \\(470\\)\n \n 0\n \n 0\n
          \n \\(471\\)\n \n 0\n \n 0\n
          \n \\(472\\)\n \n 0\n \n 0\n
          \n \\(473\\)\n \n 0\n \n 0\n
          \n \\(474\\)\n \n 0\n \n 0\n
          \n \\(475\\)\n \n 0\n \n 0\n
          \n \\(476\\)\n \n 0\n \n 0\n
          \n \\(477\\)\n \n 0\n \n 0\n
          \n \\(478\\)\n \n 0\n \n 0\n
          \n \\(479\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n 0\n \n 0\n
          \n \\(481\\)\n \n 0\n \n 0\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(483\\)\n \n 0\n \n 0\n
          \n \\(484\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(485\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(486\\)\n \n 0\n \n 0\n
          \n \\(487\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(489\\)\n \n 0\n \n 0\n
          \n \\(490\\)\n \n 0\n \n 0\n
          \n \\(491\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n 0\n \n 0\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(494\\)\n \n 0\n \n 0\n
          \n \\(495\\)\n \n 0\n \n 0\n
          \n \\(496\\)\n \n 0\n \n 0\n
          \n \\(497\\)\n \n 0\n \n 0\n
          \n \\(498\\)\n \n 0\n \n 0\n
          \n \\(499\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n 0\n \n 0\n
          \n \\(501\\)\n \n 0\n \n 0\n
          \n \\(502\\)\n \n 0\n \n 0\n
          \n \\(503\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n 0\n \n 0\n
          \n \\(505\\)\n \n 0\n \n 0\n
          \n \\(506\\)\n \n 0\n \n 0\n
          \n \\(507\\)\n \n 0\n \n 0\n
          \n \\(508\\)\n \n 0\n \n 0\n
          \n \\(509\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n 0\n \n 0\n
          \n \\(511\\)\n \n 0\n \n 0\n
          \n \\(512\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(513\\)\n \n 0\n \n 0\n
          \n \\(514\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(515\\)\n \n 0\n \n 0\n
          \n \\(516\\)\n \n 0\n \n 0\n
          \n \\(517\\)\n \n 0\n \n 0\n
          \n \\(518\\)\n \n 0\n \n 0\n
          \n \\(519\\)\n \n 0\n \n 0\n
          \n \\(520\\)\n \n 0\n \n 0\n
          \n \\(521\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(523\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n 0\n \n 0\n
          \n \\(525\\)\n \n 0\n \n 0\n
          \n \\(526\\)\n \n 0\n \n 0\n
          \n \\(527\\)\n \n 0\n \n 0\n
          \n \\(528\\)\n \n 0\n \n 0\n
          \n \\(529\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(530\\)\n \n 0\n \n 0\n
          \n \\(531\\)\n \n 0\n \n 0\n
          \n \\(532\\)\n \n 0\n \n 0\n
          \n \\(533\\)\n \n 0\n \n 0\n
          \n \\(534\\)\n \n 0\n \n 0\n
          \n \\(535\\)\n \n 0\n \n 0\n
          \n \\(536\\)\n \n 0\n \n 0\n
          \n \\(537\\)\n \n 0\n \n 0\n
          \n \\(538\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(539\\)\n \n 0\n \n 0\n
          \n \\(540\\)\n \n 0\n \n 0\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n 0\n \n 0\n
          \n \\(543\\)\n \n 0\n \n 0\n
          \n \\(544\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(545\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(546\\)\n \n 0\n \n 0\n
          \n \\(547\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n 0\n \n 0\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(550\\)\n \n 0\n \n 0\n
          \n \\(551\\)\n \n 0\n \n 0\n
          \n \\(552\\)\n \n 0\n \n 0\n
          \n \\(553\\)\n \n 0\n \n 0\n
          \n \\(554\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(555\\)\n \n 0\n \n 0\n
          \n \\(556\\)\n \n 0\n \n 0\n
          \n \\(557\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n 0\n \n 0\n
          \n \\(559\\)\n \n 0\n \n 0\n
          \n \\(560\\)\n \n 0\n \n 0\n
          \n \\(561\\)\n \n 0\n \n 0\n
          \n \\(562\\)\n \n 0\n \n 0\n
          \n \\(563\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n 0\n \n 0\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(566\\)\n \n 0\n \n 0\n
          \n \\(567\\)\n \n 0\n \n 0\n
          \n \\(568\\)\n \n 0\n \n 0\n
          \n \\(569\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n 0\n \n 0\n
          \n \\(571\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n 0\n \n 0\n
          \n \\(573\\)\n \n 0\n \n 0\n
          \n \\(574\\)\n \n 0\n \n 0\n
          \n \\(575\\)\n \n 0\n \n 0\n
          \n \\(576\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(577\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(579\\)\n \n 0\n \n 0\n
          \n \\(580\\)\n \n 2.00000i\n 2.00000i
          \n \\(581\\)\n \n 0\n \n 0\n
          \n \\(582\\)\n \n 0\n \n 0\n
          \n \\(583\\)\n \n 0\n \n 0\n
          \n \\(584\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(585\\)\n \n 0\n \n 0\n
          \n \\(586\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(587\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n 0\n \n 0\n
          \n \\(589\\)\n \n 0\n \n 0\n
          \n \\(590\\)\n \n 0\n \n 0\n
          \n \\(591\\)\n \n 0\n \n 0\n
          \n \\(592\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(593\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n 0\n \n 0\n
          \n \\(595\\)\n \n 0\n \n 0\n
          \n \\(596\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(597\\)\n \n 0\n \n 0\n
          \n \\(598\\)\n \n 0\n \n 0\n
          \n \\(599\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n 0\n \n 0\n
          \n \\(601\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n 0\n \n 0\n
          \n \\(603\\)\n \n 0\n \n 0\n
          \n \\(604\\)\n \n 0\n \n 0\n
          \n \\(605\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(606\\)\n \n 0\n \n 0\n
          \n \\(607\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n 0\n \n 0\n
          \n \\(609\\)\n \n 0\n \n 0\n
          \n \\(610\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(611\\)\n \n 0\n \n 0\n
          \n \\(612\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(613\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n 0\n \n 0\n
          \n \\(615\\)\n \n 0\n \n 0\n
          \n \\(616\\)\n \n 0\n \n 0\n
          \n \\(617\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n 0\n \n 0\n
          \n \\(619\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n 0\n \n 0\n
          \n \\(621\\)\n \n 0\n \n 0\n
          \n \\(622\\)\n \n 0\n \n 0\n
          \n \\(623\\)\n \n 0\n \n 0\n
          \n \\(624\\)\n \n 0\n \n 0\n
          \n \\(625\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(626\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(627\\)\n \n 0\n \n 0\n
          \n \\(628\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(629\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(630\\)\n \n 0\n \n 0\n
          \n \\(631\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n 0\n \n 0\n
          \n \\(633\\)\n \n 0\n \n 0\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(635\\)\n \n 0\n \n 0\n
          \n \\(636\\)\n \n 0\n \n 0\n
          \n \\(637\\)\n \n 0\n \n 0\n
          \n \\(638\\)\n \n 0\n \n 0\n
          \n \\(639\\)\n \n 0\n \n 0\n
          \n \\(640\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(641\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n 0\n \n 0\n
          \n \\(643\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n 0\n \n 0\n
          \n \\(645\\)\n \n 0\n \n 0\n
          \n \\(646\\)\n \n 0\n \n 0\n
          \n \\(647\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(649\\)\n \n 0\n \n 0\n
          \n \\(650\\)\n \n 0\n \n 0\n
          \n \\(651\\)\n \n 0\n \n 0\n
          \n \\(652\\)\n \n 0\n \n 0\n
          \n \\(653\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n 0\n \n 0\n
          \n \\(655\\)\n \n 0\n \n 0\n
          \n \\(656\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(658\\)\n \n 0\n \n 0\n
          \n \\(659\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n 0\n \n 0\n
          \n \\(661\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n 0\n \n 0\n
          \n \\(663\\)\n \n 0\n \n 0\n
          \n \\(664\\)\n \n 0\n \n 0\n
          \n \\(665\\)\n \n 0\n \n 0\n
          \n \\(666\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(667\\)\n \n 0\n \n 0\n
          \n \\(668\\)\n \n 0\n \n 0\n
          \n \\(669\\)\n \n 0\n \n 0\n
          \n \\(670\\)\n \n 0\n \n 0\n
          \n \\(671\\)\n \n 0\n \n 0\n
          \n \\(672\\)\n \n 0\n \n 0\n
          \n \\(673\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(675\\)\n \n 0\n \n 0\n
          \n \\(676\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n 0\n \n 0\n
          \n \\(679\\)\n \n 0\n \n 0\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(681\\)\n \n 0\n \n 0\n
          \n \\(682\\)\n \n 0\n \n 0\n
          \n \\(683\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n 0\n \n 0\n
          \n \\(685\\)\n \n 0\n \n 0\n
          \n \\(686\\)\n \n 0\n \n 0\n
          \n \\(687\\)\n \n 0\n \n 0\n
          \n \\(688\\)\n \n 0\n \n 0\n
          \n \\(689\\)\n \n 0\n \n 0\n
          \n \\(690\\)\n \n 0\n \n 0\n
          \n \\(691\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(693\\)\n \n 0\n \n 0\n
          \n \\(694\\)\n \n 0\n \n 0\n
          \n \\(695\\)\n \n 0\n \n 0\n
          \n \\(696\\)\n \n 0\n \n 0\n
          \n \\(697\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(698\\)\n \n 0\n \n 0\n
          \n \\(699\\)\n \n 0\n \n 0\n
          \n \\(700\\)\n \n 0\n \n 0\n
          \n \\(701\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n 0\n \n 0\n
          \n \\(703\\)\n \n 0\n \n 0\n
          \n \\(704\\)\n \n 0\n \n 0\n
          \n \\(705\\)\n \n 0\n \n 0\n
          \n \\(706\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(707\\)\n \n 0\n \n 0\n
          \n \\(708\\)\n \n 0\n \n 0\n
          \n \\(709\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n 0\n \n 0\n
          \n \\(711\\)\n \n 0\n \n 0\n
          \n \\(712\\)\n \n 0\n \n 0\n
          \n \\(713\\)\n \n 0\n \n 0\n
          \n \\(714\\)\n \n 0\n \n 0\n
          \n \\(715\\)\n \n 0\n \n 0\n
          \n \\(716\\)\n \n 0\n \n 0\n
          \n \\(717\\)\n \n 0\n \n 0\n
          \n \\(718\\)\n \n 0\n \n 0\n
          \n \\(719\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(721\\)\n \n 0\n \n 0\n
          \n \\(722\\)\n \n 1.00000i\n 1.00000i
          \n \\(723\\)\n \n 0\n \n 0\n
          \n \\(724\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(725\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(726\\)\n \n 0\n \n 0\n
          \n \\(727\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n 0\n \n 0\n
          \n \\(729\\)\n \n 1.00000i\n 1.00000i
          \n \\(730\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(731\\)\n \n 0\n \n 0\n
          \n \\(732\\)\n \n 0\n \n 0\n
          \n \\(733\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n 0\n \n 0\n
          \n \\(735\\)\n \n 0\n \n 0\n
          \n \\(736\\)\n \n 0\n \n 0\n
          \n \\(737\\)\n \n 0\n \n 0\n
          \n \\(738\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(739\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(741\\)\n \n 0\n \n 0\n
          \n \\(742\\)\n \n 0\n \n 0\n
          \n \\(743\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n 0\n \n 0\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n 0.732051\n \n +\n \n 2.73205i
          \n \\(746\\)\n \n 0\n \n 0\n
          \n \\(747\\)\n \n 0\n \n 0\n
          \n \\(748\\)\n \n 0\n \n 0\n
          \n \\(749\\)\n \n 0\n \n 0\n
          \n \\(750\\)\n \n 0\n \n 0\n
          \n \\(751\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n 0\n \n 0\n
          \n \\(753\\)\n \n 0\n \n 0\n
          \n \\(754\\)\n \n 0\n \n 0\n
          \n \\(755\\)\n \n 0\n \n 0\n
          \n \\(756\\)\n \n 0\n \n 0\n
          \n \\(757\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n 0\n \n 0\n
          \n \\(759\\)\n \n 0\n \n 0\n
          \n \\(760\\)\n \n 0\n \n 0\n
          \n \\(761\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n 0\n \n 0\n
          \n \\(763\\)\n \n 0\n \n 0\n
          \n \\(764\\)\n \n 0\n \n 0\n
          \n \\(765\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(766\\)\n \n 0\n \n 0\n
          \n \\(767\\)\n \n 0\n \n 0\n
          \n \\(768\\)\n \n 0\n \n 0\n
          \n \\(769\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n 0\n \n 0\n
          \n \\(771\\)\n \n 0\n \n 0\n
          \n \\(772\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(773\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n 0\n \n 0\n
          \n \\(775\\)\n \n 0\n \n 0\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(777\\)\n \n 0\n \n 0\n
          \n \\(778\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(779\\)\n \n 0\n \n 0\n
          \n \\(780\\)\n \n 0\n \n 0\n
          \n \\(781\\)\n \n 0\n \n 0\n
          \n \\(782\\)\n \n 0\n \n 0\n
          \n \\(783\\)\n \n 0\n \n 0\n
          \n \\(784\\)\n \n 0\n \n 0\n
          \n \\(785\\)\n \n \u22122.00000\n \n +\n \n 2.00000i\n \u22122.00000\n \n +\n \n 2.00000i
          \n \\(786\\)\n \n 0\n \n 0\n
          \n \\(787\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(789\\)\n \n 0\n \n 0\n
          \n \\(790\\)\n \n 0\n \n 0\n
          \n \\(791\\)\n \n 0\n \n 0\n
          \n \\(792\\)\n \n 0\n \n 0\n
          \n \\(793\\)\n \n 0\n \n 0\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(795\\)\n \n 0\n \n 0\n
          \n \\(796\\)\n \n 0\n \n 0\n
          \n \\(797\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n 0\n \n 0\n
          \n \\(799\\)\n \n 0\n \n 0\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(801\\)\n \n 0\n \n 0\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(803\\)\n \n 0\n \n 0\n
          \n \\(804\\)\n \n 0\n \n 0\n
          \n \\(805\\)\n \n 0\n \n 0\n
          \n \\(806\\)\n \n 0\n \n 0\n
          \n \\(807\\)\n \n 0\n \n 0\n
          \n \\(808\\)\n \n 0\n \n 0\n
          \n \\(809\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(811\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n 0\n \n 0\n
          \n \\(813\\)\n \n 0\n \n 0\n
          \n \\(814\\)\n \n 0\n \n 0\n
          \n \\(815\\)\n \n 0\n \n 0\n
          \n \\(816\\)\n \n 0\n \n 0\n
          \n \\(817\\)\n \n 0\n \n 0\n
          \n \\(818\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(819\\)\n \n 0\n \n 0\n
          \n \\(820\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(821\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n 0\n \n 0\n
          \n \\(823\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n 0\n \n 0\n
          \n \\(825\\)\n \n 0\n \n 0\n
          \n \\(826\\)\n \n 0\n \n 0\n
          \n \\(827\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n 0\n \n 0\n
          \n \\(829\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n 0\n \n 0\n
          \n \\(831\\)\n \n 0\n \n 0\n
          \n \\(832\\)\n \n 0\n \n 0\n
          \n \\(833\\)\n \n 0\n \n 0\n
          \n \\(834\\)\n \n 0\n \n 0\n
          \n \\(835\\)\n \n 0\n \n 0\n
          \n \\(836\\)\n \n 0\n \n 0\n
          \n \\(837\\)\n \n 0\n \n 0\n
          \n \\(838\\)\n \n 0\n \n 0\n
          \n \\(839\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n 0\n \n 0\n
          \n \\(841\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(842\\)\n \n 0\n \n 0\n
          \n \\(843\\)\n \n 0\n \n 0\n
          \n \\(844\\)\n \n 0\n \n 0\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(846\\)\n \n 0\n \n 0\n
          \n \\(847\\)\n \n 0\n \n 0\n
          \n \\(848\\)\n \n 0\n \n 0\n
          \n \\(849\\)\n \n 0\n \n 0\n
          \n \\(850\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(851\\)\n \n 0\n \n 0\n
          \n \\(852\\)\n \n 0\n \n 0\n
          \n \\(853\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(854\\)\n \n 0\n \n 0\n
          \n \\(855\\)\n \n 0\n \n 0\n
          \n \\(856\\)\n \n 0\n \n 0\n
          \n \\(857\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n 0\n \n 0\n
          \n \\(859\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n 0\n \n 0\n
          \n \\(861\\)\n \n 0\n \n 0\n
          \n \\(862\\)\n \n 0\n \n 0\n
          \n \\(863\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n 0\n \n 0\n
          \n \\(865\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(866\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(867\\)\n \n 0\n \n 0\n
          \n \\(868\\)\n \n 0\n \n 0\n
          \n \\(869\\)\n \n 0\n \n 0\n
          \n \\(870\\)\n \n 0\n \n 0\n
          \n \\(871\\)\n \n 0\n \n 0\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(873\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(874\\)\n \n 0\n \n 0\n
          \n \\(875\\)\n \n 0\n \n 0\n
          \n \\(876\\)\n \n 0\n \n 0\n
          \n \\(877\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n 0\n \n 0\n
          \n \\(879\\)\n \n 0\n \n 0\n
          \n \\(880\\)\n \n 0\n \n 0\n
          \n \\(881\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n 0\n \n 0\n
          \n \\(883\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n 0\n \n 0\n
          \n \\(885\\)\n \n 0\n \n 0\n
          \n \\(886\\)\n \n 0\n \n 0\n
          \n \\(887\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n 0\n \n 0\n
          \n \\(889\\)\n \n 0\n \n 0\n
          \n \\(890\\)\n \n 0\n \n 0\n
          \n \\(891\\)\n \n 0\n \n 0\n
          \n \\(892\\)\n \n 0\n \n 0\n
          \n \\(893\\)\n \n 0\n \n 0\n
          \n \\(894\\)\n \n 0\n \n 0\n
          \n \\(895\\)\n \n 0\n \n 0\n
          \n \\(896\\)\n \n 0\n \n 0\n
          \n \\(897\\)\n \n 0\n \n 0\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(899\\)\n \n 0\n \n 0\n
          \n \\(900\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(901\\)\n \n 0\n \n 0\n
          \n \\(902\\)\n \n 0\n \n 0\n
          \n \\(903\\)\n \n 0\n \n 0\n
          \n \\(904\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(905\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(906\\)\n \n 0\n \n 0\n
          \n \\(907\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n 0\n \n 0\n
          \n \\(909\\)\n \n 0\n \n 0\n
          \n \\(910\\)\n \n 0\n \n 0\n
          \n \\(911\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n 0\n \n 0\n
          \n \\(913\\)\n \n 0\n \n 0\n
          \n \\(914\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(915\\)\n \n 0\n \n 0\n
          \n \\(916\\)\n \n 2.00000i\n 2.00000i
          \n \\(917\\)\n \n 0\n \n 0\n
          \n \\(918\\)\n \n 0\n \n 0\n
          \n \\(919\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n 0\n \n 0\n
          \n \\(921\\)\n \n 0\n \n 0\n
          \n \\(922\\)\n \n 0\n \n 0\n
          \n \\(923\\)\n \n 0\n \n 0\n
          \n \\(924\\)\n \n 0\n \n 0\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(926\\)\n \n 0\n \n 0\n
          \n \\(927\\)\n \n 0\n \n 0\n
          \n \\(928\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(929\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n 0\n \n 0\n
          \n \\(931\\)\n \n 0\n \n 0\n
          \n \\(932\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(933\\)\n \n 0\n \n 0\n
          \n \\(934\\)\n \n 0\n \n 0\n
          \n \\(935\\)\n \n 0\n \n 0\n
          \n \\(936\\)\n \n 0\n \n 0\n
          \n \\(937\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n 0\n \n 0\n
          \n \\(939\\)\n \n 0\n \n 0\n
          \n \\(940\\)\n \n 0\n \n 0\n
          \n \\(941\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n 0\n \n 0\n
          \n \\(943\\)\n \n 0\n \n 0\n
          \n \\(944\\)\n \n 0\n \n 0\n
          \n \\(945\\)\n \n 0\n \n 0\n
          \n \\(946\\)\n \n 0\n \n 0\n
          \n \\(947\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n 0\n \n 0\n
          \n \\(949\\)\n \n 0\n \n 0\n
          \n \\(950\\)\n \n 0\n \n 0\n
          \n \\(951\\)\n \n 0\n \n 0\n
          \n \\(952\\)\n \n 0\n \n 0\n
          \n \\(953\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n 0\n \n 0\n
          \n \\(955\\)\n \n 0\n \n 0\n
          \n \\(956\\)\n \n 0\n \n 0\n
          \n \\(957\\)\n \n 0\n \n 0\n
          \n \\(958\\)\n \n 0\n \n 0\n
          \n \\(959\\)\n \n 0\n \n 0\n
          \n \\(960\\)\n \n 0\n \n 0\n
          \n \\(961\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(962\\)\n \n 0\n \n 0\n
          \n \\(963\\)\n \n 0\n \n 0\n
          \n \\(964\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(965\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(966\\)\n \n 0\n \n 0\n
          \n \\(967\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(969\\)\n \n 0\n \n 0\n
          \n \\(970\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(971\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n 0\n \n 0\n
          \n \\(973\\)\n \n 0\n \n 0\n
          \n \\(974\\)\n \n 0\n \n 0\n
          \n \\(975\\)\n \n 0\n \n 0\n
          \n \\(976\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(977\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n 0\n \n 0\n
          \n \\(979\\)\n \n 0\n \n 0\n
          \n \\(980\\)\n \n 0\n \n 0\n
          \n \\(981\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(982\\)\n \n 0\n \n 0\n
          \n \\(983\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n 0\n \n 0\n
          \n \\(985\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(986\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(987\\)\n \n 0\n \n 0\n
          \n \\(988\\)\n \n 0\n \n 0\n
          \n \\(989\\)\n \n 0\n \n 0\n
          \n \\(990\\)\n \n 0\n \n 0\n
          \n \\(991\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n 0\n \n 0\n
          \n \\(993\\)\n \n 0\n \n 0\n
          \n \\(994\\)\n \n 0\n \n 0\n
          \n \\(995\\)\n \n 0\n \n 0\n
          \n \\(996\\)\n \n 0\n \n 0\n
          \n \\(997\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n 0\n \n 0\n
          \n \\(999\\)\n \n 0\n \n 0\n
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "statics": {"paragraph": 22, "paragraph.text": 22, "table": 8, "title": 4}, "url": "https://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/3332/1/bc/b/2027/1/", "content": "Show commands: Magma/ PariGP/ SageMath\n\n[N,k,chi] = [3332,1,Mod(667,3332)] mf = mfinit([N,k,chi],0) lf = mfeigenbasis(mf)\n\nfrom sage.modular.dirichlet import DirichletCharacter H = DirichletGroup(3332, base_ring=CyclotomicField(12)) chi = DirichletCharacter(H, H._module([6, 4, 9])) N = Newforms(chi, 1, names=\"a\")\n\n//Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code chi := DirichletCharacter(\"3332.667\"); S:= CuspForms(chi, 1); N := Newforms(S);\n\n| Level
          : | \\( N \\) | \\(=\\) | \\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\) |\n|---|---|---|---|\n| Weight
          : | \\( k \\) | \\(=\\) | \\( 1 \\) |\n| Character orbit
          : | \\([\\chi]\\) | \\(=\\) | 3332.bc
          (of
          order
          \\(12\\),
          degree
          \\(4\\), not
          minimal
          ) |\n\n## Newform invariants\n\nsage:\u00a0f = N[0] \\# Warning: the index may be different\n\ngp:\u00a0f = lf[1] \\\\ Warning: the index may be different\n\n| Self dual
          : | no |\n|---|---|\n| Analytic conductor
          : | \\(1.66288462209\\) |\n| Analytic rank
          : | \\(0\\) |\n| Dimension
          : | \\(4\\) |\n| Coefficient field
          : | \\(\\Q(\\zeta_{12})\\) |\n| gp:\u00a0f.mod \\\\ as an extension of the character field | |\n| Defining polynomial
          : | \\( x^{4} - x^{2} + 1 \\) |\n| Coefficient ring
          : | \\(\\Z[a_1, a_2]\\) |\n| Coefficient ring index
          : | \\( 1 \\) |\n| Twist minimal
          : | no (minimal twist has level 68) |\n| Projective image
          : | \\(D_{4}\\) |\n| Projective field
          : | Galois closure of
          4.2.19652.1 |\n| Artin image
          : | $C_4\\wr C_2\\times C_6$ |\n| Artin field
          : | Galois closure of
          \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\) |\n\n## Embedding invariants\n\n| Embedding label | | | 2027.1 |\n|---|---|---|---|\n| Root | | | \\(0.866025 - 0.500000i\\) of defining polynomial |\n| Character | \\(\\chi\\) | \\(=\\) | 3332.2027 |\n| Dual form | | | 3332.1.bc.b.863.1 |\n\nsage:\u00a0f.q_expansion() \\# note that sage often uses an isomorphic number field\n\ngp:\u00a0mfcoefs(f, 20)\n\n| \\(f(q)\\) | \\(=\\) | \\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\) |\n|---|---|---|\n| \\(\\operatorname{Tr}(f)(q)\\) | \\(=\\) | \\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\) |\n\n## Character values\n\nWe give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).\n\n| \\(n\\) | \\(785\\) | \\(885\\) | \\(1667\\) |\n|---|---|---|---|\n| \\(\\chi(n)\\) | \\(e\\left(\\frac{3}{4}\\right)\\) | \\(e\\left(\\frac{2}{3}\\right)\\) | \\(-1\\) |\n\n## Coefficient data\n\nFor each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the Satake parameters\\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n
          \\(n\\)\\(a_n\\)\\(a_n / n^{(k-1)/2}\\)\\( \\alpha_n \\)\\( \\theta_n \\)
          \\(p\\)\\(a_p\\)\\(a_p / p^{(k-1)/2}\\)\\( \\alpha_p\\)\\( \\theta_p \\)
          \\(2\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(3\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(4\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(5\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(6\\)00
          \\(7\\)00
          \\(8\\)1.00000<br>i1.00000<br>i
          \\(9\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(10\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(11\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(12\\)00
          \\(13\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(14\\)00
          \\(15\\)00
          \\(16\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(17\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(18\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(19\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(20\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(21\\)00
          \\(22\\)00
          \\(23\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(24\\)00
          \\(25\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(26\\)00
          \\(27\\)00
          \\(28\\)00
          \\(29\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(30\\)00
          \\(31\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(32\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(33\\)00
          \\(34\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(35\\)00
          \\(36\\)1.00000<br>i1.00000<br>i
          \\(37\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(38\\)00
          \\(39\\)00
          \\(40\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(41\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(42\\)00
          \\(43\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(44\\)00
          \\(45\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(46\\)00
          \\(47\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(48\\)00
          \\(49\\)00
          \\(50\\)\u22121.00000\u22121.00000
          \\(51\\)00
          \\(52\\)00
          \\(53\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(54\\)00
          \\(55\\)00
          \\(56\\)00
          \\(57\\)00
          \\(58\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(59\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(60\\)00
          \\(61\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(62\\)00
          \\(63\\)00
          \\(64\\)\u22121.00000\u22121.00000
          \\(65\\)00
          \\(66\\)00
          \\(67\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(68\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(69\\)00
          \\(70\\)00
          \\(71\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(72\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(73\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(74\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(75\\)00
          \\(76\\)00
          \\(77\\)00
          \\(78\\)00
          \\(79\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(80\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(81\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(82\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(83\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(84\\)00
          \\(85\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(86\\)00
          \\(87\\)00
          \\(88\\)00
          \\(89\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(90\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(91\\)00
          \\(92\\)00
          \\(93\\)00
          \\(94\\)00
          \\(95\\)00
          \\(96\\)00
          \\(97\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(98\\)00
          \\(99\\)00
          \\(100\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(101\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(102\\)00
          \\(103\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(104\\)00
          \\(105\\)00
          \\(106\\)00
          \\(107\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(108\\)00
          \\(109\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(110\\)00
          \\(111\\)00
          \\(112\\)00
          \\(113\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(114\\)00
          \\(115\\)00
          \\(116\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(117\\)00
          \\(118\\)00
          \\(119\\)00
          \\(120\\)00
          \\(121\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(122\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(123\\)00
          \\(124\\)00
          \\(125\\)00
          \\(126\\)00
          \\(127\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(128\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(129\\)00
          \\(130\\)00
          \\(131\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(132\\)00
          \\(133\\)00
          \\(134\\)00
          \\(135\\)00
          \\(136\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(137\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(138\\)00
          \\(139\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(140\\)00
          \\(141\\)00
          \\(142\\)00
          \\(143\\)00
          \\(144\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(145\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(146\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(147\\)00
          \\(148\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(149\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(150\\)00
          \\(151\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(152\\)00
          \\(153\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(154\\)00
          \\(155\\)00
          \\(156\\)00
          \\(157\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(158\\)00
          \\(159\\)00
          \\(160\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(161\\)00
          \\(162\\)1.00000<br>i1.00000<br>i
          \\(163\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(164\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(165\\)00
          \\(166\\)00
          \\(167\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(168\\)00
          \\(169\\)\u22121.00000\u22121.00000
          \\(170\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(171\\)00
          \\(172\\)00
          \\(173\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(174\\)00
          \\(175\\)00
          \\(176\\)00
          \\(177\\)00
          \\(178\\)00
          \\(179\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(180\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(181\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(182\\)00
          \\(183\\)00
          \\(184\\)00
          \\(185\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(186\\)00
          \\(187\\)00
          \\(188\\)00
          \\(189\\)00
          \\(190\\)00
          \\(191\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(192\\)00
          \\(193\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(194\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(195\\)00
          \\(196\\)00
          \\(197\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(198\\)00
          \\(199\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(200\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(201\\)00
          \\(202\\)00
          \\(203\\)00
          \\(204\\)00
          \\(205\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(206\\)00
          \\(207\\)00
          \\(208\\)00
          \\(209\\)00
          \\(210\\)00
          \\(211\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(212\\)00
          \\(213\\)00
          \\(214\\)00
          \\(215\\)00
          \\(216\\)00
          \\(217\\)00
          \\(218\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(219\\)00
          \\(220\\)00
          \\(221\\)00
          \\(222\\)00
          \\(223\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(224\\)00
          \\(225\\)\u22121.00000\u22121.00000
          \\(226\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(227\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(228\\)00
          \\(229\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(230\\)00
          \\(231\\)00
          \\(232\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(233\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(234\\)00
          \\(235\\)00
          \\(236\\)00
          \\(237\\)00
          \\(238\\)00
          \\(239\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(240\\)00
          \\(241\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(242\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(243\\)00
          \\(244\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(245\\)00
          \\(246\\)00
          \\(247\\)00
          \\(248\\)00
          \\(249\\)00
          \\(250\\)00
          \\(251\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(252\\)00
          \\(253\\)00
          \\(254\\)00
          \\(255\\)00
          \\(256\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(257\\)1.73205\u22121.00000<br>i1.73205\u22121.00000<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(258\\)00
          \\(259\\)00
          \\(260\\)00
          \\(261\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(262\\)00
          \\(263\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(264\\)00
          \\(265\\)00
          \\(266\\)00
          \\(267\\)00
          \\(268\\)00
          \\(269\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(270\\)00
          \\(271\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(272\\)1.000001.00000
          \\(273\\)00
          \\(274\\)00
          \\(275\\)00
          \\(276\\)00
          \\(277\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(278\\)00
          \\(279\\)00
          \\(280\\)00
          \\(281\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(282\\)00
          \\(283\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(284\\)00
          \\(285\\)00
          \\(286\\)00
          \\(287\\)00
          \\(288\\)\u22121.00000\u22121.00000
          \\(289\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(290\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(291\\)00
          \\(292\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(293\\)2.000002.000001.00000\\(0\\)
          1.00000\\(0\\)
          \\(294\\)00
          \\(295\\)00
          \\(296\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(297\\)00
          \\(298\\)1.73205+1.00000<br>i1.73205+1.00000<br>i
          \\(299\\)00
          \\(300\\)00
          \\(301\\)00
          \\(302\\)00
          \\(303\\)00
          \\(304\\)00
          \\(305\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(306\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(307\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(308\\)00
          \\(309\\)00
          \\(310\\)00
          \\(311\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(312\\)00
          \\(313\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(314\\)2.00000<br>i2.00000<br>i
          \\(315\\)00
          \\(316\\)00
          \\(317\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(318\\)00
          \\(319\\)00
          \\(320\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(321\\)00
          \\(322\\)00
          \\(323\\)00
          \\(324\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(325\\)00
          \\(326\\)00
          \\(327\\)00
          \\(328\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(329\\)00
          \\(330\\)00
          \\(331\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(332\\)00
          \\(333\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(334\\)00
          \\(335\\)00
          \\(336\\)00
          \\(337\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(338\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(339\\)00
          \\(340\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(341\\)00
          \\(342\\)00
          \\(343\\)00
          \\(344\\)00
          \\(345\\)00
          \\(346\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(347\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(348\\)00
          \\(349\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(350\\)00
          \\(351\\)00
          \\(352\\)00
          \\(353\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(354\\)00
          \\(355\\)00
          \\(356\\)00
          \\(357\\)00
          \\(358\\)00
          \\(359\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(360\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(361\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(362\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(363\\)00
          \\(364\\)00
          \\(365\\)2.00000<br>i2.00000<br>i
          \\(366\\)00
          \\(367\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(368\\)00
          \\(369\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(370\\)2.000002.00000
          \\(371\\)00
          \\(372\\)00
          \\(373\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(374\\)00
          \\(375\\)00
          \\(376\\)00
          \\(377\\)00
          \\(378\\)00
          \\(379\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(380\\)00
          \\(381\\)00
          \\(382\\)00
          \\(383\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(384\\)00
          \\(385\\)00
          \\(386\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(387\\)00
          \\(388\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(389\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(390\\)00
          \\(391\\)00
          \\(392\\)00
          \\(393\\)00
          \\(394\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(395\\)00
          \\(396\\)00
          \\(397\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(398\\)00
          \\(399\\)00
          \\(400\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(401\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(402\\)00
          \\(403\\)00
          \\(404\\)00
          \\(405\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(406\\)00
          \\(407\\)00
          \\(408\\)00
          \\(409\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(410\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(411\\)00
          \\(412\\)00
          \\(413\\)00
          \\(414\\)00
          \\(415\\)00
          \\(416\\)00
          \\(417\\)00
          \\(418\\)00
          \\(419\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(420\\)00
          \\(421\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(422\\)00
          \\(423\\)00
          \\(424\\)00
          \\(425\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(426\\)00
          \\(427\\)00
          \\(428\\)00
          \\(429\\)00
          \\(430\\)00
          \\(431\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(432\\)00
          \\(433\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(434\\)00
          \\(435\\)00
          \\(436\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(437\\)00
          \\(438\\)00
          \\(439\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(440\\)00
          \\(441\\)00
          \\(442\\)00
          \\(443\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(444\\)00
          \\(445\\)00
          \\(446\\)00
          \\(447\\)00
          \\(448\\)00
          \\(449\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(450\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(451\\)00
          \\(452\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(453\\)00
          \\(454\\)00
          \\(455\\)00
          \\(456\\)00
          \\(457\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(458\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(459\\)00
          \\(460\\)00
          \\(461\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(462\\)00
          \\(463\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(464\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(465\\)00
          \\(466\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(467\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(468\\)00
          \\(469\\)00
          \\(470\\)00
          \\(471\\)00
          \\(472\\)00
          \\(473\\)00
          \\(474\\)00
          \\(475\\)00
          \\(476\\)00
          \\(477\\)00
          \\(478\\)00
          \\(479\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(480\\)00
          \\(481\\)00
          \\(482\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(483\\)00
          \\(484\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(485\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(486\\)00
          \\(487\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(488\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(489\\)00
          \\(490\\)00
          \\(491\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(492\\)00
          \\(493\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(494\\)00
          \\(495\\)00
          \\(496\\)00
          \\(497\\)00
          \\(498\\)00
          \\(499\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(500\\)00
          \\(501\\)00
          \\(502\\)00
          \\(503\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(504\\)00
          \\(505\\)00
          \\(506\\)00
          \\(507\\)00
          \\(508\\)00
          \\(509\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(510\\)00
          \\(511\\)00
          \\(512\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(513\\)00
          \\(514\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(515\\)00
          \\(516\\)00
          \\(517\\)00
          \\(518\\)00
          \\(519\\)00
          \\(520\\)00
          \\(521\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(522\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(523\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(524\\)00
          \\(525\\)00
          \\(526\\)00
          \\(527\\)00
          \\(528\\)00
          \\(529\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(530\\)00
          \\(531\\)00
          \\(532\\)00
          \\(533\\)00
          \\(534\\)00
          \\(535\\)00
          \\(536\\)00
          \\(537\\)00
          \\(538\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(539\\)00
          \\(540\\)00
          \\(541\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(542\\)00
          \\(543\\)00
          \\(544\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(545\\)\u22122.00000\u22122.00000
          \\(546\\)00
          \\(547\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(548\\)00
          \\(549\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(550\\)00
          \\(551\\)00
          \\(552\\)00
          \\(553\\)00
          \\(554\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(555\\)00
          \\(556\\)00
          \\(557\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(558\\)00
          \\(559\\)00
          \\(560\\)00
          \\(561\\)00
          \\(562\\)00
          \\(563\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(564\\)00
          \\(565\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(566\\)00
          \\(567\\)00
          \\(568\\)00
          \\(569\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(570\\)00
          \\(571\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(572\\)00
          \\(573\\)00
          \\(574\\)00
          \\(575\\)00
          \\(576\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(577\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(578\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(579\\)00
          \\(580\\)2.00000<br>i2.00000<br>i
          \\(581\\)00
          \\(582\\)00
          \\(583\\)00
          \\(584\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(585\\)00
          \\(586\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(587\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(588\\)00
          \\(589\\)00
          \\(590\\)00
          \\(591\\)00
          \\(592\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(593\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(594\\)00
          \\(595\\)00
          \\(596\\)\u22122.00000\u22122.00000
          \\(597\\)00
          \\(598\\)00
          \\(599\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(600\\)00
          \\(601\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(602\\)00
          \\(603\\)00
          \\(604\\)00
          \\(605\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(606\\)00
          \\(607\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(608\\)00
          \\(609\\)00
          \\(610\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(611\\)00
          \\(612\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(613\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(614\\)00
          \\(615\\)00
          \\(616\\)00
          \\(617\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(618\\)00
          \\(619\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(620\\)00
          \\(621\\)00
          \\(622\\)00
          \\(623\\)00
          \\(624\\)00
          \\(625\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(626\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(627\\)00
          \\(628\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(629\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(630\\)00
          \\(631\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(632\\)00
          \\(633\\)00
          \\(634\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(635\\)00
          \\(636\\)00
          \\(637\\)00
          \\(638\\)00
          \\(639\\)00
          \\(640\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(641\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(642\\)00
          \\(643\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(644\\)00
          \\(645\\)00
          \\(646\\)00
          \\(647\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(648\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(649\\)00
          \\(650\\)00
          \\(651\\)00
          \\(652\\)00
          \\(653\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(654\\)00
          \\(655\\)00
          \\(656\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(657\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(658\\)00
          \\(659\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(660\\)00
          \\(661\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(662\\)00
          \\(663\\)00
          \\(664\\)00
          \\(665\\)00
          \\(666\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(667\\)00
          \\(668\\)00
          \\(669\\)00
          \\(670\\)00
          \\(671\\)00
          \\(672\\)00
          \\(673\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(674\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(675\\)00
          \\(676\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(677\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(678\\)00
          \\(679\\)00
          \\(680\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(681\\)00
          \\(682\\)00
          \\(683\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(684\\)00
          \\(685\\)00
          \\(686\\)00
          \\(687\\)00
          \\(688\\)00
          \\(689\\)00
          \\(690\\)00
          \\(691\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(692\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(693\\)00
          \\(694\\)00
          \\(695\\)00
          \\(696\\)00
          \\(697\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(698\\)00
          \\(699\\)00
          \\(700\\)00
          \\(701\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(702\\)00
          \\(703\\)00
          \\(704\\)00
          \\(705\\)00
          \\(706\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(707\\)00
          \\(708\\)00
          \\(709\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(710\\)00
          \\(711\\)00
          \\(712\\)00
          \\(713\\)00
          \\(714\\)00
          \\(715\\)00
          \\(716\\)00
          \\(717\\)00
          \\(718\\)00
          \\(719\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(720\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(721\\)00
          \\(722\\)1.00000<br>i1.00000<br>i
          \\(723\\)00
          \\(724\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(725\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(726\\)00
          \\(727\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(728\\)00
          \\(729\\)1.00000<br>i1.00000<br>i
          \\(730\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(731\\)00
          \\(732\\)00
          \\(733\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(734\\)00
          \\(735\\)00
          \\(736\\)00
          \\(737\\)00
          \\(738\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(739\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(740\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(741\\)00
          \\(742\\)00
          \\(743\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(744\\)00
          \\(745\\)0.732051+2.73205<br>i0.732051+2.73205<br>i
          \\(746\\)00
          \\(747\\)00
          \\(748\\)00
          \\(749\\)00
          \\(750\\)00
          \\(751\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(752\\)00
          \\(753\\)00
          \\(754\\)00
          \\(755\\)00
          \\(756\\)00
          \\(757\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(758\\)00
          \\(759\\)00
          \\(760\\)00
          \\(761\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(762\\)00
          \\(763\\)00
          \\(764\\)00
          \\(765\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(766\\)00
          \\(767\\)00
          \\(768\\)00
          \\(769\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(770\\)00
          \\(771\\)00
          \\(772\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(773\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(774\\)00
          \\(775\\)00
          \\(776\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(777\\)00
          \\(778\\)2.000002.00000
          \\(779\\)00
          \\(780\\)00
          \\(781\\)00
          \\(782\\)00
          \\(783\\)00
          \\(784\\)00
          \\(785\\)\u22122.00000+2.00000<br>i\u22122.00000+2.00000<br>i
          \\(786\\)00
          \\(787\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(788\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(789\\)00
          \\(790\\)00
          \\(791\\)00
          \\(792\\)00
          \\(793\\)00
          \\(794\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(795\\)00
          \\(796\\)00
          \\(797\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(798\\)00
          \\(799\\)00
          \\(800\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(801\\)00
          \\(802\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(803\\)00
          \\(804\\)00
          \\(805\\)00
          \\(806\\)00
          \\(807\\)00
          \\(808\\)00
          \\(809\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(810\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(811\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(812\\)00
          \\(813\\)00
          \\(814\\)00
          \\(815\\)00
          \\(816\\)00
          \\(817\\)00
          \\(818\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(819\\)00
          \\(820\\)2.000002.00000
          \\(821\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(822\\)00
          \\(823\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(824\\)00
          \\(825\\)00
          \\(826\\)00
          \\(827\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(828\\)00
          \\(829\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(830\\)00
          \\(831\\)00
          \\(832\\)00
          \\(833\\)00
          \\(834\\)00
          \\(835\\)00
          \\(836\\)00
          \\(837\\)00
          \\(838\\)00
          \\(839\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(840\\)00
          \\(841\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(842\\)00
          \\(843\\)00
          \\(844\\)00
          \\(845\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(846\\)00
          \\(847\\)00
          \\(848\\)00
          \\(849\\)00
          \\(850\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(851\\)00
          \\(852\\)00
          \\(853\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(854\\)00
          \\(855\\)00
          \\(856\\)00
          \\(857\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(858\\)00
          \\(859\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(860\\)00
          \\(861\\)00
          \\(862\\)00
          \\(863\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(864\\)00
          \\(865\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(866\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(867\\)00
          \\(868\\)00
          \\(869\\)00
          \\(870\\)00
          \\(871\\)00
          \\(872\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(873\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(874\\)00
          \\(875\\)00
          \\(876\\)00
          \\(877\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(878\\)00
          \\(879\\)00
          \\(880\\)00
          \\(881\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(882\\)00
          \\(883\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(884\\)00
          \\(885\\)00
          \\(886\\)00
          \\(887\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(888\\)00
          \\(889\\)00
          \\(890\\)00
          \\(891\\)00
          \\(892\\)00
          \\(893\\)00
          \\(894\\)00
          \\(895\\)00
          \\(896\\)00
          \\(897\\)00
          \\(898\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(899\\)00
          \\(900\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(901\\)00
          \\(902\\)00
          \\(903\\)00
          \\(904\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(905\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(906\\)00
          \\(907\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(908\\)00
          \\(909\\)00
          \\(910\\)00
          \\(911\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(912\\)00
          \\(913\\)00
          \\(914\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(915\\)00
          \\(916\\)2.00000<br>i2.00000<br>i
          \\(917\\)00
          \\(918\\)00
          \\(919\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(920\\)00
          \\(921\\)00
          \\(922\\)00
          \\(923\\)00
          \\(924\\)00
          \\(925\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(926\\)00
          \\(927\\)00
          \\(928\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(929\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(930\\)00
          \\(931\\)00
          \\(932\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(933\\)00
          \\(934\\)00
          \\(935\\)00
          \\(936\\)00
          \\(937\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(938\\)00
          \\(939\\)00
          \\(940\\)00
          \\(941\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(942\\)00
          \\(943\\)00
          \\(944\\)00
          \\(945\\)00
          \\(946\\)00
          \\(947\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(948\\)00
          \\(949\\)00
          \\(950\\)00
          \\(951\\)00
          \\(952\\)00
          \\(953\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(954\\)00
          \\(955\\)00
          \\(956\\)00
          \\(957\\)00
          \\(958\\)00
          \\(959\\)00
          \\(960\\)00
          \\(961\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(962\\)00
          \\(963\\)00
          \\(964\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(965\\)2.000002.00000
          \\(966\\)00
          \\(967\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(968\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(969\\)00
          \\(970\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(971\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(972\\)00
          \\(973\\)00
          \\(974\\)00
          \\(975\\)00
          \\(976\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(977\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(978\\)00
          \\(979\\)00
          \\(980\\)00
          \\(981\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(982\\)00
          \\(983\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(984\\)00
          \\(985\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(986\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(987\\)00
          \\(988\\)00
          \\(989\\)00
          \\(990\\)00
          \\(991\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(992\\)00
          \\(993\\)00
          \\(994\\)00
          \\(995\\)00
          \\(996\\)00
          \\(997\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(998\\)00
          \\(999\\)00
          \n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n| By
          twisting character | | | | | | |\n|---|---|---|---|---|---|---|\n| Char | Parity | Ord | Type | Twist | Min | Dim |\n| 1.1 | even | 1 | trivial | 3332.1.bc.b.2027.1 | | 4 |\n| 4.3 | odd | 2 | CM | 3332.1.bc.b.2027.1 | | 4 |\n| 7.2 | even | 3 | inner | 3332.1.bc.b.667.1 | | 4 |\n| 7.3 | odd | 6 | | 68.1.f.a.55.1 | yes | 2 |\n| 7.4 | even | 3 | | 3332.1.m.b.2843.1 | | 2 |\n| 7.5 | odd | 6 | | 3332.1.bc.c.667.1 | | 4 |\n| 7.6 | odd | 2 | | 3332.1.bc.c.2027.1 | | 4 |\n| 17.13 | even | 4 | inner | 3332.1.bc.b.2223.1 | | 4 |\n| 21.17 | even | 6 | | 612.1.l.a.55.1 | | 2 |\n| 28.3 | even | 6 | | 68.1.f.a.55.1 | yes | 2 |\n| 28.11 | odd | 6 | | 3332.1.m.b.2843.1 | | 2 |\n| 28.19 | even | 6 | | 3332.1.bc.c.667.1 | | 4 |\n| 28.23 | odd | 6 | inner | 3332.1.bc.b.667.1 | | 4 |\n| 28.27 | even | 2 | | 3332.1.bc.c.2027.1 | | 4 |\n| 35.3 | even | 12 | | 1700.1.n.a.599.1 | | 2 |\n| 35.17 | even | 12 | | 1700.1.n.b.599.1 | | 2 |\n| 35.24 | odd | 6 | | 1700.1.p.a.1551.1 | | 2 |\n| 56.3 | even | 6 | | 1088.1.p.a.191.1 | | 2 |\n| 56.45 | odd | 6 | | 1088.1.p.a.191.1 | | 2 |\n| 68.47 | odd | 4 | inner | 3332.1.bc.b.2223.1 | | 4 |\n| 84.59 | odd | 6 | | 612.1.l.a.55.1 | | 2 |\n| 119.3 | even | 48 | | 1156.1.g.b.155.1 | | 8 |\n| 119.10 | even | 48 | | 1156.1.g.b.179.1 | | 8 |\n| 119.13 | odd | 4 | | 3332.1.bc.c.2223.1 | | 4 |\n| 119.24 | even | 48 | | 1156.1.g.b.179.2 | | 8 |\n| 119.30 | even | 12 | inner | 3332.1.bc.b.863.1 | | 4 |\n| 119.31 | even | 48 | | 1156.1.g.b.155.2 | | 8 |\n| 119.38 | odd | 12 | | 1156.1.f.b.251.1 | | 2 |\n| 119.45 | even | 48 | | 1156.1.g.b.399.1 | | 8 |\n| 119.47 | odd | 12 | | 3332.1.bc.c.863.1 | | 4 |\n| 119.59 | odd | 24 | | 1156.1.c.b.579.1 | | 2 |\n| 119.66 | odd | 24 | | 1156.1.d.a.1155.2 | | 2 |\n| 119.73 | even | 48 | | 1156.1.g.b.423.2 | | 8 |\n| 119.80 | even | 48 | | 1156.1.g.b.423.1 | | 8 |\n| 119.81 | even | 12 | | 3332.1.m.b.3039.1 | | 2 |\n| 119.87 | odd | 24 | | 1156.1.d.a.1155.1 | | 2 |\n| 119.94 | odd | 24 | | 1156.1.c.b.579.2 | | 2 |\n| 119.101 | odd | 6 | | 1156.1.f.b.327.1 | | 2 |\n| 119.108 | even | 48 | | 1156.1.g.b.399.2 | | 8 |\n| 119.115 | odd | 12 | | 68.1.f.a.47.1 | ✓ | 2 |\n| 140.3 | odd | 12 | | 1700.1.n.a.599.1 | | 2 |\n| 140.59 | even | 6 | | 1700.1.p.a.1551.1 | | 2 |\n| 140.87 | odd | 12 | | 1700.1.n.b.599.1 | | 2 |\n| 357.353 | even | 12 | | 612.1.l.a.523.1 | | 2 |\n| 476.3 | odd | 48 | | 1156.1.g.b.155.1 | | 8 |\n| 476.31 | odd | 48 | | 1156.1.g.b.155.2 | | 8 |\n| 476.47 | even | 12 | | 3332.1.bc.c.863.1 | | 4 |\n| 476.59 | even | 24 | | 1156.1.c.b.579.1 | | 2 |\n| 476.87 | even | 24 | | 1156.1.d.a.1155.1 | | 2 |\n| 476.115 | even | 12 | | 68.1.f.a.47.1 | ✓ | 2 |\n| 476.143 | odd | 48 | | 1156.1.g.b.179.2 | | 8 |\n| 476.199 | odd | 48 | | 1156.1.g.b.423.1 | | 8 |\n| 476.227 | odd | 48 | | 1156.1.g.b.399.2 | | 8 |\n| 476.251 | even | 4 | | 3332.1.bc.c.2223.1 | | 4 |\n| 476.283 | odd | 48 | | 1156.1.g.b.399.1 | | 8 |\n| 476.311 | odd | 48 | | 1156.1.g.b.423.2 | | 8 |\n| 476.319 | odd | 12 | | 3332.1.m.b.3039.1 | | 2 |\n| 476.339 | even | 6 | | 1156.1.f.b.327.1 | | 2 |\n| 476.367 | odd | 48 | | 1156.1.g.b.179.1 | | 8 |\n| 476.387 | odd | 12 | inner | 3332.1.bc.b.863.1 | | 4 |\n| 476.395 | even | 12 | | 1156.1.f.b.251.1 | | 2 |\n| 476.423 | even | 24 | | 1156.1.d.a.1155.2 | | 2 |\n| 476.451 | even | 24 | | 1156.1.c.b.579.2 | | 2 |\n| 595.234 | odd | 12 | | 1700.1.p.a.251.1 | | 2 |\n| 595.353 | even | 12 | | 1700.1.n.b.999.1 | | 2 |\n| 595.472 | even | 12 | | 1700.1.n.a.999.1 | | 2 |\n| 952.115 | even | 12 | | 1088.1.p.a.319.1 | | 2 |\n| 952.829 | odd | 12 | | 1088.1.p.a.319.1 | | 2 |\n| 1428.1067 | odd | 12 | | 612.1.l.a.523.1 | | 2 |\n| 2380.1067 | odd | 12 | | 1700.1.n.a.999.1 | | 2 |\n| 2380.1543 | odd | 12 | | 1700.1.n.b.999.1 | | 2 |\n| 2380.2019 | even | 12 | | 1700.1.p.a.251.1 | | 2 |\n\n| By
          twisted newform | | | | | | |\n|---|---|---|---|---|---|---|\n| Twist | Min | Dim | Char | Parity | Ord | Type |\n| 68.1.f.a.47.1 | ✓ | 2 | 119.115 | odd | 12 | |\n| 68.1.f.a.47.1 | ✓ | 2 | 476.115 | even | 12 | |\n| 68.1.f.a.55.1 | yes | 2 | 7.3 | odd | 6 | |\n| 68.1.f.a.55.1 | yes | 2 | 28.3 | even | 6 | |\n| 612.1.l.a.55.1 | | 2 | 21.17 | even | 6 | |\n| 612.1.l.a.55.1 | | 2 | 84.59 | odd | 6 | |\n| 612.1.l.a.523.1 | | 2 | 357.353 | even | 12 | |\n| 612.1.l.a.523.1 | | 2 | 1428.1067 | odd | 12 | |\n| 1088.1.p.a.191.1 | | 2 | 56.3 | even | 6 | |\n| 1088.1.p.a.191.1 | | 2 | 56.45 | odd | 6 | |\n| 1088.1.p.a.319.1 | | 2 | 952.115 | even | 12 | |\n| 1088.1.p.a.319.1 | | 2 | 952.829 | odd | 12 | |\n| 1156.1.c.b.579.1 | | 2 | 119.59 | odd | 24 | |\n| 1156.1.c.b.579.1 | | 2 | 476.59 | even | 24 | |\n| 1156.1.c.b.579.2 | | 2 | 119.94 | odd | 24 | |\n| 1156.1.c.b.579.2 | | 2 | 476.451 | even | 24 | |\n| 1156.1.d.a.1155.1 | | 2 | 119.87 | odd | 24 | |\n| 1156.1.d.a.1155.1 | | 2 | 476.87 | even | 24 | |\n| 1156.1.d.a.1155.2 | | 2 | 119.66 | odd | 24 | |\n| 1156.1.d.a.1155.2 | | 2 | 476.423 | even | 24 | |\n| 1156.1.f.b.251.1 | | 2 | 119.38 | odd | 12 | |\n| 1156.1.f.b.251.1 | | 2 | 476.395 | even | 12 | |\n| 1156.1.f.b.327.1 | | 2 | 119.101 | odd | 6 | |\n| 1156.1.f.b.327.1 | | 2 | 476.339 | even | 6 | |\n| 1156.1.g.b.155.1 | | 8 | 119.3 | even | 48 | |\n| 1156.1.g.b.155.1 | | 8 | 476.3 | odd | 48 | |\n| 1156.1.g.b.155.2 | | 8 | 119.31 | even | 48 | |\n| 1156.1.g.b.155.2 | | 8 | 476.31 | odd | 48 | |\n| 1156.1.g.b.179.1 | | 8 | 119.10 | even | 48 | |\n| 1156.1.g.b.179.1 | | 8 | 476.367 | odd | 48 | |\n| 1156.1.g.b.179.2 | | 8 | 119.24 | even | 48 | |\n| 1156.1.g.b.179.2 | | 8 | 476.143 | odd | 48 | |\n| 1156.1.g.b.399.1 | | 8 | 119.45 | even | 48 | |\n| 1156.1.g.b.399.1 | | 8 | 476.283 | odd | 48 | |\n| 1156.1.g.b.399.2 | | 8 | 119.108 | even | 48 | |\n| 1156.1.g.b.399.2 | | 8 | 476.227 | odd | 48 | |\n| 1156.1.g.b.423.1 | | 8 | 119.80 | even | 48 | |\n| 1156.1.g.b.423.1 | | 8 | 476.199 | odd | 48 | |\n| 1156.1.g.b.423.2 | | 8 | 119.73 | even | 48 | |\n| 1156.1.g.b.423.2 | | 8 | 476.311 | odd | 48 | |\n| 1700.1.n.a.599.1 | | 2 | 35.3 | even | 12 | |\n| 1700.1.n.a.599.1 | | 2 | 140.3 | odd | 12 | |\n| 1700.1.n.a.999.1 | | 2 | 595.472 | even | 12 | |\n| 1700.1.n.a.999.1 | | 2 | 2380.1067 | odd | 12 | |\n| 1700.1.n.b.599.1 | | 2 | 35.17 | even | 12 | |\n| 1700.1.n.b.599.1 | | 2 | 140.87 | odd | 12 | |\n| 1700.1.n.b.999.1 | | 2 | 595.353 | even | 12 | |\n| 1700.1.n.b.999.1 | | 2 | 2380.1543 | odd | 12 | |\n| 1700.1.p.a.251.1 | | 2 | 595.234 | odd | 12 | |\n| 1700.1.p.a.251.1 | | 2 | 2380.2019 | even | 12 | |\n| 1700.1.p.a.1551.1 | | 2 | 35.24 | odd | 6 | |\n| 1700.1.p.a.1551.1 | | 2 | 140.59 | even | 6 | |\n| 3332.1.m.b.2843.1 | | 2 | 7.4 | even | 3 | |\n| 3332.1.m.b.2843.1 | | 2 | 28.11 | odd | 6 | |\n| 3332.1.m.b.3039.1 | | 2 | 119.81 | even | 12 | |\n| 3332.1.m.b.3039.1 | | 2 | 476.319 | odd | 12 | |\n| 3332.1.bc.b.667.1 | | 4 | 7.2 | even | 3 | inner |\n| 3332.1.bc.b.667.1 | | 4 | 28.23 | odd | 6 | inner |\n| 3332.1.bc.b.863.1 | | 4 | 119.30 | even | 12 | inner |\n| 3332.1.bc.b.863.1 | | 4 | 476.387 | odd | 12 | inner |\n| 3332.1.bc.b.2027.1 | | 4 | 1.1 | even | 1 | trivial |\n| 3332.1.bc.b.2027.1 | | 4 | 4.3 | odd | 2 | CM |\n| 3332.1.bc.b.2223.1 | | 4 | 17.13 | even | 4 | inner |\n| 3332.1.bc.b.2223.1 | | 4 | 68.47 | odd | 4 | inner |\n| 3332.1.bc.c.667.1 | | 4 | 7.5 | odd | 6 | |\n| 3332.1.bc.c.667.1 | | 4 | 28.19 | even | 6 | |\n| 3332.1.bc.c.863.1 | | 4 | 119.47 | odd | 12 | |\n| 3332.1.bc.c.863.1 | | 4 | 476.47 | even | 12 | |\n| 3332.1.bc.c.2027.1 | | 4 | 7.6 | odd | 2 | |\n| 3332.1.bc.c.2027.1 | | 4 | 28.27 | even | 2 | |\n| 3332.1.bc.c.2223.1 | | 4 | 119.13 | odd | 4 | |\n| 3332.1.bc.c.2223.1 | | 4 | 476.251 | even | 4 | |\n", "html": "\n\n\n \n \n \n \n LMFDB - Embedded newform 3332.1.bc.b.2027.1 \n \n\n \n \n \n \n \n\n \n \n\n\n\n\n \n\n \n \n\n \n \n\n\n \n \n \n \n \n \n\n\n\n\n\n \n \n\n
          \n \n
          \n
          \n \n
          \n \n
          \n Citation\n ·\n Feedback\n ·\n Hide Menu\n \n
          \n
          \n\n
          \n
          Embedded newform 3332.1.bc.b.2027.1
          \n\n
          \n
          \n\n\n\n\n\n
          \n
          \n

          Properties

          \n
          \n \n
          Label\n 3332.1.bc.b.2027.1
          \n
          Level\n $3332$
          Weight\n $1$
          Character\n 3332.2027
          Analytic conductor\n $1.663$
          Analytic rank\n $0$
          Dimension\n $4$
          Projective image\n $D_{4}$
          CM discriminant\n -4
          Inner twists\n $8$
          \n
          \n\n\n\n

          Related objects

          \n \n\n\n\n

          Downloads

          \n \n\n

          Learn more

          \n \n\n
          \n
          \n
          \n
          \n
          \n \n
          \n Show commands:\n Magma\n / PariGP\n / SageMath\n
          \n\n\n\n\n

          Newspace parameters

          \n\n
          comment: Compute space of new eigenforms
           
          \n
          [N,k,chi] = [3332,1,Mod(667,3332)]
           
          mf = mfinit([N,k,chi],0)
           
          lf = mfeigenbasis(mf)
           
          \n
          from sage.modular.dirichlet import DirichletCharacter
           
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
           
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
           
          N = Newforms(chi, 1, names="a")
           
          \n
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
           
          chi := DirichletCharacter("3332.667");
           
          S:= CuspForms(chi, 1);
           
          N := Newforms(S);
           
          \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\) 3332.bc (of order \\(12\\), degree \\(4\\), not minimal)
          \n\n

          Newform invariants

          \n\n
          comment: select newform
           
          \n
          sage: f = N[0] # Warning: the index may be different
           
          \n
          gp: f = lf[1] \\\\ Warning: the index may be different
           
          \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t\n \n \t\n \t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          \n
          comment: defining polynomial
           
          \n
          gp: f.mod \\\\ as an extension of the character field
           
          \n\n
          Defining polynomial: \n\n \\( x^{4} - x^{2} + 1 \\)\n \n\n \n \"Copy\n \n \n \"Toggle\n \n
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          \n\n\n

          Embedding invariants

          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form 3332.1.bc.b.863.1
          \n\n\n

          $q$-expansion

          \n
          \n
          comment: q-expansion
           
          \n
          sage: f.q_expansion() # note that sage often uses an isomorphic number field
           
          \n
          gp: mfcoefs(f, 20)
           
          \n\n
          \n \n \n \n \n \n \n \n \n \n \n \n
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\n\n \\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\n \n\n \n \"Copy\n \n \n \"Toggle\n \n
          \n
          \n\n
          \n\n\n

          Character values

          \n

          We give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).

          \n\n \n \n \n \n \n \n \n \n \n \n \n \n
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          \n\n\n

          Coefficient data

          \n\n

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          \n\n\n\n\n

          \n
          \n \n Display \\(a_p\\) with \\(p\\) up to:\n 50\n 250\n 1000\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n \n Display \\(a_n\\) with \\(n\\) up to:\n 50\n 250\n 1000\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n
          \n\n\n
          \n \n \n \n \n \n \n
          Significant digits:
          \n
          \n\n
          \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n
          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(3\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(5\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(7\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(8\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(9\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(10\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(11\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(13\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(15\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(16\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(17\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(18\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(19\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(21\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(22\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(23\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(26\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(27\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(28\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(29\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(30\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(31\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(33\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(34\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(35\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(36\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(39\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(40\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(41\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(43\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(45\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(46\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(47\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(49\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(50\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(51\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(52\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(53\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(55\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(56\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(57\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(58\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(59\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(61\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(63\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(64\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(65\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(66\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(67\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(69\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(70\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(71\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(73\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(75\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(76\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(77\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(78\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(79\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(81\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(83\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(85\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(86\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(87\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(88\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(89\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(91\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(92\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(93\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(94\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(95\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(96\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(97\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(98\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(99\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(100\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(101\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(103\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(105\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(106\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(107\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(109\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(111\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(112\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(113\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(115\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(116\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(117\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(118\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(119\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(120\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(121\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(123\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(124\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(125\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(126\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(127\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(129\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(130\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(131\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(133\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(134\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(135\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(136\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(137\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(139\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(141\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(142\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(143\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(145\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(147\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(148\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(149\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(151\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(153\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(154\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(155\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(156\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(157\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(159\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(160\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(161\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(162\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(163\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(165\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(166\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(167\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(169\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(170\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(171\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(172\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(175\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(176\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(177\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(178\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(179\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(183\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(184\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(185\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(186\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(187\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(188\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(189\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(190\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(191\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(193\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(195\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(196\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(199\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(201\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(202\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(203\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(204\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n \n 1.00000\n \n +\n \n 1.73205i\n
          \n \\(206\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(207\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(208\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(209\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(210\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(211\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(213\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(214\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(215\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(216\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(217\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(218\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(219\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(220\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(221\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(222\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(223\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(225\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(227\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(229\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(231\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(235\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(236\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(237\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(238\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(239\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(241\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(243\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(244\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(245\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(246\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(247\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(248\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(249\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(250\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(251\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(253\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(254\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(255\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(256\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(257\\)\n \n 1.73205\n \n −\n \n 1.00000i\n \n 1.73205\n \n −\n \n 1.00000i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(259\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(260\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(261\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(262\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(263\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(265\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(266\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(267\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(268\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(271\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n\n \n\n \n 1.00000\n \n\n \n\n
          \n \\(273\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(274\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(275\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(276\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(279\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(280\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(281\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(283\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(285\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(286\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(287\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(288\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(289\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(290\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(291\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(292\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(293\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(294\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(295\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(296\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(297\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n \n 1.73205\n \n +\n \n 1.00000i\n
          \n \\(299\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(300\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(301\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(302\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(303\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(304\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(305\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(307\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(309\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(310\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(311\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(313\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(315\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(316\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(317\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(319\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(321\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(322\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(323\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(324\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(325\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(326\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(327\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(328\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(329\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(330\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(331\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(333\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(334\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(335\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(336\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(337\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(339\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(340\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(341\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(342\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(343\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(344\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(345\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(346\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(347\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(349\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(351\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(352\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(353\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(355\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(356\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(357\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(358\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(359\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(361\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(362\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(363\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(364\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(365\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(366\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(367\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(370\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(371\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(372\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(373\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(375\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(376\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(377\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(378\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(379\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(381\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(382\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(383\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(385\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(386\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(387\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(388\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(389\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(391\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(392\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(393\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(394\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(395\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(396\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(397\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(399\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(400\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(401\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(403\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(404\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(405\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(406\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(407\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(408\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(409\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(411\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(412\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(413\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(414\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(415\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(416\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(417\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(418\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(419\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(421\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(423\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(424\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(425\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(426\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(427\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(428\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(429\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(430\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(431\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(433\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(435\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(436\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(437\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(438\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(439\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(441\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(442\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(443\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(445\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(446\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(447\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(448\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(449\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(451\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(452\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(453\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(454\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(455\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(456\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(457\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(459\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(460\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(461\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(463\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(465\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(466\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(467\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(469\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(470\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(471\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(472\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(473\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(474\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(475\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(476\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(477\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(478\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(479\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(481\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(483\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(484\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(485\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(486\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(487\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(489\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(490\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(491\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(494\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(495\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(496\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(497\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(498\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(499\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(501\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(502\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(503\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(505\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(506\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(507\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(508\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(509\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(511\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(512\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(513\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(514\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n
          \n \\(515\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(516\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(517\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(518\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(519\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(520\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(521\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(523\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(525\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(526\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(527\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(528\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(529\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(530\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(531\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(532\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(533\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(534\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(535\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(536\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(537\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(538\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(539\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(540\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(543\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(544\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(545\\)\n \n −2.00000\n \n\n \n\n \n −2.00000\n \n\n \n\n
          \n \\(546\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(547\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(550\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(551\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(552\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(553\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(554\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(555\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(556\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(557\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(559\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(560\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(561\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(562\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(563\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n \n 1.00000\n \n +\n \n 1.73205i\n
          \n \\(566\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(567\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(568\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(569\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(571\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(573\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(574\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(575\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(576\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(577\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(579\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(580\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(581\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(582\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(583\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(584\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(585\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(586\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(587\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(589\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(590\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(591\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(592\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(593\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(595\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(596\\)\n \n −2.00000\n \n\n \n\n \n −2.00000\n \n\n \n\n
          \n \\(597\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(598\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(599\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(601\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(603\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(604\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(605\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(606\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(607\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(609\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(610\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(611\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(612\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(613\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(615\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(616\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(617\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(619\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(621\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(622\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(623\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(624\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(625\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(626\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(627\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(628\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(629\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(630\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(631\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(633\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(635\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(636\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(637\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(638\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(639\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(640\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(641\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(643\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(645\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(646\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(647\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(649\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(650\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(651\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(652\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(653\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(655\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(656\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(658\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(659\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(661\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(663\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(664\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(665\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(666\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(667\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(668\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(669\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(670\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(671\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(672\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(673\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(675\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(676\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(679\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(681\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(682\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(683\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(685\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(686\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(687\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(688\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(689\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(690\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(691\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(693\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(694\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(695\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(696\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(697\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(698\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(699\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(700\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(701\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(703\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(704\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(705\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(706\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(707\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(708\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(709\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(711\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(712\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(713\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(714\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(715\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(716\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(717\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(718\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(719\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(721\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(722\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(723\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(724\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(725\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(726\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(727\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(729\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(730\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(731\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(732\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(733\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(735\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(736\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(737\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(738\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(739\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(741\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(742\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(743\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n \n 0.732051\n \n +\n \n 2.73205i\n
          \n \\(746\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(747\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(748\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(749\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(750\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(751\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(753\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(754\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(755\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(756\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(757\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(759\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(760\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(761\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(763\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(764\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(765\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(766\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(767\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(768\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(769\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(771\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(772\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(773\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(775\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(777\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(778\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(779\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(780\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(781\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(782\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(783\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(784\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(785\\)\n \n −2.00000\n \n +\n \n 2.00000i\n \n −2.00000\n \n +\n \n 2.00000i\n
          \n \\(786\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(787\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(789\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(790\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(791\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(792\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(793\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(795\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(796\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(797\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(799\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(801\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(803\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(804\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(805\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(806\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(807\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(808\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(809\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(811\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(813\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(814\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(815\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(816\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(817\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(818\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(819\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(820\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(821\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(823\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(825\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(826\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(827\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(829\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(831\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(832\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(833\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(834\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(835\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(836\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(837\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(838\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(839\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(841\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(842\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(843\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(844\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(846\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(847\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(848\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(849\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(850\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(851\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(852\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(853\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(854\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(855\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(856\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(857\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(859\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(861\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(862\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(863\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(865\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(866\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(867\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(868\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(869\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(870\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(871\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(873\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(874\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(875\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(876\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(877\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(879\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(880\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(881\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(883\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(885\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(886\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(887\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(889\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(890\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(891\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(892\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(893\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(894\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(895\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(896\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(897\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(899\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(900\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(901\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(902\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(903\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(904\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(905\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(906\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(907\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(909\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(910\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(911\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(913\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(914\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(915\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(916\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(917\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(918\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(919\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(921\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(922\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(923\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(924\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(926\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(927\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(928\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(929\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(931\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(932\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(933\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(934\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(935\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(936\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(937\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(939\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(940\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(941\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(943\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(944\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(945\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(946\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(947\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(949\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(950\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(951\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(952\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(953\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(955\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(956\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(957\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(958\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(959\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(960\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(961\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(962\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(963\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(964\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(965\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(966\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(967\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(969\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(970\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(971\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(973\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(974\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(975\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(976\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(977\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(979\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(980\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(981\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(982\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(983\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(985\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(986\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(987\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(988\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(989\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(990\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(991\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(993\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(994\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(995\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(996\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(997\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(999\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n
          \n
          \n \n Display \\(a_p\\) with \\(p\\) up to:\n 50\n 250\n 1000\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n \n Display \\(a_n\\) with \\(n\\) up to:\n 50\n 250\n 1000\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n
          \n\n\n

          Twists

          \n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
                 By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.12
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.12
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          \n
              
          \n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
                  By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.12119.115odd12
          68.1.f.a.47.12476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          \n
          \n\n\n\n

          \n
          \n
          \n\n\n
          \n\n

          This project is supported by grants from the US National Science Foundation, the UK Engineering and Physical Sciences Research Council, and the Simons Foundation.

          \n
          \n Contact\n ·\n Citation\n ·\n Acknowledgments\n ·\n Editorial Board\n ·\n Source\n ·\n SageMath version 10.1\n ·\n LMFDB Release 1.2.1\n
          \n
          \n\n"} +{"content_list": [[{"type": "paragraph", "raw_content": "
          \n Show commands:\n Magma\n / PariGP\n / SageMath
          ", "content": [{"c": "Show commands: Magma/ PariGP/ SageMath", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          [N,k,chi] = [3332,1,Mod(667,3332)]
          mf = mfinit([N,k,chi],0)
          lf = mfeigenbasis(mf)
          ", "content": [{"c": "[N,k,chi] = [3332,1,Mod(667,3332)] mf = mfinit([N,k,chi],0) lf = mfeigenbasis(mf)", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          from sage.modular.dirichlet import DirichletCharacter
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
          N = Newforms(chi, 1, names=\"a\")
          ", "content": [{"c": "from sage.modular.dirichlet import DirichletCharacter H = DirichletGroup(3332, base_ring=CyclotomicField(12)) chi = DirichletCharacter(H, H._module([6, 4, 9])) N = Newforms(chi, 1, names=\"a\")", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
          chi := DirichletCharacter(\"3332.667\");
          S:= CuspForms(chi, 1);
          N := Newforms(S);
          ", "content": [{"c": "//Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code chi := DirichletCharacter(\"3332.667\"); S:= CuspForms(chi, 1); N := Newforms(S);", "t": "text"}]}, {"type": "table", "raw_content": "
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\)3332.bc (of order \\(12\\), degree \\(4\\), not minimal)
          ", "content": {"html": "
          Level\\( N \\)\\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight\\( k \\)\\(=\\)\\( 1 \\)
          Character orbit\\([\\chi]\\)\\(=\\)3332.bc<br>order<br>degree<br>minimal
          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

          Newform invariants

          ", "content": {"title_content": "Newform invariants", "level": "2"}}, {"type": "paragraph", "raw_content": "
          sage:\u00a0f = N[0] # Warning: the index may be different
          ", "content": [{"c": "sage:\u00a0f = N[0] # Warning: the index may be different", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          gp:\u00a0f = lf[1] \\\\ Warning: the index may be different
          ", "content": [{"c": "gp:\u00a0f = lf[1] \\\\ Warning: the index may be different", "t": "text"}]}, {"type": "table", "raw_content": "
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial: \\( x^{4} - x^{2} + 1 \\)\"Copy\"Toggle
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          ", "content": {"html": "
          Self dualno
          Analytic conductor\\(1.66288462209\\)
          Analytic rank\\(0\\)
          Dimension\\(4\\)
          Coefficient field\\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial\\( x^{4} - x^{2} + 1 \\)
          Coefficient ring\\(\\Z[a_1, a_2]\\)
          Coefficient ring index\\( 1 \\)
          Twist minimalno (minimal twist has level 68)
          Projective image\\(D_{4}\\)
          Projective fieldGalois closure of<br>4.2.19652.1
          Artin image$C_4\\wr C_2\\times C_6$
          Artin fieldGalois closure of<br>\\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          ", "is_complex": true, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

          Embedding invariants

          ", "content": {"title_content": "Embedding invariants", "level": "2"}}, {"type": "table", "raw_content": "
          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          ", "content": {"html": "
          Embedding label2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
          sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field
          ", "content": [{"c": "sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          gp:\u00a0mfcoefs(f, 20)
          ", "content": [{"c": "gp:\u00a0mfcoefs(f, 20)", "t": "text"}]}, {"type": "table", "raw_content": "
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\"Copy\"Toggle
          ", "content": {"html": "
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)
          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

          Character values

          ", "content": {"title_content": "Character values", "level": "2"}}, {"type": "paragraph", "raw_content": "

          We give the values of \\chi on generators for \\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times.

          ", "content": [{"c": "We give the values of", "t": "text"}, {"c": "\\chi", "t": "equation-inline"}, {"c": "on generators for", "t": "text"}, {"c": "\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "table", "raw_content": "
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          ", "content": {"html": "
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

          Coefficient data

          ", "content": {"title_content": "Coefficient data", "level": "2"}}, {"type": "paragraph", "raw_content": "

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          ", "content": [{"c": "For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the Satake parameters\\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "table", "raw_content": "
          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(3\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(5\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n 0\n \n 0\n
          \n \\(7\\)\n \n 0\n \n 0\n
          \n \\(8\\)\n \n 1.00000i\n 1.00000i
          \n \\(9\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(10\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(11\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n 0\n \n 0\n
          \n \\(13\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n 0\n \n 0\n
          \n \\(15\\)\n \n 0\n \n 0\n
          \n \\(16\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(17\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(18\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(19\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(21\\)\n \n 0\n \n 0\n
          \n \\(22\\)\n \n 0\n \n 0\n
          \n \\(23\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n 0\n \n 0\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(26\\)\n \n 0\n \n 0\n
          \n \\(27\\)\n \n 0\n \n 0\n
          \n \\(28\\)\n \n 0\n \n 0\n
          \n \\(29\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(30\\)\n \n 0\n \n 0\n
          \n \\(31\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(33\\)\n \n 0\n \n 0\n
          \n \\(34\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(35\\)\n \n 0\n \n 0\n
          \n \\(36\\)\n \n 1.00000i\n 1.00000i
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n 0\n \n 0\n
          \n \\(39\\)\n \n 0\n \n 0\n
          \n \\(40\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(41\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n 0\n \n 0\n
          \n \\(43\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n 0\n \n 0\n
          \n \\(45\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(46\\)\n \n 0\n \n 0\n
          \n \\(47\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n 0\n \n 0\n
          \n \\(49\\)\n \n 0\n \n 0\n
          \n \\(50\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(51\\)\n \n 0\n \n 0\n
          \n \\(52\\)\n \n 0\n \n 0\n
          \n \\(53\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n 0\n \n 0\n
          \n \\(55\\)\n \n 0\n \n 0\n
          \n \\(56\\)\n \n 0\n \n 0\n
          \n \\(57\\)\n \n 0\n \n 0\n
          \n \\(58\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(59\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n 0\n \n 0\n
          \n \\(61\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n 0\n \n 0\n
          \n \\(63\\)\n \n 0\n \n 0\n
          \n \\(64\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(65\\)\n \n 0\n \n 0\n
          \n \\(66\\)\n \n 0\n \n 0\n
          \n \\(67\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(69\\)\n \n 0\n \n 0\n
          \n \\(70\\)\n \n 0\n \n 0\n
          \n \\(71\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(73\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(75\\)\n \n 0\n \n 0\n
          \n \\(76\\)\n \n 0\n \n 0\n
          \n \\(77\\)\n \n 0\n \n 0\n
          \n \\(78\\)\n \n 0\n \n 0\n
          \n \\(79\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(81\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(83\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n 0\n \n 0\n
          \n \\(85\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(86\\)\n \n 0\n \n 0\n
          \n \\(87\\)\n \n 0\n \n 0\n
          \n \\(88\\)\n \n 0\n \n 0\n
          \n \\(89\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(91\\)\n \n 0\n \n 0\n
          \n \\(92\\)\n \n 0\n \n 0\n
          \n \\(93\\)\n \n 0\n \n 0\n
          \n \\(94\\)\n \n 0\n \n 0\n
          \n \\(95\\)\n \n 0\n \n 0\n
          \n \\(96\\)\n \n 0\n \n 0\n
          \n \\(97\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(98\\)\n \n 0\n \n 0\n
          \n \\(99\\)\n \n 0\n \n 0\n
          \n \\(100\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(101\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n 0\n \n 0\n
          \n \\(103\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n 0\n \n 0\n
          \n \\(105\\)\n \n 0\n \n 0\n
          \n \\(106\\)\n \n 0\n \n 0\n
          \n \\(107\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n 0\n \n 0\n
          \n \\(109\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n 0\n \n 0\n
          \n \\(111\\)\n \n 0\n \n 0\n
          \n \\(112\\)\n \n 0\n \n 0\n
          \n \\(113\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n 0\n \n 0\n
          \n \\(115\\)\n \n 0\n \n 0\n
          \n \\(116\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(117\\)\n \n 0\n \n 0\n
          \n \\(118\\)\n \n 0\n \n 0\n
          \n \\(119\\)\n \n 0\n \n 0\n
          \n \\(120\\)\n \n 0\n \n 0\n
          \n \\(121\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(123\\)\n \n 0\n \n 0\n
          \n \\(124\\)\n \n 0\n \n 0\n
          \n \\(125\\)\n \n 0\n \n 0\n
          \n \\(126\\)\n \n 0\n \n 0\n
          \n \\(127\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(129\\)\n \n 0\n \n 0\n
          \n \\(130\\)\n \n 0\n \n 0\n
          \n \\(131\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n 0\n \n 0\n
          \n \\(133\\)\n \n 0\n \n 0\n
          \n \\(134\\)\n \n 0\n \n 0\n
          \n \\(135\\)\n \n 0\n \n 0\n
          \n \\(136\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(137\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n 0\n \n 0\n
          \n \\(139\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n 0\n \n 0\n
          \n \\(141\\)\n \n 0\n \n 0\n
          \n \\(142\\)\n \n 0\n \n 0\n
          \n \\(143\\)\n \n 0\n \n 0\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(145\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(147\\)\n \n 0\n \n 0\n
          \n \\(148\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(149\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n 0\n \n 0\n
          \n \\(151\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n 0\n \n 0\n
          \n \\(153\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(154\\)\n \n 0\n \n 0\n
          \n \\(155\\)\n \n 0\n \n 0\n
          \n \\(156\\)\n \n 0\n \n 0\n
          \n \\(157\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n 0\n \n 0\n
          \n \\(159\\)\n \n 0\n \n 0\n
          \n \\(160\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(161\\)\n \n 0\n \n 0\n
          \n \\(162\\)\n \n 1.00000i\n 1.00000i
          \n \\(163\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(165\\)\n \n 0\n \n 0\n
          \n \\(166\\)\n \n 0\n \n 0\n
          \n \\(167\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n 0\n \n 0\n
          \n \\(169\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(170\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(171\\)\n \n 0\n \n 0\n
          \n \\(172\\)\n \n 0\n \n 0\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n 0\n \n 0\n
          \n \\(175\\)\n \n 0\n \n 0\n
          \n \\(176\\)\n \n 0\n \n 0\n
          \n \\(177\\)\n \n 0\n \n 0\n
          \n \\(178\\)\n \n 0\n \n 0\n
          \n \\(179\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n 0\n \n 0\n
          \n \\(183\\)\n \n 0\n \n 0\n
          \n \\(184\\)\n \n 0\n \n 0\n
          \n \\(185\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(186\\)\n \n 0\n \n 0\n
          \n \\(187\\)\n \n 0\n \n 0\n
          \n \\(188\\)\n \n 0\n \n 0\n
          \n \\(189\\)\n \n 0\n \n 0\n
          \n \\(190\\)\n \n 0\n \n 0\n
          \n \\(191\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n 0\n \n 0\n
          \n \\(193\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(195\\)\n \n 0\n \n 0\n
          \n \\(196\\)\n \n 0\n \n 0\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n 0\n \n 0\n
          \n \\(199\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(201\\)\n \n 0\n \n 0\n
          \n \\(202\\)\n \n 0\n \n 0\n
          \n \\(203\\)\n \n 0\n \n 0\n
          \n \\(204\\)\n \n 0\n \n 0\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(206\\)\n \n 0\n \n 0\n
          \n \\(207\\)\n \n 0\n \n 0\n
          \n \\(208\\)\n \n 0\n \n 0\n
          \n \\(209\\)\n \n 0\n \n 0\n
          \n \\(210\\)\n \n 0\n \n 0\n
          \n \\(211\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n 0\n \n 0\n
          \n \\(213\\)\n \n 0\n \n 0\n
          \n \\(214\\)\n \n 0\n \n 0\n
          \n \\(215\\)\n \n 0\n \n 0\n
          \n \\(216\\)\n \n 0\n \n 0\n
          \n \\(217\\)\n \n 0\n \n 0\n
          \n \\(218\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(219\\)\n \n 0\n \n 0\n
          \n \\(220\\)\n \n 0\n \n 0\n
          \n \\(221\\)\n \n 0\n \n 0\n
          \n \\(222\\)\n \n 0\n \n 0\n
          \n \\(223\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n 0\n \n 0\n
          \n \\(225\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(227\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n 0\n \n 0\n
          \n \\(229\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n 0\n \n 0\n
          \n \\(231\\)\n \n 0\n \n 0\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n 0\n \n 0\n
          \n \\(235\\)\n \n 0\n \n 0\n
          \n \\(236\\)\n \n 0\n \n 0\n
          \n \\(237\\)\n \n 0\n \n 0\n
          \n \\(238\\)\n \n 0\n \n 0\n
          \n \\(239\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n 0\n \n 0\n
          \n \\(241\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(243\\)\n \n 0\n \n 0\n
          \n \\(244\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(245\\)\n \n 0\n \n 0\n
          \n \\(246\\)\n \n 0\n \n 0\n
          \n \\(247\\)\n \n 0\n \n 0\n
          \n \\(248\\)\n \n 0\n \n 0\n
          \n \\(249\\)\n \n 0\n \n 0\n
          \n \\(250\\)\n \n 0\n \n 0\n
          \n \\(251\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n 0\n \n 0\n
          \n \\(253\\)\n \n 0\n \n 0\n
          \n \\(254\\)\n \n 0\n \n 0\n
          \n \\(255\\)\n \n 0\n \n 0\n
          \n \\(256\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(257\\)\n \n 1.73205\n \n \u2212\n \n 1.00000i\n 1.73205\n \n \u2212\n \n 1.00000i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n 0\n \n 0\n
          \n \\(259\\)\n \n 0\n \n 0\n
          \n \\(260\\)\n \n 0\n \n 0\n
          \n \\(261\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(262\\)\n \n 0\n \n 0\n
          \n \\(263\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n 0\n \n 0\n
          \n \\(265\\)\n \n 0\n \n 0\n
          \n \\(266\\)\n \n 0\n \n 0\n
          \n \\(267\\)\n \n 0\n \n 0\n
          \n \\(268\\)\n \n 0\n \n 0\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n 0\n \n 0\n
          \n \\(271\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n 1.00000\n
          \n \\(273\\)\n \n 0\n \n 0\n
          \n \\(274\\)\n \n 0\n \n 0\n
          \n \\(275\\)\n \n 0\n \n 0\n
          \n \\(276\\)\n \n 0\n \n 0\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n 0\n \n 0\n
          \n \\(279\\)\n \n 0\n \n 0\n
          \n \\(280\\)\n \n 0\n \n 0\n
          \n \\(281\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n 0\n \n 0\n
          \n \\(283\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n 0\n \n 0\n
          \n \\(285\\)\n \n 0\n \n 0\n
          \n \\(286\\)\n \n 0\n \n 0\n
          \n \\(287\\)\n \n 0\n \n 0\n
          \n \\(288\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(289\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(290\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(291\\)\n \n 0\n \n 0\n
          \n \\(292\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(293\\)\n \n 2.00000\n \n 2.00000\n \n 1.00000\n \n \\(0\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(294\\)\n \n 0\n \n 0\n
          \n \\(295\\)\n \n 0\n \n 0\n
          \n \\(296\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(297\\)\n \n 0\n \n 0\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n 1.73205\n \n +\n \n 1.00000i
          \n \\(299\\)\n \n 0\n \n 0\n
          \n \\(300\\)\n \n 0\n \n 0\n
          \n \\(301\\)\n \n 0\n \n 0\n
          \n \\(302\\)\n \n 0\n \n 0\n
          \n \\(303\\)\n \n 0\n \n 0\n
          \n \\(304\\)\n \n 0\n \n 0\n
          \n \\(305\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(307\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n 0\n \n 0\n
          \n \\(309\\)\n \n 0\n \n 0\n
          \n \\(310\\)\n \n 0\n \n 0\n
          \n \\(311\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n 0\n \n 0\n
          \n \\(313\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n 2.00000i\n 2.00000i
          \n \\(315\\)\n \n 0\n \n 0\n
          \n \\(316\\)\n \n 0\n \n 0\n
          \n \\(317\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n 0\n \n 0\n
          \n \\(319\\)\n \n 0\n \n 0\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(321\\)\n \n 0\n \n 0\n
          \n \\(322\\)\n \n 0\n \n 0\n
          \n \\(323\\)\n \n 0\n \n 0\n
          \n \\(324\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(325\\)\n \n 0\n \n 0\n
          \n \\(326\\)\n \n 0\n \n 0\n
          \n \\(327\\)\n \n 0\n \n 0\n
          \n \\(328\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(329\\)\n \n 0\n \n 0\n
          \n \\(330\\)\n \n 0\n \n 0\n
          \n \\(331\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n 0\n \n 0\n
          \n \\(333\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(334\\)\n \n 0\n \n 0\n
          \n \\(335\\)\n \n 0\n \n 0\n
          \n \\(336\\)\n \n 0\n \n 0\n
          \n \\(337\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(339\\)\n \n 0\n \n 0\n
          \n \\(340\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(341\\)\n \n 0\n \n 0\n
          \n \\(342\\)\n \n 0\n \n 0\n
          \n \\(343\\)\n \n 0\n \n 0\n
          \n \\(344\\)\n \n 0\n \n 0\n
          \n \\(345\\)\n \n 0\n \n 0\n
          \n \\(346\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(347\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n 0\n \n 0\n
          \n \\(349\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n 0\n \n 0\n
          \n \\(351\\)\n \n 0\n \n 0\n
          \n \\(352\\)\n \n 0\n \n 0\n
          \n \\(353\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n 0\n \n 0\n
          \n \\(355\\)\n \n 0\n \n 0\n
          \n \\(356\\)\n \n 0\n \n 0\n
          \n \\(357\\)\n \n 0\n \n 0\n
          \n \\(358\\)\n \n 0\n \n 0\n
          \n \\(359\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(361\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(362\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(363\\)\n \n 0\n \n 0\n
          \n \\(364\\)\n \n 0\n \n 0\n
          \n \\(365\\)\n \n 2.00000i\n 2.00000i
          \n \\(366\\)\n \n 0\n \n 0\n
          \n \\(367\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n 0\n \n 0\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(370\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(371\\)\n \n 0\n \n 0\n
          \n \\(372\\)\n \n 0\n \n 0\n
          \n \\(373\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n 0\n \n 0\n
          \n \\(375\\)\n \n 0\n \n 0\n
          \n \\(376\\)\n \n 0\n \n 0\n
          \n \\(377\\)\n \n 0\n \n 0\n
          \n \\(378\\)\n \n 0\n \n 0\n
          \n \\(379\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n 0\n \n 0\n
          \n \\(381\\)\n \n 0\n \n 0\n
          \n \\(382\\)\n \n 0\n \n 0\n
          \n \\(383\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n 0\n \n 0\n
          \n \\(385\\)\n \n 0\n \n 0\n
          \n \\(386\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(387\\)\n \n 0\n \n 0\n
          \n \\(388\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(389\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n 0\n \n 0\n
          \n \\(391\\)\n \n 0\n \n 0\n
          \n \\(392\\)\n \n 0\n \n 0\n
          \n \\(393\\)\n \n 0\n \n 0\n
          \n \\(394\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(395\\)\n \n 0\n \n 0\n
          \n \\(396\\)\n \n 0\n \n 0\n
          \n \\(397\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n 0\n \n 0\n
          \n \\(399\\)\n \n 0\n \n 0\n
          \n \\(400\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(401\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n 0\n \n 0\n
          \n \\(403\\)\n \n 0\n \n 0\n
          \n \\(404\\)\n \n 0\n \n 0\n
          \n \\(405\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(406\\)\n \n 0\n \n 0\n
          \n \\(407\\)\n \n 0\n \n 0\n
          \n \\(408\\)\n \n 0\n \n 0\n
          \n \\(409\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(411\\)\n \n 0\n \n 0\n
          \n \\(412\\)\n \n 0\n \n 0\n
          \n \\(413\\)\n \n 0\n \n 0\n
          \n \\(414\\)\n \n 0\n \n 0\n
          \n \\(415\\)\n \n 0\n \n 0\n
          \n \\(416\\)\n \n 0\n \n 0\n
          \n \\(417\\)\n \n 0\n \n 0\n
          \n \\(418\\)\n \n 0\n \n 0\n
          \n \\(419\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n 0\n \n 0\n
          \n \\(421\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n 0\n \n 0\n
          \n \\(423\\)\n \n 0\n \n 0\n
          \n \\(424\\)\n \n 0\n \n 0\n
          \n \\(425\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(426\\)\n \n 0\n \n 0\n
          \n \\(427\\)\n \n 0\n \n 0\n
          \n \\(428\\)\n \n 0\n \n 0\n
          \n \\(429\\)\n \n 0\n \n 0\n
          \n \\(430\\)\n \n 0\n \n 0\n
          \n \\(431\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n 0\n \n 0\n
          \n \\(433\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n 0\n \n 0\n
          \n \\(435\\)\n \n 0\n \n 0\n
          \n \\(436\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(437\\)\n \n 0\n \n 0\n
          \n \\(438\\)\n \n 0\n \n 0\n
          \n \\(439\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n 0\n \n 0\n
          \n \\(441\\)\n \n 0\n \n 0\n
          \n \\(442\\)\n \n 0\n \n 0\n
          \n \\(443\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n 0\n \n 0\n
          \n \\(445\\)\n \n 0\n \n 0\n
          \n \\(446\\)\n \n 0\n \n 0\n
          \n \\(447\\)\n \n 0\n \n 0\n
          \n \\(448\\)\n \n 0\n \n 0\n
          \n \\(449\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(451\\)\n \n 0\n \n 0\n
          \n \\(452\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(453\\)\n \n 0\n \n 0\n
          \n \\(454\\)\n \n 0\n \n 0\n
          \n \\(455\\)\n \n 0\n \n 0\n
          \n \\(456\\)\n \n 0\n \n 0\n
          \n \\(457\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(459\\)\n \n 0\n \n 0\n
          \n \\(460\\)\n \n 0\n \n 0\n
          \n \\(461\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n 0\n \n 0\n
          \n \\(463\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(465\\)\n \n 0\n \n 0\n
          \n \\(466\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(467\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n 0\n \n 0\n
          \n \\(469\\)\n \n 0\n \n 0\n
          \n \\(470\\)\n \n 0\n \n 0\n
          \n \\(471\\)\n \n 0\n \n 0\n
          \n \\(472\\)\n \n 0\n \n 0\n
          \n \\(473\\)\n \n 0\n \n 0\n
          \n \\(474\\)\n \n 0\n \n 0\n
          \n \\(475\\)\n \n 0\n \n 0\n
          \n \\(476\\)\n \n 0\n \n 0\n
          \n \\(477\\)\n \n 0\n \n 0\n
          \n \\(478\\)\n \n 0\n \n 0\n
          \n \\(479\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n 0\n \n 0\n
          \n \\(481\\)\n \n 0\n \n 0\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(483\\)\n \n 0\n \n 0\n
          \n \\(484\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(485\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(486\\)\n \n 0\n \n 0\n
          \n \\(487\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(489\\)\n \n 0\n \n 0\n
          \n \\(490\\)\n \n 0\n \n 0\n
          \n \\(491\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n 0\n \n 0\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(494\\)\n \n 0\n \n 0\n
          \n \\(495\\)\n \n 0\n \n 0\n
          \n \\(496\\)\n \n 0\n \n 0\n
          \n \\(497\\)\n \n 0\n \n 0\n
          \n \\(498\\)\n \n 0\n \n 0\n
          \n \\(499\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n 0\n \n 0\n
          \n \\(501\\)\n \n 0\n \n 0\n
          \n \\(502\\)\n \n 0\n \n 0\n
          \n \\(503\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n 0\n \n 0\n
          \n \\(505\\)\n \n 0\n \n 0\n
          \n \\(506\\)\n \n 0\n \n 0\n
          \n \\(507\\)\n \n 0\n \n 0\n
          \n \\(508\\)\n \n 0\n \n 0\n
          \n \\(509\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n 0\n \n 0\n
          \n \\(511\\)\n \n 0\n \n 0\n
          \n \\(512\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(513\\)\n \n 0\n \n 0\n
          \n \\(514\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(515\\)\n \n 0\n \n 0\n
          \n \\(516\\)\n \n 0\n \n 0\n
          \n \\(517\\)\n \n 0\n \n 0\n
          \n \\(518\\)\n \n 0\n \n 0\n
          \n \\(519\\)\n \n 0\n \n 0\n
          \n \\(520\\)\n \n 0\n \n 0\n
          \n \\(521\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(523\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n 0\n \n 0\n
          \n \\(525\\)\n \n 0\n \n 0\n
          \n \\(526\\)\n \n 0\n \n 0\n
          \n \\(527\\)\n \n 0\n \n 0\n
          \n \\(528\\)\n \n 0\n \n 0\n
          \n \\(529\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(530\\)\n \n 0\n \n 0\n
          \n \\(531\\)\n \n 0\n \n 0\n
          \n \\(532\\)\n \n 0\n \n 0\n
          \n \\(533\\)\n \n 0\n \n 0\n
          \n \\(534\\)\n \n 0\n \n 0\n
          \n \\(535\\)\n \n 0\n \n 0\n
          \n \\(536\\)\n \n 0\n \n 0\n
          \n \\(537\\)\n \n 0\n \n 0\n
          \n \\(538\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(539\\)\n \n 0\n \n 0\n
          \n \\(540\\)\n \n 0\n \n 0\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n 0\n \n 0\n
          \n \\(543\\)\n \n 0\n \n 0\n
          \n \\(544\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(545\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(546\\)\n \n 0\n \n 0\n
          \n \\(547\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n 0\n \n 0\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(550\\)\n \n 0\n \n 0\n
          \n \\(551\\)\n \n 0\n \n 0\n
          \n \\(552\\)\n \n 0\n \n 0\n
          \n \\(553\\)\n \n 0\n \n 0\n
          \n \\(554\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(555\\)\n \n 0\n \n 0\n
          \n \\(556\\)\n \n 0\n \n 0\n
          \n \\(557\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n 0\n \n 0\n
          \n \\(559\\)\n \n 0\n \n 0\n
          \n \\(560\\)\n \n 0\n \n 0\n
          \n \\(561\\)\n \n 0\n \n 0\n
          \n \\(562\\)\n \n 0\n \n 0\n
          \n \\(563\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n 0\n \n 0\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(566\\)\n \n 0\n \n 0\n
          \n \\(567\\)\n \n 0\n \n 0\n
          \n \\(568\\)\n \n 0\n \n 0\n
          \n \\(569\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n 0\n \n 0\n
          \n \\(571\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n 0\n \n 0\n
          \n \\(573\\)\n \n 0\n \n 0\n
          \n \\(574\\)\n \n 0\n \n 0\n
          \n \\(575\\)\n \n 0\n \n 0\n
          \n \\(576\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(577\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(579\\)\n \n 0\n \n 0\n
          \n \\(580\\)\n \n 2.00000i\n 2.00000i
          \n \\(581\\)\n \n 0\n \n 0\n
          \n \\(582\\)\n \n 0\n \n 0\n
          \n \\(583\\)\n \n 0\n \n 0\n
          \n \\(584\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(585\\)\n \n 0\n \n 0\n
          \n \\(586\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(587\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n 0\n \n 0\n
          \n \\(589\\)\n \n 0\n \n 0\n
          \n \\(590\\)\n \n 0\n \n 0\n
          \n \\(591\\)\n \n 0\n \n 0\n
          \n \\(592\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(593\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n 0\n \n 0\n
          \n \\(595\\)\n \n 0\n \n 0\n
          \n \\(596\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(597\\)\n \n 0\n \n 0\n
          \n \\(598\\)\n \n 0\n \n 0\n
          \n \\(599\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n 0\n \n 0\n
          \n \\(601\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n 0\n \n 0\n
          \n \\(603\\)\n \n 0\n \n 0\n
          \n \\(604\\)\n \n 0\n \n 0\n
          \n \\(605\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(606\\)\n \n 0\n \n 0\n
          \n \\(607\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n 0\n \n 0\n
          \n \\(609\\)\n \n 0\n \n 0\n
          \n \\(610\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(611\\)\n \n 0\n \n 0\n
          \n \\(612\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(613\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n 0\n \n 0\n
          \n \\(615\\)\n \n 0\n \n 0\n
          \n \\(616\\)\n \n 0\n \n 0\n
          \n \\(617\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n 0\n \n 0\n
          \n \\(619\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n 0\n \n 0\n
          \n \\(621\\)\n \n 0\n \n 0\n
          \n \\(622\\)\n \n 0\n \n 0\n
          \n \\(623\\)\n \n 0\n \n 0\n
          \n \\(624\\)\n \n 0\n \n 0\n
          \n \\(625\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(626\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(627\\)\n \n 0\n \n 0\n
          \n \\(628\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(629\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(630\\)\n \n 0\n \n 0\n
          \n \\(631\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n 0\n \n 0\n
          \n \\(633\\)\n \n 0\n \n 0\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(635\\)\n \n 0\n \n 0\n
          \n \\(636\\)\n \n 0\n \n 0\n
          \n \\(637\\)\n \n 0\n \n 0\n
          \n \\(638\\)\n \n 0\n \n 0\n
          \n \\(639\\)\n \n 0\n \n 0\n
          \n \\(640\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(641\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n 0\n \n 0\n
          \n \\(643\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n 0\n \n 0\n
          \n \\(645\\)\n \n 0\n \n 0\n
          \n \\(646\\)\n \n 0\n \n 0\n
          \n \\(647\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(649\\)\n \n 0\n \n 0\n
          \n \\(650\\)\n \n 0\n \n 0\n
          \n \\(651\\)\n \n 0\n \n 0\n
          \n \\(652\\)\n \n 0\n \n 0\n
          \n \\(653\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n 0\n \n 0\n
          \n \\(655\\)\n \n 0\n \n 0\n
          \n \\(656\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(658\\)\n \n 0\n \n 0\n
          \n \\(659\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n 0\n \n 0\n
          \n \\(661\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n 0\n \n 0\n
          \n \\(663\\)\n \n 0\n \n 0\n
          \n \\(664\\)\n \n 0\n \n 0\n
          \n \\(665\\)\n \n 0\n \n 0\n
          \n \\(666\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(667\\)\n \n 0\n \n 0\n
          \n \\(668\\)\n \n 0\n \n 0\n
          \n \\(669\\)\n \n 0\n \n 0\n
          \n \\(670\\)\n \n 0\n \n 0\n
          \n \\(671\\)\n \n 0\n \n 0\n
          \n \\(672\\)\n \n 0\n \n 0\n
          \n \\(673\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(675\\)\n \n 0\n \n 0\n
          \n \\(676\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n 0\n \n 0\n
          \n \\(679\\)\n \n 0\n \n 0\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(681\\)\n \n 0\n \n 0\n
          \n \\(682\\)\n \n 0\n \n 0\n
          \n \\(683\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n 0\n \n 0\n
          \n \\(685\\)\n \n 0\n \n 0\n
          \n \\(686\\)\n \n 0\n \n 0\n
          \n \\(687\\)\n \n 0\n \n 0\n
          \n \\(688\\)\n \n 0\n \n 0\n
          \n \\(689\\)\n \n 0\n \n 0\n
          \n \\(690\\)\n \n 0\n \n 0\n
          \n \\(691\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(693\\)\n \n 0\n \n 0\n
          \n \\(694\\)\n \n 0\n \n 0\n
          \n \\(695\\)\n \n 0\n \n 0\n
          \n \\(696\\)\n \n 0\n \n 0\n
          \n \\(697\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(698\\)\n \n 0\n \n 0\n
          \n \\(699\\)\n \n 0\n \n 0\n
          \n \\(700\\)\n \n 0\n \n 0\n
          \n \\(701\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n 0\n \n 0\n
          \n \\(703\\)\n \n 0\n \n 0\n
          \n \\(704\\)\n \n 0\n \n 0\n
          \n \\(705\\)\n \n 0\n \n 0\n
          \n \\(706\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(707\\)\n \n 0\n \n 0\n
          \n \\(708\\)\n \n 0\n \n 0\n
          \n \\(709\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n 0\n \n 0\n
          \n \\(711\\)\n \n 0\n \n 0\n
          \n \\(712\\)\n \n 0\n \n 0\n
          \n \\(713\\)\n \n 0\n \n 0\n
          \n \\(714\\)\n \n 0\n \n 0\n
          \n \\(715\\)\n \n 0\n \n 0\n
          \n \\(716\\)\n \n 0\n \n 0\n
          \n \\(717\\)\n \n 0\n \n 0\n
          \n \\(718\\)\n \n 0\n \n 0\n
          \n \\(719\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(721\\)\n \n 0\n \n 0\n
          \n \\(722\\)\n \n 1.00000i\n 1.00000i
          \n \\(723\\)\n \n 0\n \n 0\n
          \n \\(724\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(725\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(726\\)\n \n 0\n \n 0\n
          \n \\(727\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n 0\n \n 0\n
          \n \\(729\\)\n \n 1.00000i\n 1.00000i
          \n \\(730\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(731\\)\n \n 0\n \n 0\n
          \n \\(732\\)\n \n 0\n \n 0\n
          \n \\(733\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n 0\n \n 0\n
          \n \\(735\\)\n \n 0\n \n 0\n
          \n \\(736\\)\n \n 0\n \n 0\n
          \n \\(737\\)\n \n 0\n \n 0\n
          \n \\(738\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(739\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(741\\)\n \n 0\n \n 0\n
          \n \\(742\\)\n \n 0\n \n 0\n
          \n \\(743\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n 0\n \n 0\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n 0.732051\n \n +\n \n 2.73205i
          \n \\(746\\)\n \n 0\n \n 0\n
          \n \\(747\\)\n \n 0\n \n 0\n
          \n \\(748\\)\n \n 0\n \n 0\n
          \n \\(749\\)\n \n 0\n \n 0\n
          \n \\(750\\)\n \n 0\n \n 0\n
          \n \\(751\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n 0\n \n 0\n
          \n \\(753\\)\n \n 0\n \n 0\n
          \n \\(754\\)\n \n 0\n \n 0\n
          \n \\(755\\)\n \n 0\n \n 0\n
          \n \\(756\\)\n \n 0\n \n 0\n
          \n \\(757\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n 0\n \n 0\n
          \n \\(759\\)\n \n 0\n \n 0\n
          \n \\(760\\)\n \n 0\n \n 0\n
          \n \\(761\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n 0\n \n 0\n
          \n \\(763\\)\n \n 0\n \n 0\n
          \n \\(764\\)\n \n 0\n \n 0\n
          \n \\(765\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(766\\)\n \n 0\n \n 0\n
          \n \\(767\\)\n \n 0\n \n 0\n
          \n \\(768\\)\n \n 0\n \n 0\n
          \n \\(769\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n 0\n \n 0\n
          \n \\(771\\)\n \n 0\n \n 0\n
          \n \\(772\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(773\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n 0\n \n 0\n
          \n \\(775\\)\n \n 0\n \n 0\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(777\\)\n \n 0\n \n 0\n
          \n \\(778\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(779\\)\n \n 0\n \n 0\n
          \n \\(780\\)\n \n 0\n \n 0\n
          \n \\(781\\)\n \n 0\n \n 0\n
          \n \\(782\\)\n \n 0\n \n 0\n
          \n \\(783\\)\n \n 0\n \n 0\n
          \n \\(784\\)\n \n 0\n \n 0\n
          \n \\(785\\)\n \n \u22122.00000\n \n +\n \n 2.00000i\n \u22122.00000\n \n +\n \n 2.00000i
          \n \\(786\\)\n \n 0\n \n 0\n
          \n \\(787\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(789\\)\n \n 0\n \n 0\n
          \n \\(790\\)\n \n 0\n \n 0\n
          \n \\(791\\)\n \n 0\n \n 0\n
          \n \\(792\\)\n \n 0\n \n 0\n
          \n \\(793\\)\n \n 0\n \n 0\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(795\\)\n \n 0\n \n 0\n
          \n \\(796\\)\n \n 0\n \n 0\n
          \n \\(797\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n 0\n \n 0\n
          \n \\(799\\)\n \n 0\n \n 0\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(801\\)\n \n 0\n \n 0\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(803\\)\n \n 0\n \n 0\n
          \n \\(804\\)\n \n 0\n \n 0\n
          \n \\(805\\)\n \n 0\n \n 0\n
          \n \\(806\\)\n \n 0\n \n 0\n
          \n \\(807\\)\n \n 0\n \n 0\n
          \n \\(808\\)\n \n 0\n \n 0\n
          \n \\(809\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(811\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n 0\n \n 0\n
          \n \\(813\\)\n \n 0\n \n 0\n
          \n \\(814\\)\n \n 0\n \n 0\n
          \n \\(815\\)\n \n 0\n \n 0\n
          \n \\(816\\)\n \n 0\n \n 0\n
          \n \\(817\\)\n \n 0\n \n 0\n
          \n \\(818\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(819\\)\n \n 0\n \n 0\n
          \n \\(820\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(821\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n 0\n \n 0\n
          \n \\(823\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n 0\n \n 0\n
          \n \\(825\\)\n \n 0\n \n 0\n
          \n \\(826\\)\n \n 0\n \n 0\n
          \n \\(827\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n 0\n \n 0\n
          \n \\(829\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n 0\n \n 0\n
          \n \\(831\\)\n \n 0\n \n 0\n
          \n \\(832\\)\n \n 0\n \n 0\n
          \n \\(833\\)\n \n 0\n \n 0\n
          \n \\(834\\)\n \n 0\n \n 0\n
          \n \\(835\\)\n \n 0\n \n 0\n
          \n \\(836\\)\n \n 0\n \n 0\n
          \n \\(837\\)\n \n 0\n \n 0\n
          \n \\(838\\)\n \n 0\n \n 0\n
          \n \\(839\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n 0\n \n 0\n
          \n \\(841\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(842\\)\n \n 0\n \n 0\n
          \n \\(843\\)\n \n 0\n \n 0\n
          \n \\(844\\)\n \n 0\n \n 0\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(846\\)\n \n 0\n \n 0\n
          \n \\(847\\)\n \n 0\n \n 0\n
          \n \\(848\\)\n \n 0\n \n 0\n
          \n \\(849\\)\n \n 0\n \n 0\n
          \n \\(850\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(851\\)\n \n 0\n \n 0\n
          \n \\(852\\)\n \n 0\n \n 0\n
          \n \\(853\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(854\\)\n \n 0\n \n 0\n
          \n \\(855\\)\n \n 0\n \n 0\n
          \n \\(856\\)\n \n 0\n \n 0\n
          \n \\(857\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n 0\n \n 0\n
          \n \\(859\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n 0\n \n 0\n
          \n \\(861\\)\n \n 0\n \n 0\n
          \n \\(862\\)\n \n 0\n \n 0\n
          \n \\(863\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n 0\n \n 0\n
          \n \\(865\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(866\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(867\\)\n \n 0\n \n 0\n
          \n \\(868\\)\n \n 0\n \n 0\n
          \n \\(869\\)\n \n 0\n \n 0\n
          \n \\(870\\)\n \n 0\n \n 0\n
          \n \\(871\\)\n \n 0\n \n 0\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(873\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(874\\)\n \n 0\n \n 0\n
          \n \\(875\\)\n \n 0\n \n 0\n
          \n \\(876\\)\n \n 0\n \n 0\n
          \n \\(877\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n 0\n \n 0\n
          \n \\(879\\)\n \n 0\n \n 0\n
          \n \\(880\\)\n \n 0\n \n 0\n
          \n \\(881\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n 0\n \n 0\n
          \n \\(883\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n 0\n \n 0\n
          \n \\(885\\)\n \n 0\n \n 0\n
          \n \\(886\\)\n \n 0\n \n 0\n
          \n \\(887\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n 0\n \n 0\n
          \n \\(889\\)\n \n 0\n \n 0\n
          \n \\(890\\)\n \n 0\n \n 0\n
          \n \\(891\\)\n \n 0\n \n 0\n
          \n \\(892\\)\n \n 0\n \n 0\n
          \n \\(893\\)\n \n 0\n \n 0\n
          \n \\(894\\)\n \n 0\n \n 0\n
          \n \\(895\\)\n \n 0\n \n 0\n
          \n \\(896\\)\n \n 0\n \n 0\n
          \n \\(897\\)\n \n 0\n \n 0\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(899\\)\n \n 0\n \n 0\n
          \n \\(900\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(901\\)\n \n 0\n \n 0\n
          \n \\(902\\)\n \n 0\n \n 0\n
          \n \\(903\\)\n \n 0\n \n 0\n
          \n \\(904\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(905\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(906\\)\n \n 0\n \n 0\n
          \n \\(907\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n 0\n \n 0\n
          \n \\(909\\)\n \n 0\n \n 0\n
          \n \\(910\\)\n \n 0\n \n 0\n
          \n \\(911\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n 0\n \n 0\n
          \n \\(913\\)\n \n 0\n \n 0\n
          \n \\(914\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(915\\)\n \n 0\n \n 0\n
          \n \\(916\\)\n \n 2.00000i\n 2.00000i
          \n \\(917\\)\n \n 0\n \n 0\n
          \n \\(918\\)\n \n 0\n \n 0\n
          \n \\(919\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n 0\n \n 0\n
          \n \\(921\\)\n \n 0\n \n 0\n
          \n \\(922\\)\n \n 0\n \n 0\n
          \n \\(923\\)\n \n 0\n \n 0\n
          \n \\(924\\)\n \n 0\n \n 0\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(926\\)\n \n 0\n \n 0\n
          \n \\(927\\)\n \n 0\n \n 0\n
          \n \\(928\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(929\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n 0\n \n 0\n
          \n \\(931\\)\n \n 0\n \n 0\n
          \n \\(932\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(933\\)\n \n 0\n \n 0\n
          \n \\(934\\)\n \n 0\n \n 0\n
          \n \\(935\\)\n \n 0\n \n 0\n
          \n \\(936\\)\n \n 0\n \n 0\n
          \n \\(937\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n 0\n \n 0\n
          \n \\(939\\)\n \n 0\n \n 0\n
          \n \\(940\\)\n \n 0\n \n 0\n
          \n \\(941\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n 0\n \n 0\n
          \n \\(943\\)\n \n 0\n \n 0\n
          \n \\(944\\)\n \n 0\n \n 0\n
          \n \\(945\\)\n \n 0\n \n 0\n
          \n \\(946\\)\n \n 0\n \n 0\n
          \n \\(947\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n 0\n \n 0\n
          \n \\(949\\)\n \n 0\n \n 0\n
          \n \\(950\\)\n \n 0\n \n 0\n
          \n \\(951\\)\n \n 0\n \n 0\n
          \n \\(952\\)\n \n 0\n \n 0\n
          \n \\(953\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n 0\n \n 0\n
          \n \\(955\\)\n \n 0\n \n 0\n
          \n \\(956\\)\n \n 0\n \n 0\n
          \n \\(957\\)\n \n 0\n \n 0\n
          \n \\(958\\)\n \n 0\n \n 0\n
          \n \\(959\\)\n \n 0\n \n 0\n
          \n \\(960\\)\n \n 0\n \n 0\n
          \n \\(961\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(962\\)\n \n 0\n \n 0\n
          \n \\(963\\)\n \n 0\n \n 0\n
          \n \\(964\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(965\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(966\\)\n \n 0\n \n 0\n
          \n \\(967\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(969\\)\n \n 0\n \n 0\n
          \n \\(970\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(971\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n 0\n \n 0\n
          \n \\(973\\)\n \n 0\n \n 0\n
          \n \\(974\\)\n \n 0\n \n 0\n
          \n \\(975\\)\n \n 0\n \n 0\n
          \n \\(976\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(977\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n 0\n \n 0\n
          \n \\(979\\)\n \n 0\n \n 0\n
          \n \\(980\\)\n \n 0\n \n 0\n
          \n \\(981\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(982\\)\n \n 0\n \n 0\n
          \n \\(983\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n 0\n \n 0\n
          \n \\(985\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(986\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(987\\)\n \n 0\n \n 0\n
          \n \\(988\\)\n \n 0\n \n 0\n
          \n \\(989\\)\n \n 0\n \n 0\n
          \n \\(990\\)\n \n 0\n \n 0\n
          \n \\(991\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n 0\n \n 0\n
          \n \\(993\\)\n \n 0\n \n 0\n
          \n \\(994\\)\n \n 0\n \n 0\n
          \n \\(995\\)\n \n 0\n \n 0\n
          \n \\(996\\)\n \n 0\n \n 0\n
          \n \\(997\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n 0\n \n 0\n
          \n \\(999\\)\n \n 0\n \n 0\n
          ", "content": {"html": "
          \\(n\\)\\(a_n\\)\\(a_n / n^{(k-1)/2}\\)\\( \\alpha_n \\)\\( \\theta_n \\)
          \\(p\\)\\(a_p\\)\\(a_p / p^{(k-1)/2}\\)\\( \\alpha_p\\)\\( \\theta_p \\)
          \\(2\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(3\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(4\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(5\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(6\\)00
          \\(7\\)00
          \\(8\\)1.00000<br>i1.00000<br>i
          \\(9\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(10\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(11\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(12\\)00
          \\(13\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(14\\)00
          \\(15\\)00
          \\(16\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(17\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(18\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(19\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(20\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(21\\)00
          \\(22\\)00
          \\(23\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(24\\)00
          \\(25\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(26\\)00
          \\(27\\)00
          \\(28\\)00
          \\(29\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(30\\)00
          \\(31\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(32\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(33\\)00
          \\(34\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(35\\)00
          \\(36\\)1.00000<br>i1.00000<br>i
          \\(37\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(38\\)00
          \\(39\\)00
          \\(40\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(41\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(42\\)00
          \\(43\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(44\\)00
          \\(45\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(46\\)00
          \\(47\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(48\\)00
          \\(49\\)00
          \\(50\\)\u22121.00000\u22121.00000
          \\(51\\)00
          \\(52\\)00
          \\(53\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(54\\)00
          \\(55\\)00
          \\(56\\)00
          \\(57\\)00
          \\(58\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(59\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(60\\)00
          \\(61\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(62\\)00
          \\(63\\)00
          \\(64\\)\u22121.00000\u22121.00000
          \\(65\\)00
          \\(66\\)00
          \\(67\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(68\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(69\\)00
          \\(70\\)00
          \\(71\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(72\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(73\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(74\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(75\\)00
          \\(76\\)00
          \\(77\\)00
          \\(78\\)00
          \\(79\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(80\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(81\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(82\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(83\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(84\\)00
          \\(85\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(86\\)00
          \\(87\\)00
          \\(88\\)00
          \\(89\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(90\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(91\\)00
          \\(92\\)00
          \\(93\\)00
          \\(94\\)00
          \\(95\\)00
          \\(96\\)00
          \\(97\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(98\\)00
          \\(99\\)00
          \\(100\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(101\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(102\\)00
          \\(103\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(104\\)00
          \\(105\\)00
          \\(106\\)00
          \\(107\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(108\\)00
          \\(109\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(110\\)00
          \\(111\\)00
          \\(112\\)00
          \\(113\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(114\\)00
          \\(115\\)00
          \\(116\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(117\\)00
          \\(118\\)00
          \\(119\\)00
          \\(120\\)00
          \\(121\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(122\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(123\\)00
          \\(124\\)00
          \\(125\\)00
          \\(126\\)00
          \\(127\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(128\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(129\\)00
          \\(130\\)00
          \\(131\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(132\\)00
          \\(133\\)00
          \\(134\\)00
          \\(135\\)00
          \\(136\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(137\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(138\\)00
          \\(139\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(140\\)00
          \\(141\\)00
          \\(142\\)00
          \\(143\\)00
          \\(144\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(145\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(146\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(147\\)00
          \\(148\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(149\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(150\\)00
          \\(151\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(152\\)00
          \\(153\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(154\\)00
          \\(155\\)00
          \\(156\\)00
          \\(157\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(158\\)00
          \\(159\\)00
          \\(160\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(161\\)00
          \\(162\\)1.00000<br>i1.00000<br>i
          \\(163\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(164\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(165\\)00
          \\(166\\)00
          \\(167\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(168\\)00
          \\(169\\)\u22121.00000\u22121.00000
          \\(170\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(171\\)00
          \\(172\\)00
          \\(173\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(174\\)00
          \\(175\\)00
          \\(176\\)00
          \\(177\\)00
          \\(178\\)00
          \\(179\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(180\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(181\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(182\\)00
          \\(183\\)00
          \\(184\\)00
          \\(185\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(186\\)00
          \\(187\\)00
          \\(188\\)00
          \\(189\\)00
          \\(190\\)00
          \\(191\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(192\\)00
          \\(193\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(194\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(195\\)00
          \\(196\\)00
          \\(197\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(198\\)00
          \\(199\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(200\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(201\\)00
          \\(202\\)00
          \\(203\\)00
          \\(204\\)00
          \\(205\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(206\\)00
          \\(207\\)00
          \\(208\\)00
          \\(209\\)00
          \\(210\\)00
          \\(211\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(212\\)00
          \\(213\\)00
          \\(214\\)00
          \\(215\\)00
          \\(216\\)00
          \\(217\\)00
          \\(218\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(219\\)00
          \\(220\\)00
          \\(221\\)00
          \\(222\\)00
          \\(223\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(224\\)00
          \\(225\\)\u22121.00000\u22121.00000
          \\(226\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(227\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(228\\)00
          \\(229\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(230\\)00
          \\(231\\)00
          \\(232\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(233\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(234\\)00
          \\(235\\)00
          \\(236\\)00
          \\(237\\)00
          \\(238\\)00
          \\(239\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(240\\)00
          \\(241\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(242\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(243\\)00
          \\(244\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(245\\)00
          \\(246\\)00
          \\(247\\)00
          \\(248\\)00
          \\(249\\)00
          \\(250\\)00
          \\(251\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(252\\)00
          \\(253\\)00
          \\(254\\)00
          \\(255\\)00
          \\(256\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(257\\)1.73205\u22121.00000<br>i1.73205\u22121.00000<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(258\\)00
          \\(259\\)00
          \\(260\\)00
          \\(261\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(262\\)00
          \\(263\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(264\\)00
          \\(265\\)00
          \\(266\\)00
          \\(267\\)00
          \\(268\\)00
          \\(269\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(270\\)00
          \\(271\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(272\\)1.000001.00000
          \\(273\\)00
          \\(274\\)00
          \\(275\\)00
          \\(276\\)00
          \\(277\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(278\\)00
          \\(279\\)00
          \\(280\\)00
          \\(281\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(282\\)00
          \\(283\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(284\\)00
          \\(285\\)00
          \\(286\\)00
          \\(287\\)00
          \\(288\\)\u22121.00000\u22121.00000
          \\(289\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(290\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(291\\)00
          \\(292\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(293\\)2.000002.000001.00000\\(0\\)
          1.00000\\(0\\)
          \\(294\\)00
          \\(295\\)00
          \\(296\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(297\\)00
          \\(298\\)1.73205+1.00000<br>i1.73205+1.00000<br>i
          \\(299\\)00
          \\(300\\)00
          \\(301\\)00
          \\(302\\)00
          \\(303\\)00
          \\(304\\)00
          \\(305\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(306\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(307\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(308\\)00
          \\(309\\)00
          \\(310\\)00
          \\(311\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(312\\)00
          \\(313\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(314\\)2.00000<br>i2.00000<br>i
          \\(315\\)00
          \\(316\\)00
          \\(317\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(318\\)00
          \\(319\\)00
          \\(320\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(321\\)00
          \\(322\\)00
          \\(323\\)00
          \\(324\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(325\\)00
          \\(326\\)00
          \\(327\\)00
          \\(328\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(329\\)00
          \\(330\\)00
          \\(331\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(332\\)00
          \\(333\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(334\\)00
          \\(335\\)00
          \\(336\\)00
          \\(337\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(338\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(339\\)00
          \\(340\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(341\\)00
          \\(342\\)00
          \\(343\\)00
          \\(344\\)00
          \\(345\\)00
          \\(346\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(347\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(348\\)00
          \\(349\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(350\\)00
          \\(351\\)00
          \\(352\\)00
          \\(353\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(354\\)00
          \\(355\\)00
          \\(356\\)00
          \\(357\\)00
          \\(358\\)00
          \\(359\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(360\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(361\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(362\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(363\\)00
          \\(364\\)00
          \\(365\\)2.00000<br>i2.00000<br>i
          \\(366\\)00
          \\(367\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(368\\)00
          \\(369\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(370\\)2.000002.00000
          \\(371\\)00
          \\(372\\)00
          \\(373\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(374\\)00
          \\(375\\)00
          \\(376\\)00
          \\(377\\)00
          \\(378\\)00
          \\(379\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(380\\)00
          \\(381\\)00
          \\(382\\)00
          \\(383\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(384\\)00
          \\(385\\)00
          \\(386\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(387\\)00
          \\(388\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(389\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(390\\)00
          \\(391\\)00
          \\(392\\)00
          \\(393\\)00
          \\(394\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(395\\)00
          \\(396\\)00
          \\(397\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(398\\)00
          \\(399\\)00
          \\(400\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(401\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(402\\)00
          \\(403\\)00
          \\(404\\)00
          \\(405\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(406\\)00
          \\(407\\)00
          \\(408\\)00
          \\(409\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(410\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(411\\)00
          \\(412\\)00
          \\(413\\)00
          \\(414\\)00
          \\(415\\)00
          \\(416\\)00
          \\(417\\)00
          \\(418\\)00
          \\(419\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(420\\)00
          \\(421\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(422\\)00
          \\(423\\)00
          \\(424\\)00
          \\(425\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(426\\)00
          \\(427\\)00
          \\(428\\)00
          \\(429\\)00
          \\(430\\)00
          \\(431\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(432\\)00
          \\(433\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(434\\)00
          \\(435\\)00
          \\(436\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(437\\)00
          \\(438\\)00
          \\(439\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(440\\)00
          \\(441\\)00
          \\(442\\)00
          \\(443\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(444\\)00
          \\(445\\)00
          \\(446\\)00
          \\(447\\)00
          \\(448\\)00
          \\(449\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(450\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(451\\)00
          \\(452\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(453\\)00
          \\(454\\)00
          \\(455\\)00
          \\(456\\)00
          \\(457\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(458\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(459\\)00
          \\(460\\)00
          \\(461\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(462\\)00
          \\(463\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(464\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(465\\)00
          \\(466\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(467\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(468\\)00
          \\(469\\)00
          \\(470\\)00
          \\(471\\)00
          \\(472\\)00
          \\(473\\)00
          \\(474\\)00
          \\(475\\)00
          \\(476\\)00
          \\(477\\)00
          \\(478\\)00
          \\(479\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(480\\)00
          \\(481\\)00
          \\(482\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(483\\)00
          \\(484\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(485\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(486\\)00
          \\(487\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(488\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(489\\)00
          \\(490\\)00
          \\(491\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(492\\)00
          \\(493\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(494\\)00
          \\(495\\)00
          \\(496\\)00
          \\(497\\)00
          \\(498\\)00
          \\(499\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(500\\)00
          \\(501\\)00
          \\(502\\)00
          \\(503\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(504\\)00
          \\(505\\)00
          \\(506\\)00
          \\(507\\)00
          \\(508\\)00
          \\(509\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(510\\)00
          \\(511\\)00
          \\(512\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(513\\)00
          \\(514\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(515\\)00
          \\(516\\)00
          \\(517\\)00
          \\(518\\)00
          \\(519\\)00
          \\(520\\)00
          \\(521\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(522\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(523\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(524\\)00
          \\(525\\)00
          \\(526\\)00
          \\(527\\)00
          \\(528\\)00
          \\(529\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(530\\)00
          \\(531\\)00
          \\(532\\)00
          \\(533\\)00
          \\(534\\)00
          \\(535\\)00
          \\(536\\)00
          \\(537\\)00
          \\(538\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(539\\)00
          \\(540\\)00
          \\(541\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(542\\)00
          \\(543\\)00
          \\(544\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(545\\)\u22122.00000\u22122.00000
          \\(546\\)00
          \\(547\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(548\\)00
          \\(549\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(550\\)00
          \\(551\\)00
          \\(552\\)00
          \\(553\\)00
          \\(554\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(555\\)00
          \\(556\\)00
          \\(557\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(558\\)00
          \\(559\\)00
          \\(560\\)00
          \\(561\\)00
          \\(562\\)00
          \\(563\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(564\\)00
          \\(565\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(566\\)00
          \\(567\\)00
          \\(568\\)00
          \\(569\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(570\\)00
          \\(571\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(572\\)00
          \\(573\\)00
          \\(574\\)00
          \\(575\\)00
          \\(576\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(577\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(578\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(579\\)00
          \\(580\\)2.00000<br>i2.00000<br>i
          \\(581\\)00
          \\(582\\)00
          \\(583\\)00
          \\(584\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(585\\)00
          \\(586\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(587\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(588\\)00
          \\(589\\)00
          \\(590\\)00
          \\(591\\)00
          \\(592\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(593\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(594\\)00
          \\(595\\)00
          \\(596\\)\u22122.00000\u22122.00000
          \\(597\\)00
          \\(598\\)00
          \\(599\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(600\\)00
          \\(601\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(602\\)00
          \\(603\\)00
          \\(604\\)00
          \\(605\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(606\\)00
          \\(607\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(608\\)00
          \\(609\\)00
          \\(610\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(611\\)00
          \\(612\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(613\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(614\\)00
          \\(615\\)00
          \\(616\\)00
          \\(617\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(618\\)00
          \\(619\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(620\\)00
          \\(621\\)00
          \\(622\\)00
          \\(623\\)00
          \\(624\\)00
          \\(625\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(626\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(627\\)00
          \\(628\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(629\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(630\\)00
          \\(631\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(632\\)00
          \\(633\\)00
          \\(634\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(635\\)00
          \\(636\\)00
          \\(637\\)00
          \\(638\\)00
          \\(639\\)00
          \\(640\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(641\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(642\\)00
          \\(643\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(644\\)00
          \\(645\\)00
          \\(646\\)00
          \\(647\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(648\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(649\\)00
          \\(650\\)00
          \\(651\\)00
          \\(652\\)00
          \\(653\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(654\\)00
          \\(655\\)00
          \\(656\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(657\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(658\\)00
          \\(659\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(660\\)00
          \\(661\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(662\\)00
          \\(663\\)00
          \\(664\\)00
          \\(665\\)00
          \\(666\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(667\\)00
          \\(668\\)00
          \\(669\\)00
          \\(670\\)00
          \\(671\\)00
          \\(672\\)00
          \\(673\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(674\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(675\\)00
          \\(676\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(677\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(678\\)00
          \\(679\\)00
          \\(680\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(681\\)00
          \\(682\\)00
          \\(683\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(684\\)00
          \\(685\\)00
          \\(686\\)00
          \\(687\\)00
          \\(688\\)00
          \\(689\\)00
          \\(690\\)00
          \\(691\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(692\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(693\\)00
          \\(694\\)00
          \\(695\\)00
          \\(696\\)00
          \\(697\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(698\\)00
          \\(699\\)00
          \\(700\\)00
          \\(701\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(702\\)00
          \\(703\\)00
          \\(704\\)00
          \\(705\\)00
          \\(706\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(707\\)00
          \\(708\\)00
          \\(709\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(710\\)00
          \\(711\\)00
          \\(712\\)00
          \\(713\\)00
          \\(714\\)00
          \\(715\\)00
          \\(716\\)00
          \\(717\\)00
          \\(718\\)00
          \\(719\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(720\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(721\\)00
          \\(722\\)1.00000<br>i1.00000<br>i
          \\(723\\)00
          \\(724\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(725\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(726\\)00
          \\(727\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(728\\)00
          \\(729\\)1.00000<br>i1.00000<br>i
          \\(730\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(731\\)00
          \\(732\\)00
          \\(733\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(734\\)00
          \\(735\\)00
          \\(736\\)00
          \\(737\\)00
          \\(738\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(739\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(740\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(741\\)00
          \\(742\\)00
          \\(743\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(744\\)00
          \\(745\\)0.732051+2.73205<br>i0.732051+2.73205<br>i
          \\(746\\)00
          \\(747\\)00
          \\(748\\)00
          \\(749\\)00
          \\(750\\)00
          \\(751\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(752\\)00
          \\(753\\)00
          \\(754\\)00
          \\(755\\)00
          \\(756\\)00
          \\(757\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(758\\)00
          \\(759\\)00
          \\(760\\)00
          \\(761\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(762\\)00
          \\(763\\)00
          \\(764\\)00
          \\(765\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(766\\)00
          \\(767\\)00
          \\(768\\)00
          \\(769\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(770\\)00
          \\(771\\)00
          \\(772\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(773\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(774\\)00
          \\(775\\)00
          \\(776\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(777\\)00
          \\(778\\)2.000002.00000
          \\(779\\)00
          \\(780\\)00
          \\(781\\)00
          \\(782\\)00
          \\(783\\)00
          \\(784\\)00
          \\(785\\)\u22122.00000+2.00000<br>i\u22122.00000+2.00000<br>i
          \\(786\\)00
          \\(787\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(788\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(789\\)00
          \\(790\\)00
          \\(791\\)00
          \\(792\\)00
          \\(793\\)00
          \\(794\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(795\\)00
          \\(796\\)00
          \\(797\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(798\\)00
          \\(799\\)00
          \\(800\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(801\\)00
          \\(802\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(803\\)00
          \\(804\\)00
          \\(805\\)00
          \\(806\\)00
          \\(807\\)00
          \\(808\\)00
          \\(809\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(810\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(811\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(812\\)00
          \\(813\\)00
          \\(814\\)00
          \\(815\\)00
          \\(816\\)00
          \\(817\\)00
          \\(818\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(819\\)00
          \\(820\\)2.000002.00000
          \\(821\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(822\\)00
          \\(823\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(824\\)00
          \\(825\\)00
          \\(826\\)00
          \\(827\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(828\\)00
          \\(829\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(830\\)00
          \\(831\\)00
          \\(832\\)00
          \\(833\\)00
          \\(834\\)00
          \\(835\\)00
          \\(836\\)00
          \\(837\\)00
          \\(838\\)00
          \\(839\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(840\\)00
          \\(841\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(842\\)00
          \\(843\\)00
          \\(844\\)00
          \\(845\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(846\\)00
          \\(847\\)00
          \\(848\\)00
          \\(849\\)00
          \\(850\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(851\\)00
          \\(852\\)00
          \\(853\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(854\\)00
          \\(855\\)00
          \\(856\\)00
          \\(857\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(858\\)00
          \\(859\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(860\\)00
          \\(861\\)00
          \\(862\\)00
          \\(863\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(864\\)00
          \\(865\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(866\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(867\\)00
          \\(868\\)00
          \\(869\\)00
          \\(870\\)00
          \\(871\\)00
          \\(872\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(873\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(874\\)00
          \\(875\\)00
          \\(876\\)00
          \\(877\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(878\\)00
          \\(879\\)00
          \\(880\\)00
          \\(881\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(882\\)00
          \\(883\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(884\\)00
          \\(885\\)00
          \\(886\\)00
          \\(887\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(888\\)00
          \\(889\\)00
          \\(890\\)00
          \\(891\\)00
          \\(892\\)00
          \\(893\\)00
          \\(894\\)00
          \\(895\\)00
          \\(896\\)00
          \\(897\\)00
          \\(898\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(899\\)00
          \\(900\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(901\\)00
          \\(902\\)00
          \\(903\\)00
          \\(904\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(905\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(906\\)00
          \\(907\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(908\\)00
          \\(909\\)00
          \\(910\\)00
          \\(911\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(912\\)00
          \\(913\\)00
          \\(914\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(915\\)00
          \\(916\\)2.00000<br>i2.00000<br>i
          \\(917\\)00
          \\(918\\)00
          \\(919\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(920\\)00
          \\(921\\)00
          \\(922\\)00
          \\(923\\)00
          \\(924\\)00
          \\(925\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(926\\)00
          \\(927\\)00
          \\(928\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(929\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(930\\)00
          \\(931\\)00
          \\(932\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(933\\)00
          \\(934\\)00
          \\(935\\)00
          \\(936\\)00
          \\(937\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(938\\)00
          \\(939\\)00
          \\(940\\)00
          \\(941\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(942\\)00
          \\(943\\)00
          \\(944\\)00
          \\(945\\)00
          \\(946\\)00
          \\(947\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(948\\)00
          \\(949\\)00
          \\(950\\)00
          \\(951\\)00
          \\(952\\)00
          \\(953\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(954\\)00
          \\(955\\)00
          \\(956\\)00
          \\(957\\)00
          \\(958\\)00
          \\(959\\)00
          \\(960\\)00
          \\(961\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(962\\)00
          \\(963\\)00
          \\(964\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(965\\)2.000002.00000
          \\(966\\)00
          \\(967\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(968\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(969\\)00
          \\(970\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(971\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(972\\)00
          \\(973\\)00
          \\(974\\)00
          \\(975\\)00
          \\(976\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(977\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(978\\)00
          \\(979\\)00
          \\(980\\)00
          \\(981\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(982\\)00
          \\(983\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(984\\)00
          \\(985\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(986\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(987\\)00
          \\(988\\)00
          \\(989\\)00
          \\(990\\)00
          \\(991\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(992\\)00
          \\(993\\)00
          \\(994\\)00
          \\(995\\)00
          \\(996\\)00
          \\(997\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(998\\)00
          \\(999\\)00
          ", "is_complex": true, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See \\(a_n\\) instead)", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "( See only \\(a_p\\))", "t": "text"}]}, {"type": "table", "raw_content": "
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          ", "content": {"html": "
          By<br>twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          ", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "content": {"html": "
          By<br>twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "is_complex": true, "table_nest_level": "1"}}]], "main_html": "
          \n Show commands:\n Magma\n / PariGP\n / SageMath
          [N,k,chi] = [3332,1,Mod(667,3332)]
          mf = mfinit([N,k,chi],0)
          lf = mfeigenbasis(mf)
          from sage.modular.dirichlet import DirichletCharacter
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
          N = Newforms(chi, 1, names=\"a\")
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
          chi := DirichletCharacter(\"3332.667\");
          S:= CuspForms(chi, 1);
          N := Newforms(S);
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\)3332.bc (of order \\(12\\), degree \\(4\\), not minimal)

          Newform invariants

          sage:\u00a0f = N[0] # Warning: the index may be different
          gp:\u00a0f = lf[1] \\\\ Warning: the index may be different
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial: \\( x^{4} - x^{2} + 1 \\)\"Copy\"Toggle
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)

          Embedding invariants

          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form3332.1.bc.b.863.1
          sage:\u00a0f.q_expansion() # note that sage often uses an isomorphic number field
          gp:\u00a0mfcoefs(f, 20)
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\"Copy\"Toggle

          Character values

          We give the values of \\chi on generators for \\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times.

          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)

          Coefficient data

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(3\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(5\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n 0\n \n 0\n
          \n \\(7\\)\n \n 0\n \n 0\n
          \n \\(8\\)\n \n 1.00000i\n 1.00000i
          \n \\(9\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(10\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(11\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n 0\n \n 0\n
          \n \\(13\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n 0\n \n 0\n
          \n \\(15\\)\n \n 0\n \n 0\n
          \n \\(16\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(17\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(18\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(19\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(21\\)\n \n 0\n \n 0\n
          \n \\(22\\)\n \n 0\n \n 0\n
          \n \\(23\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n 0\n \n 0\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(26\\)\n \n 0\n \n 0\n
          \n \\(27\\)\n \n 0\n \n 0\n
          \n \\(28\\)\n \n 0\n \n 0\n
          \n \\(29\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(30\\)\n \n 0\n \n 0\n
          \n \\(31\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(33\\)\n \n 0\n \n 0\n
          \n \\(34\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(35\\)\n \n 0\n \n 0\n
          \n \\(36\\)\n \n 1.00000i\n 1.00000i
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n 0\n \n 0\n
          \n \\(39\\)\n \n 0\n \n 0\n
          \n \\(40\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(41\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n 0\n \n 0\n
          \n \\(43\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n 0\n \n 0\n
          \n \\(45\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(46\\)\n \n 0\n \n 0\n
          \n \\(47\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n 0\n \n 0\n
          \n \\(49\\)\n \n 0\n \n 0\n
          \n \\(50\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(51\\)\n \n 0\n \n 0\n
          \n \\(52\\)\n \n 0\n \n 0\n
          \n \\(53\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n 0\n \n 0\n
          \n \\(55\\)\n \n 0\n \n 0\n
          \n \\(56\\)\n \n 0\n \n 0\n
          \n \\(57\\)\n \n 0\n \n 0\n
          \n \\(58\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(59\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n 0\n \n 0\n
          \n \\(61\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n 0\n \n 0\n
          \n \\(63\\)\n \n 0\n \n 0\n
          \n \\(64\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(65\\)\n \n 0\n \n 0\n
          \n \\(66\\)\n \n 0\n \n 0\n
          \n \\(67\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(69\\)\n \n 0\n \n 0\n
          \n \\(70\\)\n \n 0\n \n 0\n
          \n \\(71\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(73\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(75\\)\n \n 0\n \n 0\n
          \n \\(76\\)\n \n 0\n \n 0\n
          \n \\(77\\)\n \n 0\n \n 0\n
          \n \\(78\\)\n \n 0\n \n 0\n
          \n \\(79\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(81\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(83\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n 0\n \n 0\n
          \n \\(85\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(86\\)\n \n 0\n \n 0\n
          \n \\(87\\)\n \n 0\n \n 0\n
          \n \\(88\\)\n \n 0\n \n 0\n
          \n \\(89\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(91\\)\n \n 0\n \n 0\n
          \n \\(92\\)\n \n 0\n \n 0\n
          \n \\(93\\)\n \n 0\n \n 0\n
          \n \\(94\\)\n \n 0\n \n 0\n
          \n \\(95\\)\n \n 0\n \n 0\n
          \n \\(96\\)\n \n 0\n \n 0\n
          \n \\(97\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(98\\)\n \n 0\n \n 0\n
          \n \\(99\\)\n \n 0\n \n 0\n
          \n \\(100\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(101\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n 0\n \n 0\n
          \n \\(103\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n 0\n \n 0\n
          \n \\(105\\)\n \n 0\n \n 0\n
          \n \\(106\\)\n \n 0\n \n 0\n
          \n \\(107\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n 0\n \n 0\n
          \n \\(109\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n 0\n \n 0\n
          \n \\(111\\)\n \n 0\n \n 0\n
          \n \\(112\\)\n \n 0\n \n 0\n
          \n \\(113\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n 0\n \n 0\n
          \n \\(115\\)\n \n 0\n \n 0\n
          \n \\(116\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(117\\)\n \n 0\n \n 0\n
          \n \\(118\\)\n \n 0\n \n 0\n
          \n \\(119\\)\n \n 0\n \n 0\n
          \n \\(120\\)\n \n 0\n \n 0\n
          \n \\(121\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(123\\)\n \n 0\n \n 0\n
          \n \\(124\\)\n \n 0\n \n 0\n
          \n \\(125\\)\n \n 0\n \n 0\n
          \n \\(126\\)\n \n 0\n \n 0\n
          \n \\(127\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(129\\)\n \n 0\n \n 0\n
          \n \\(130\\)\n \n 0\n \n 0\n
          \n \\(131\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n 0\n \n 0\n
          \n \\(133\\)\n \n 0\n \n 0\n
          \n \\(134\\)\n \n 0\n \n 0\n
          \n \\(135\\)\n \n 0\n \n 0\n
          \n \\(136\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(137\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n 0\n \n 0\n
          \n \\(139\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n 0\n \n 0\n
          \n \\(141\\)\n \n 0\n \n 0\n
          \n \\(142\\)\n \n 0\n \n 0\n
          \n \\(143\\)\n \n 0\n \n 0\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(145\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(147\\)\n \n 0\n \n 0\n
          \n \\(148\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(149\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n 0\n \n 0\n
          \n \\(151\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n 0\n \n 0\n
          \n \\(153\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(154\\)\n \n 0\n \n 0\n
          \n \\(155\\)\n \n 0\n \n 0\n
          \n \\(156\\)\n \n 0\n \n 0\n
          \n \\(157\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n 0\n \n 0\n
          \n \\(159\\)\n \n 0\n \n 0\n
          \n \\(160\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(161\\)\n \n 0\n \n 0\n
          \n \\(162\\)\n \n 1.00000i\n 1.00000i
          \n \\(163\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(165\\)\n \n 0\n \n 0\n
          \n \\(166\\)\n \n 0\n \n 0\n
          \n \\(167\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n 0\n \n 0\n
          \n \\(169\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(170\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(171\\)\n \n 0\n \n 0\n
          \n \\(172\\)\n \n 0\n \n 0\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n 0\n \n 0\n
          \n \\(175\\)\n \n 0\n \n 0\n
          \n \\(176\\)\n \n 0\n \n 0\n
          \n \\(177\\)\n \n 0\n \n 0\n
          \n \\(178\\)\n \n 0\n \n 0\n
          \n \\(179\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n 0\n \n 0\n
          \n \\(183\\)\n \n 0\n \n 0\n
          \n \\(184\\)\n \n 0\n \n 0\n
          \n \\(185\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(186\\)\n \n 0\n \n 0\n
          \n \\(187\\)\n \n 0\n \n 0\n
          \n \\(188\\)\n \n 0\n \n 0\n
          \n \\(189\\)\n \n 0\n \n 0\n
          \n \\(190\\)\n \n 0\n \n 0\n
          \n \\(191\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n 0\n \n 0\n
          \n \\(193\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(195\\)\n \n 0\n \n 0\n
          \n \\(196\\)\n \n 0\n \n 0\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n \\(0\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n 0\n \n 0\n
          \n \\(199\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(201\\)\n \n 0\n \n 0\n
          \n \\(202\\)\n \n 0\n \n 0\n
          \n \\(203\\)\n \n 0\n \n 0\n
          \n \\(204\\)\n \n 0\n \n 0\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(206\\)\n \n 0\n \n 0\n
          \n \\(207\\)\n \n 0\n \n 0\n
          \n \\(208\\)\n \n 0\n \n 0\n
          \n \\(209\\)\n \n 0\n \n 0\n
          \n \\(210\\)\n \n 0\n \n 0\n
          \n \\(211\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n 0\n \n 0\n
          \n \\(213\\)\n \n 0\n \n 0\n
          \n \\(214\\)\n \n 0\n \n 0\n
          \n \\(215\\)\n \n 0\n \n 0\n
          \n \\(216\\)\n \n 0\n \n 0\n
          \n \\(217\\)\n \n 0\n \n 0\n
          \n \\(218\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(219\\)\n \n 0\n \n 0\n
          \n \\(220\\)\n \n 0\n \n 0\n
          \n \\(221\\)\n \n 0\n \n 0\n
          \n \\(222\\)\n \n 0\n \n 0\n
          \n \\(223\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n 0\n \n 0\n
          \n \\(225\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(227\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n 0\n \n 0\n
          \n \\(229\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n 0\n \n 0\n
          \n \\(231\\)\n \n 0\n \n 0\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n 0\n \n 0\n
          \n \\(235\\)\n \n 0\n \n 0\n
          \n \\(236\\)\n \n 0\n \n 0\n
          \n \\(237\\)\n \n 0\n \n 0\n
          \n \\(238\\)\n \n 0\n \n 0\n
          \n \\(239\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n 0\n \n 0\n
          \n \\(241\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(243\\)\n \n 0\n \n 0\n
          \n \\(244\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(245\\)\n \n 0\n \n 0\n
          \n \\(246\\)\n \n 0\n \n 0\n
          \n \\(247\\)\n \n 0\n \n 0\n
          \n \\(248\\)\n \n 0\n \n 0\n
          \n \\(249\\)\n \n 0\n \n 0\n
          \n \\(250\\)\n \n 0\n \n 0\n
          \n \\(251\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n 0\n \n 0\n
          \n \\(253\\)\n \n 0\n \n 0\n
          \n \\(254\\)\n \n 0\n \n 0\n
          \n \\(255\\)\n \n 0\n \n 0\n
          \n \\(256\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(257\\)\n \n 1.73205\n \n \u2212\n \n 1.00000i\n 1.73205\n \n \u2212\n \n 1.00000i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n 0\n \n 0\n
          \n \\(259\\)\n \n 0\n \n 0\n
          \n \\(260\\)\n \n 0\n \n 0\n
          \n \\(261\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(262\\)\n \n 0\n \n 0\n
          \n \\(263\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n 0\n \n 0\n
          \n \\(265\\)\n \n 0\n \n 0\n
          \n \\(266\\)\n \n 0\n \n 0\n
          \n \\(267\\)\n \n 0\n \n 0\n
          \n \\(268\\)\n \n 0\n \n 0\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n 0\n \n 0\n
          \n \\(271\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n 1.00000\n
          \n \\(273\\)\n \n 0\n \n 0\n
          \n \\(274\\)\n \n 0\n \n 0\n
          \n \\(275\\)\n \n 0\n \n 0\n
          \n \\(276\\)\n \n 0\n \n 0\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i\n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n 0\n \n 0\n
          \n \\(279\\)\n \n 0\n \n 0\n
          \n \\(280\\)\n \n 0\n \n 0\n
          \n \\(281\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n 0\n \n 0\n
          \n \\(283\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n 0\n \n 0\n
          \n \\(285\\)\n \n 0\n \n 0\n
          \n \\(286\\)\n \n 0\n \n 0\n
          \n \\(287\\)\n \n 0\n \n 0\n
          \n \\(288\\)\n \n \u22121.00000\n \n \u22121.00000\n
          \n \\(289\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(290\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(291\\)\n \n 0\n \n 0\n
          \n \\(292\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(293\\)\n \n 2.00000\n \n 2.00000\n \n 1.00000\n \n \\(0\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(294\\)\n \n 0\n \n 0\n
          \n \\(295\\)\n \n 0\n \n 0\n
          \n \\(296\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(297\\)\n \n 0\n \n 0\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n 1.73205\n \n +\n \n 1.00000i
          \n \\(299\\)\n \n 0\n \n 0\n
          \n \\(300\\)\n \n 0\n \n 0\n
          \n \\(301\\)\n \n 0\n \n 0\n
          \n \\(302\\)\n \n 0\n \n 0\n
          \n \\(303\\)\n \n 0\n \n 0\n
          \n \\(304\\)\n \n 0\n \n 0\n
          \n \\(305\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(307\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n 0\n \n 0\n
          \n \\(309\\)\n \n 0\n \n 0\n
          \n \\(310\\)\n \n 0\n \n 0\n
          \n \\(311\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n 0\n \n 0\n
          \n \\(313\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n 2.00000i\n 2.00000i
          \n \\(315\\)\n \n 0\n \n 0\n
          \n \\(316\\)\n \n 0\n \n 0\n
          \n \\(317\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n 0\n \n 0\n
          \n \\(319\\)\n \n 0\n \n 0\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(321\\)\n \n 0\n \n 0\n
          \n \\(322\\)\n \n 0\n \n 0\n
          \n \\(323\\)\n \n 0\n \n 0\n
          \n \\(324\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(325\\)\n \n 0\n \n 0\n
          \n \\(326\\)\n \n 0\n \n 0\n
          \n \\(327\\)\n \n 0\n \n 0\n
          \n \\(328\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(329\\)\n \n 0\n \n 0\n
          \n \\(330\\)\n \n 0\n \n 0\n
          \n \\(331\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n 0\n \n 0\n
          \n \\(333\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(334\\)\n \n 0\n \n 0\n
          \n \\(335\\)\n \n 0\n \n 0\n
          \n \\(336\\)\n \n 0\n \n 0\n
          \n \\(337\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(339\\)\n \n 0\n \n 0\n
          \n \\(340\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(341\\)\n \n 0\n \n 0\n
          \n \\(342\\)\n \n 0\n \n 0\n
          \n \\(343\\)\n \n 0\n \n 0\n
          \n \\(344\\)\n \n 0\n \n 0\n
          \n \\(345\\)\n \n 0\n \n 0\n
          \n \\(346\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(347\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n 0\n \n 0\n
          \n \\(349\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n 0\n \n 0\n
          \n \\(351\\)\n \n 0\n \n 0\n
          \n \\(352\\)\n \n 0\n \n 0\n
          \n \\(353\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n 0\n \n 0\n
          \n \\(355\\)\n \n 0\n \n 0\n
          \n \\(356\\)\n \n 0\n \n 0\n
          \n \\(357\\)\n \n 0\n \n 0\n
          \n \\(358\\)\n \n 0\n \n 0\n
          \n \\(359\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(361\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(362\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(363\\)\n \n 0\n \n 0\n
          \n \\(364\\)\n \n 0\n \n 0\n
          \n \\(365\\)\n \n 2.00000i\n 2.00000i
          \n \\(366\\)\n \n 0\n \n 0\n
          \n \\(367\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n 0\n \n 0\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(370\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(371\\)\n \n 0\n \n 0\n
          \n \\(372\\)\n \n 0\n \n 0\n
          \n \\(373\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n 0\n \n 0\n
          \n \\(375\\)\n \n 0\n \n 0\n
          \n \\(376\\)\n \n 0\n \n 0\n
          \n \\(377\\)\n \n 0\n \n 0\n
          \n \\(378\\)\n \n 0\n \n 0\n
          \n \\(379\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n 0\n \n 0\n
          \n \\(381\\)\n \n 0\n \n 0\n
          \n \\(382\\)\n \n 0\n \n 0\n
          \n \\(383\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n 0\n \n 0\n
          \n \\(385\\)\n \n 0\n \n 0\n
          \n \\(386\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(387\\)\n \n 0\n \n 0\n
          \n \\(388\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(389\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n 0\n \n 0\n
          \n \\(391\\)\n \n 0\n \n 0\n
          \n \\(392\\)\n \n 0\n \n 0\n
          \n \\(393\\)\n \n 0\n \n 0\n
          \n \\(394\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(395\\)\n \n 0\n \n 0\n
          \n \\(396\\)\n \n 0\n \n 0\n
          \n \\(397\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n 0\n \n 0\n
          \n \\(399\\)\n \n 0\n \n 0\n
          \n \\(400\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(401\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n 0\n \n 0\n
          \n \\(403\\)\n \n 0\n \n 0\n
          \n \\(404\\)\n \n 0\n \n 0\n
          \n \\(405\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(406\\)\n \n 0\n \n 0\n
          \n \\(407\\)\n \n 0\n \n 0\n
          \n \\(408\\)\n \n 0\n \n 0\n
          \n \\(409\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(411\\)\n \n 0\n \n 0\n
          \n \\(412\\)\n \n 0\n \n 0\n
          \n \\(413\\)\n \n 0\n \n 0\n
          \n \\(414\\)\n \n 0\n \n 0\n
          \n \\(415\\)\n \n 0\n \n 0\n
          \n \\(416\\)\n \n 0\n \n 0\n
          \n \\(417\\)\n \n 0\n \n 0\n
          \n \\(418\\)\n \n 0\n \n 0\n
          \n \\(419\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n 0\n \n 0\n
          \n \\(421\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n 0\n \n 0\n
          \n \\(423\\)\n \n 0\n \n 0\n
          \n \\(424\\)\n \n 0\n \n 0\n
          \n \\(425\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(426\\)\n \n 0\n \n 0\n
          \n \\(427\\)\n \n 0\n \n 0\n
          \n \\(428\\)\n \n 0\n \n 0\n
          \n \\(429\\)\n \n 0\n \n 0\n
          \n \\(430\\)\n \n 0\n \n 0\n
          \n \\(431\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n 0\n \n 0\n
          \n \\(433\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n 0\n \n 0\n
          \n \\(435\\)\n \n 0\n \n 0\n
          \n \\(436\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(437\\)\n \n 0\n \n 0\n
          \n \\(438\\)\n \n 0\n \n 0\n
          \n \\(439\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n 0\n \n 0\n
          \n \\(441\\)\n \n 0\n \n 0\n
          \n \\(442\\)\n \n 0\n \n 0\n
          \n \\(443\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n 0\n \n 0\n
          \n \\(445\\)\n \n 0\n \n 0\n
          \n \\(446\\)\n \n 0\n \n 0\n
          \n \\(447\\)\n \n 0\n \n 0\n
          \n \\(448\\)\n \n 0\n \n 0\n
          \n \\(449\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(451\\)\n \n 0\n \n 0\n
          \n \\(452\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(453\\)\n \n 0\n \n 0\n
          \n \\(454\\)\n \n 0\n \n 0\n
          \n \\(455\\)\n \n 0\n \n 0\n
          \n \\(456\\)\n \n 0\n \n 0\n
          \n \\(457\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i\n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(459\\)\n \n 0\n \n 0\n
          \n \\(460\\)\n \n 0\n \n 0\n
          \n \\(461\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n 0\n \n 0\n
          \n \\(463\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(465\\)\n \n 0\n \n 0\n
          \n \\(466\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(467\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n 0\n \n 0\n
          \n \\(469\\)\n \n 0\n \n 0\n
          \n \\(470\\)\n \n 0\n \n 0\n
          \n \\(471\\)\n \n 0\n \n 0\n
          \n \\(472\\)\n \n 0\n \n 0\n
          \n \\(473\\)\n \n 0\n \n 0\n
          \n \\(474\\)\n \n 0\n \n 0\n
          \n \\(475\\)\n \n 0\n \n 0\n
          \n \\(476\\)\n \n 0\n \n 0\n
          \n \\(477\\)\n \n 0\n \n 0\n
          \n \\(478\\)\n \n 0\n \n 0\n
          \n \\(479\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n 0\n \n 0\n
          \n \\(481\\)\n \n 0\n \n 0\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(483\\)\n \n 0\n \n 0\n
          \n \\(484\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(485\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(486\\)\n \n 0\n \n 0\n
          \n \\(487\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(489\\)\n \n 0\n \n 0\n
          \n \\(490\\)\n \n 0\n \n 0\n
          \n \\(491\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n 0\n \n 0\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(494\\)\n \n 0\n \n 0\n
          \n \\(495\\)\n \n 0\n \n 0\n
          \n \\(496\\)\n \n 0\n \n 0\n
          \n \\(497\\)\n \n 0\n \n 0\n
          \n \\(498\\)\n \n 0\n \n 0\n
          \n \\(499\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n 0\n \n 0\n
          \n \\(501\\)\n \n 0\n \n 0\n
          \n \\(502\\)\n \n 0\n \n 0\n
          \n \\(503\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n 0\n \n 0\n
          \n \\(505\\)\n \n 0\n \n 0\n
          \n \\(506\\)\n \n 0\n \n 0\n
          \n \\(507\\)\n \n 0\n \n 0\n
          \n \\(508\\)\n \n 0\n \n 0\n
          \n \\(509\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n 0\n \n 0\n
          \n \\(511\\)\n \n 0\n \n 0\n
          \n \\(512\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(513\\)\n \n 0\n \n 0\n
          \n \\(514\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i
          \n \\(515\\)\n \n 0\n \n 0\n
          \n \\(516\\)\n \n 0\n \n 0\n
          \n \\(517\\)\n \n 0\n \n 0\n
          \n \\(518\\)\n \n 0\n \n 0\n
          \n \\(519\\)\n \n 0\n \n 0\n
          \n \\(520\\)\n \n 0\n \n 0\n
          \n \\(521\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(523\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n 0\n \n 0\n
          \n \\(525\\)\n \n 0\n \n 0\n
          \n \\(526\\)\n \n 0\n \n 0\n
          \n \\(527\\)\n \n 0\n \n 0\n
          \n \\(528\\)\n \n 0\n \n 0\n
          \n \\(529\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(530\\)\n \n 0\n \n 0\n
          \n \\(531\\)\n \n 0\n \n 0\n
          \n \\(532\\)\n \n 0\n \n 0\n
          \n \\(533\\)\n \n 0\n \n 0\n
          \n \\(534\\)\n \n 0\n \n 0\n
          \n \\(535\\)\n \n 0\n \n 0\n
          \n \\(536\\)\n \n 0\n \n 0\n
          \n \\(537\\)\n \n 0\n \n 0\n
          \n \\(538\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(539\\)\n \n 0\n \n 0\n
          \n \\(540\\)\n \n 0\n \n 0\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n 0\n \n 0\n
          \n \\(543\\)\n \n 0\n \n 0\n
          \n \\(544\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(545\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(546\\)\n \n 0\n \n 0\n
          \n \\(547\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n 0\n \n 0\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(550\\)\n \n 0\n \n 0\n
          \n \\(551\\)\n \n 0\n \n 0\n
          \n \\(552\\)\n \n 0\n \n 0\n
          \n \\(553\\)\n \n 0\n \n 0\n
          \n \\(554\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(555\\)\n \n 0\n \n 0\n
          \n \\(556\\)\n \n 0\n \n 0\n
          \n \\(557\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n 0\n \n 0\n
          \n \\(559\\)\n \n 0\n \n 0\n
          \n \\(560\\)\n \n 0\n \n 0\n
          \n \\(561\\)\n \n 0\n \n 0\n
          \n \\(562\\)\n \n 0\n \n 0\n
          \n \\(563\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n 0\n \n 0\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n 1.00000\n \n +\n \n 1.73205i
          \n \\(566\\)\n \n 0\n \n 0\n
          \n \\(567\\)\n \n 0\n \n 0\n
          \n \\(568\\)\n \n 0\n \n 0\n
          \n \\(569\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n 0\n \n 0\n
          \n \\(571\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n 0\n \n 0\n
          \n \\(573\\)\n \n 0\n \n 0\n
          \n \\(574\\)\n \n 0\n \n 0\n
          \n \\(575\\)\n \n 0\n \n 0\n
          \n \\(576\\)\n \n 0.866025\n \n \u2212\n \n 0.500000i\n 0.866025\n \n \u2212\n \n 0.500000i
          \n \\(577\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(579\\)\n \n 0\n \n 0\n
          \n \\(580\\)\n \n 2.00000i\n 2.00000i
          \n \\(581\\)\n \n 0\n \n 0\n
          \n \\(582\\)\n \n 0\n \n 0\n
          \n \\(583\\)\n \n 0\n \n 0\n
          \n \\(584\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(585\\)\n \n 0\n \n 0\n
          \n \\(586\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(587\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n 0\n \n 0\n
          \n \\(589\\)\n \n 0\n \n 0\n
          \n \\(590\\)\n \n 0\n \n 0\n
          \n \\(591\\)\n \n 0\n \n 0\n
          \n \\(592\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(593\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n 0\n \n 0\n
          \n \\(595\\)\n \n 0\n \n 0\n
          \n \\(596\\)\n \n \u22122.00000\n \n \u22122.00000\n
          \n \\(597\\)\n \n 0\n \n 0\n
          \n \\(598\\)\n \n 0\n \n 0\n
          \n \\(599\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n 0\n \n 0\n
          \n \\(601\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n 0\n \n 0\n
          \n \\(603\\)\n \n 0\n \n 0\n
          \n \\(604\\)\n \n 0\n \n 0\n
          \n \\(605\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(606\\)\n \n 0\n \n 0\n
          \n \\(607\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n 0\n \n 0\n
          \n \\(609\\)\n \n 0\n \n 0\n
          \n \\(610\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(611\\)\n \n 0\n \n 0\n
          \n \\(612\\)\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \u22120.866025\n \n \u2212\n \n 0.500000i
          \n \\(613\\)\n \n \u22121.00000\n \n +\n \n 1.73205i\n \u22121.00000\n \n +\n \n 1.73205i\n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n 0\n \n 0\n
          \n \\(615\\)\n \n 0\n \n 0\n
          \n \\(616\\)\n \n 0\n \n 0\n
          \n \\(617\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n 0\n \n 0\n
          \n \\(619\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n 0\n \n 0\n
          \n \\(621\\)\n \n 0\n \n 0\n
          \n \\(622\\)\n \n 0\n \n 0\n
          \n \\(623\\)\n \n 0\n \n 0\n
          \n \\(624\\)\n \n 0\n \n 0\n
          \n \\(625\\)\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \u22120.500000\n \n \u2212\n \n 0.866025i
          \n \\(626\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i
          \n \\(627\\)\n \n 0\n \n 0\n
          \n \\(628\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(629\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(630\\)\n \n 0\n \n 0\n
          \n \\(631\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n 0\n \n 0\n
          \n \\(633\\)\n \n 0\n \n 0\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(635\\)\n \n 0\n \n 0\n
          \n \\(636\\)\n \n 0\n \n 0\n
          \n \\(637\\)\n \n 0\n \n 0\n
          \n \\(638\\)\n \n 0\n \n 0\n
          \n \\(639\\)\n \n 0\n \n 0\n
          \n \\(640\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(641\\)\n \n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.366025\n \n \u2212\n \n 1.36603i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n 0\n \n 0\n
          \n \\(643\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n 0\n \n 0\n
          \n \\(645\\)\n \n 0\n \n 0\n
          \n \\(646\\)\n \n 0\n \n 0\n
          \n \\(647\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n 0.866025\n \n +\n \n 0.500000i
          \n \\(649\\)\n \n 0\n \n 0\n
          \n \\(650\\)\n \n 0\n \n 0\n
          \n \\(651\\)\n \n 0\n \n 0\n
          \n \\(652\\)\n \n 0\n \n 0\n
          \n \\(653\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n 0\n \n 0\n
          \n \\(655\\)\n \n 0\n \n 0\n
          \n \\(656\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(658\\)\n \n 0\n \n 0\n
          \n \\(659\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n 0\n \n 0\n
          \n \\(661\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n 0\n \n 0\n
          \n \\(663\\)\n \n 0\n \n 0\n
          \n \\(664\\)\n \n 0\n \n 0\n
          \n \\(665\\)\n \n 0\n \n 0\n
          \n \\(666\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(667\\)\n \n 0\n \n 0\n
          \n \\(668\\)\n \n 0\n \n 0\n
          \n \\(669\\)\n \n 0\n \n 0\n
          \n \\(670\\)\n \n 0\n \n 0\n
          \n \\(671\\)\n \n 0\n \n 0\n
          \n \\(672\\)\n \n 0\n \n 0\n
          \n \\(673\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(675\\)\n \n 0\n \n 0\n
          \n \\(676\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i\n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n 0\n \n 0\n
          \n \\(679\\)\n \n 0\n \n 0\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(681\\)\n \n 0\n \n 0\n
          \n \\(682\\)\n \n 0\n \n 0\n
          \n \\(683\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n 0\n \n 0\n
          \n \\(685\\)\n \n 0\n \n 0\n
          \n \\(686\\)\n \n 0\n \n 0\n
          \n \\(687\\)\n \n 0\n \n 0\n
          \n \\(688\\)\n \n 0\n \n 0\n
          \n \\(689\\)\n \n 0\n \n 0\n
          \n \\(690\\)\n \n 0\n \n 0\n
          \n \\(691\\)\n \n 0\n \n 0\n \n 0.258819\n \n \u2212\n \n 0.965926i\n \\(-0.416667\\pi\\)\n
          \n \u22120.258819\n \n +\n \n 0.965926i\n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(693\\)\n \n 0\n \n 0\n
          \n \\(694\\)\n \n 0\n \n 0\n
          \n \\(695\\)\n \n 0\n \n 0\n
          \n \\(696\\)\n \n 0\n \n 0\n
          \n \\(697\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(698\\)\n \n 0\n \n 0\n
          \n \\(699\\)\n \n 0\n \n 0\n
          \n \\(700\\)\n \n 0\n \n 0\n
          \n \\(701\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n 0\n \n 0\n
          \n \\(703\\)\n \n 0\n \n 0\n
          \n \\(704\\)\n \n 0\n \n 0\n
          \n \\(705\\)\n \n 0\n \n 0\n
          \n \\(706\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(707\\)\n \n 0\n \n 0\n
          \n \\(708\\)\n \n 0\n \n 0\n
          \n \\(709\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n 0\n \n 0\n
          \n \\(711\\)\n \n 0\n \n 0\n
          \n \\(712\\)\n \n 0\n \n 0\n
          \n \\(713\\)\n \n 0\n \n 0\n
          \n \\(714\\)\n \n 0\n \n 0\n
          \n \\(715\\)\n \n 0\n \n 0\n
          \n \\(716\\)\n \n 0\n \n 0\n
          \n \\(717\\)\n \n 0\n \n 0\n
          \n \\(718\\)\n \n 0\n \n 0\n
          \n \\(719\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(721\\)\n \n 0\n \n 0\n
          \n \\(722\\)\n \n 1.00000i\n 1.00000i
          \n \\(723\\)\n \n 0\n \n 0\n
          \n \\(724\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(725\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(726\\)\n \n 0\n \n 0\n
          \n \\(727\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n 0\n \n 0\n
          \n \\(729\\)\n \n 1.00000i\n 1.00000i
          \n \\(730\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(731\\)\n \n 0\n \n 0\n
          \n \\(732\\)\n \n 0\n \n 0\n
          \n \\(733\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n 0\n \n 0\n
          \n \\(735\\)\n \n 0\n \n 0\n
          \n \\(736\\)\n \n 0\n \n 0\n
          \n \\(737\\)\n \n 0\n \n 0\n
          \n \\(738\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(739\\)\n \n 0\n \n 0\n \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n \u22121.73205\n \n +\n \n 1.00000i\n \u22121.73205\n \n +\n \n 1.00000i
          \n \\(741\\)\n \n 0\n \n 0\n
          \n \\(742\\)\n \n 0\n \n 0\n
          \n \\(743\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n 0\n \n 0\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n 0.732051\n \n +\n \n 2.73205i
          \n \\(746\\)\n \n 0\n \n 0\n
          \n \\(747\\)\n \n 0\n \n 0\n
          \n \\(748\\)\n \n 0\n \n 0\n
          \n \\(749\\)\n \n 0\n \n 0\n
          \n \\(750\\)\n \n 0\n \n 0\n
          \n \\(751\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n 0\n \n 0\n
          \n \\(753\\)\n \n 0\n \n 0\n
          \n \\(754\\)\n \n 0\n \n 0\n
          \n \\(755\\)\n \n 0\n \n 0\n
          \n \\(756\\)\n \n 0\n \n 0\n
          \n \\(757\\)\n \n 2.00000i\n 2.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n 0\n \n 0\n
          \n \\(759\\)\n \n 0\n \n 0\n
          \n \\(760\\)\n \n 0\n \n 0\n
          \n \\(761\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n 0\n \n 0\n
          \n \\(763\\)\n \n 0\n \n 0\n
          \n \\(764\\)\n \n 0\n \n 0\n
          \n \\(765\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(766\\)\n \n 0\n \n 0\n
          \n \\(767\\)\n \n 0\n \n 0\n
          \n \\(768\\)\n \n 0\n \n 0\n
          \n \\(769\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n 0\n \n 0\n
          \n \\(771\\)\n \n 0\n \n 0\n
          \n \\(772\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(773\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \u22120.866025\n \n \u2212\n \n 0.500000i\n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n 0\n \n 0\n
          \n \\(775\\)\n \n 0\n \n 0\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(777\\)\n \n 0\n \n 0\n
          \n \\(778\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(779\\)\n \n 0\n \n 0\n
          \n \\(780\\)\n \n 0\n \n 0\n
          \n \\(781\\)\n \n 0\n \n 0\n
          \n \\(782\\)\n \n 0\n \n 0\n
          \n \\(783\\)\n \n 0\n \n 0\n
          \n \\(784\\)\n \n 0\n \n 0\n
          \n \\(785\\)\n \n \u22122.00000\n \n +\n \n 2.00000i\n \u22122.00000\n \n +\n \n 2.00000i
          \n \\(786\\)\n \n 0\n \n 0\n
          \n \\(787\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(789\\)\n \n 0\n \n 0\n
          \n \\(790\\)\n \n 0\n \n 0\n
          \n \\(791\\)\n \n 0\n \n 0\n
          \n \\(792\\)\n \n 0\n \n 0\n
          \n \\(793\\)\n \n 0\n \n 0\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(795\\)\n \n 0\n \n 0\n
          \n \\(796\\)\n \n 0\n \n 0\n
          \n \\(797\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n 0\n \n 0\n
          \n \\(799\\)\n \n 0\n \n 0\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(801\\)\n \n 0\n \n 0\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(803\\)\n \n 0\n \n 0\n
          \n \\(804\\)\n \n 0\n \n 0\n
          \n \\(805\\)\n \n 0\n \n 0\n
          \n \\(806\\)\n \n 0\n \n 0\n
          \n \\(807\\)\n \n 0\n \n 0\n
          \n \\(808\\)\n \n 0\n \n 0\n
          \n \\(809\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n \u2212\n \n 1.36603i\n 0.366025\n \n \u2212\n \n 1.36603i
          \n \\(811\\)\n \n 0\n \n 0\n \n 0.707107\n \n \u2212\n \n 0.707107i\n \\(-0.250000\\pi\\)\n
          \n \u22120.707107\n \n +\n \n 0.707107i\n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n 0\n \n 0\n
          \n \\(813\\)\n \n 0\n \n 0\n
          \n \\(814\\)\n \n 0\n \n 0\n
          \n \\(815\\)\n \n 0\n \n 0\n
          \n \\(816\\)\n \n 0\n \n 0\n
          \n \\(817\\)\n \n 0\n \n 0\n
          \n \\(818\\)\n \n \u2212\n \n 2.00000i\n \u2212\n \n 2.00000i
          \n \\(819\\)\n \n 0\n \n 0\n
          \n \\(820\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(821\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n 0\n \n 0\n
          \n \\(823\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n 0\n \n 0\n
          \n \\(825\\)\n \n 0\n \n 0\n
          \n \\(826\\)\n \n 0\n \n 0\n
          \n \\(827\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n 0\n \n 0\n
          \n \\(829\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n 0\n \n 0\n
          \n \\(831\\)\n \n 0\n \n 0\n
          \n \\(832\\)\n \n 0\n \n 0\n
          \n \\(833\\)\n \n 0\n \n 0\n
          \n \\(834\\)\n \n 0\n \n 0\n
          \n \\(835\\)\n \n 0\n \n 0\n
          \n \\(836\\)\n \n 0\n \n 0\n
          \n \\(837\\)\n \n 0\n \n 0\n
          \n \\(838\\)\n \n 0\n \n 0\n
          \n \\(839\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n 0\n \n 0\n
          \n \\(841\\)\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i
          \n \\(842\\)\n \n 0\n \n 0\n
          \n \\(843\\)\n \n 0\n \n 0\n
          \n \\(844\\)\n \n 0\n \n 0\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(846\\)\n \n 0\n \n 0\n
          \n \\(847\\)\n \n 0\n \n 0\n
          \n \\(848\\)\n \n 0\n \n 0\n
          \n \\(849\\)\n \n 0\n \n 0\n
          \n \\(850\\)\n \n 0.500000\n \n \u2212\n \n 0.866025i\n 0.500000\n \n \u2212\n \n 0.866025i
          \n \\(851\\)\n \n 0\n \n 0\n
          \n \\(852\\)\n \n 0\n \n 0\n
          \n \\(853\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i\n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n \\(0\\)\n
          \n \\(854\\)\n \n 0\n \n 0\n
          \n \\(855\\)\n \n 0\n \n 0\n
          \n \\(856\\)\n \n 0\n \n 0\n
          \n \\(857\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n 0\n \n 0\n
          \n \\(859\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n 0\n \n 0\n
          \n \\(861\\)\n \n 0\n \n 0\n
          \n \\(862\\)\n \n 0\n \n 0\n
          \n \\(863\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n 0\n \n 0\n
          \n \\(865\\)\n \n \u22121.73205\n \n \u2212\n \n 1.00000i\n \u22121.73205\n \n \u2212\n \n 1.00000i
          \n \\(866\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(867\\)\n \n 0\n \n 0\n
          \n \\(868\\)\n \n 0\n \n 0\n
          \n \\(869\\)\n \n 0\n \n 0\n
          \n \\(870\\)\n \n 0\n \n 0\n
          \n \\(871\\)\n \n 0\n \n 0\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n 0.366025\n \n +\n \n 1.36603i
          \n \\(873\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i
          \n \\(874\\)\n \n 0\n \n 0\n
          \n \\(875\\)\n \n 0\n \n 0\n
          \n \\(876\\)\n \n 0\n \n 0\n
          \n \\(877\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n 0\n \n 0\n
          \n \\(879\\)\n \n 0\n \n 0\n
          \n \\(880\\)\n \n 0\n \n 0\n
          \n \\(881\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i\n 1.00000i\n \\(0.5\\pi\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n 0\n \n 0\n
          \n \\(883\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n 0\n \n 0\n
          \n \\(885\\)\n \n 0\n \n 0\n
          \n \\(886\\)\n \n 0\n \n 0\n
          \n \\(887\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n 0\n \n 0\n
          \n \\(889\\)\n \n 0\n \n 0\n
          \n \\(890\\)\n \n 0\n \n 0\n
          \n \\(891\\)\n \n 0\n \n 0\n
          \n \\(892\\)\n \n 0\n \n 0\n
          \n \\(893\\)\n \n 0\n \n 0\n
          \n \\(894\\)\n \n 0\n \n 0\n
          \n \\(895\\)\n \n 0\n \n 0\n
          \n \\(896\\)\n \n 0\n \n 0\n
          \n \\(897\\)\n \n 0\n \n 0\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n 1.36603\n \n +\n \n 0.366025i
          \n \\(899\\)\n \n 0\n \n 0\n
          \n \\(900\\)\n \n \u22120.500000\n \n +\n \n 0.866025i\n \u22120.500000\n \n +\n \n 0.866025i
          \n \\(901\\)\n \n 0\n \n 0\n
          \n \\(902\\)\n \n 0\n \n 0\n
          \n \\(903\\)\n \n 0\n \n 0\n
          \n \\(904\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(905\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(906\\)\n \n 0\n \n 0\n
          \n \\(907\\)\n \n 0\n \n 0\n \n 0.965926\n \n \u2212\n \n 0.258819i\n \\(-0.0833333\\pi\\)\n
          \n \u22120.965926\n \n +\n \n 0.258819i\n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n 0\n \n 0\n
          \n \\(909\\)\n \n 0\n \n 0\n
          \n \\(910\\)\n \n 0\n \n 0\n
          \n \\(911\\)\n \n 0\n \n 0\n \n \u22120.707107\n \n \u2212\n \n 0.707107i\n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n 0\n \n 0\n
          \n \\(913\\)\n \n 0\n \n 0\n
          \n \\(914\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(915\\)\n \n 0\n \n 0\n
          \n \\(916\\)\n \n 2.00000i\n 2.00000i
          \n \\(917\\)\n \n 0\n \n 0\n
          \n \\(918\\)\n \n 0\n \n 0\n
          \n \\(919\\)\n \n 0\n \n 0\n \n \u22120.500000\n \n \u2212\n \n 0.866025i\n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n 0\n \n 0\n
          \n \\(921\\)\n \n 0\n \n 0\n
          \n \\(922\\)\n \n 0\n \n 0\n
          \n \\(923\\)\n \n 0\n \n 0\n
          \n \\(924\\)\n \n 0\n \n 0\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n 1.00000\n \n +\n \n 1.00000i
          \n \\(926\\)\n \n 0\n \n 0\n
          \n \\(927\\)\n \n 0\n \n 0\n
          \n \\(928\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i
          \n \\(929\\)\n \n \u22120.366025\n \n +\n \n 1.36603i\n \u22120.366025\n \n +\n \n 1.36603i\n 0.500000\n \n +\n \n 0.866025i\n \\(0.333333\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n 0\n \n 0\n
          \n \\(931\\)\n \n 0\n \n 0\n
          \n \\(932\\)\n \n 1.00000\n \n \u2212\n \n 1.00000i\n 1.00000\n \n \u2212\n \n 1.00000i
          \n \\(933\\)\n \n 0\n \n 0\n
          \n \\(934\\)\n \n 0\n \n 0\n
          \n \\(935\\)\n \n 0\n \n 0\n
          \n \\(936\\)\n \n 0\n \n 0\n
          \n \\(937\\)\n \n 0\n \n 0\n \n 1.00000\n \n \\(0\\)\n
          \n \u22121.00000\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n 0\n \n 0\n
          \n \\(939\\)\n \n 0\n \n 0\n
          \n \\(940\\)\n \n 0\n \n 0\n
          \n \\(941\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n 0\n \n 0\n
          \n \\(943\\)\n \n 0\n \n 0\n
          \n \\(944\\)\n \n 0\n \n 0\n
          \n \\(945\\)\n \n 0\n \n 0\n
          \n \\(946\\)\n \n 0\n \n 0\n
          \n \\(947\\)\n \n 0\n \n 0\n \n \u22120.965926\n \n \u2212\n \n 0.258819i\n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n 0\n \n 0\n
          \n \\(949\\)\n \n 0\n \n 0\n
          \n \\(950\\)\n \n 0\n \n 0\n
          \n \\(951\\)\n \n 0\n \n 0\n
          \n \\(952\\)\n \n 0\n \n 0\n
          \n \\(953\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n 0\n \n 0\n
          \n \\(955\\)\n \n 0\n \n 0\n
          \n \\(956\\)\n \n 0\n \n 0\n
          \n \\(957\\)\n \n 0\n \n 0\n
          \n \\(958\\)\n \n 0\n \n 0\n
          \n \\(959\\)\n \n 0\n \n 0\n
          \n \\(960\\)\n \n 0\n \n 0\n
          \n \\(961\\)\n \n \u22120.866025\n \n +\n \n 0.500000i\n \u22120.866025\n \n +\n \n 0.500000i
          \n \\(962\\)\n \n 0\n \n 0\n
          \n \\(963\\)\n \n 0\n \n 0\n
          \n \\(964\\)\n \n \u22121.36603\n \n \u2212\n \n 0.366025i\n \u22121.36603\n \n \u2212\n \n 0.366025i
          \n \\(965\\)\n \n 2.00000\n \n 2.00000\n
          \n \\(966\\)\n \n 0\n \n 0\n
          \n \\(967\\)\n \n 0\n \n 0\n \n \u2212\n \n 1.00000i\n \\(-0.5\\pi\\)\n
          \n 1.00000i\n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n 0.500000\n \n +\n \n 0.866025i
          \n \\(969\\)\n \n 0\n \n 0\n
          \n \\(970\\)\n \n 1.00000\n \n \u2212\n \n 1.73205i\n 1.00000\n \n \u2212\n \n 1.73205i
          \n \\(971\\)\n \n 0\n \n 0\n \n 0.866025\n \n \u2212\n \n 0.500000i\n \\(-0.166667\\pi\\)\n
          \n \u22120.866025\n \n +\n \n 0.500000i\n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n 0\n \n 0\n
          \n \\(973\\)\n \n 0\n \n 0\n
          \n \\(974\\)\n \n 0\n \n 0\n
          \n \\(975\\)\n \n 0\n \n 0\n
          \n \\(976\\)\n \n \u22121.36603\n \n +\n \n 0.366025i\n \u22121.36603\n \n +\n \n 0.366025i
          \n \\(977\\)\n \n 0\n \n 0\n \n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n \u22120.500000\n \n +\n \n 0.866025i\n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n 0\n \n 0\n
          \n \\(979\\)\n \n 0\n \n 0\n
          \n \\(980\\)\n \n 0\n \n 0\n
          \n \\(981\\)\n \n \u22121.00000\n \n +\n \n 1.00000i\n \u22121.00000\n \n +\n \n 1.00000i
          \n \\(982\\)\n \n 0\n \n 0\n
          \n \\(983\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n 0\n \n 0\n
          \n \\(985\\)\n \n \u22121.00000\n \n \u2212\n \n 1.73205i\n \u22121.00000\n \n \u2212\n \n 1.73205i
          \n \\(986\\)\n \n \u22121.00000\n \n \u2212\n \n 1.00000i\n \u22121.00000\n \n \u2212\n \n 1.00000i
          \n \\(987\\)\n \n 0\n \n 0\n
          \n \\(988\\)\n \n 0\n \n 0\n
          \n \\(989\\)\n \n 0\n \n 0\n
          \n \\(990\\)\n \n 0\n \n 0\n
          \n \\(991\\)\n \n 0\n \n 0\n \n \u22120.258819\n \n \u2212\n \n 0.965926i\n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n 0\n \n 0\n
          \n \\(993\\)\n \n 0\n \n 0\n
          \n \\(994\\)\n \n 0\n \n 0\n
          \n \\(995\\)\n \n 0\n \n 0\n
          \n \\(996\\)\n \n 0\n \n 0\n
          \n \\(997\\)\n \n 1.36603\n \n \u2212\n \n 0.366025i\n 1.36603\n \n \u2212\n \n 0.366025i\n 0.500000\n \n \u2212\n \n 0.866025i\n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n 0\n \n 0\n
          \n \\(999\\)\n \n 0\n \n 0\n
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          \u2003\u2003\u2003\u2003\u2003\u2003\u2003\u2003By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          ", "statics": {"paragraph": 22, "paragraph.text": 24, "table": 8, "title": 4, "table.complex": 4, "paragraph.equation-inline": 2}, "url": "https://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/3332/1/bc/b/2027/1/", "content": "Show commands: Magma/ PariGP/ SageMath\n\n[N,k,chi] = [3332,1,Mod(667,3332)] mf = mfinit([N,k,chi],0) lf = mfeigenbasis(mf)\n\nfrom sage.modular.dirichlet import DirichletCharacter H = DirichletGroup(3332, base_ring=CyclotomicField(12)) chi = DirichletCharacter(H, H._module([6, 4, 9])) N = Newforms(chi, 1, names=\"a\")\n\n//Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code chi := DirichletCharacter(\"3332.667\"); S:= CuspForms(chi, 1); N := Newforms(S);\n\n| Level | \\( N \\) | \\(=\\) | \\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\) |\n|---|---|---|---|\n| Weight | \\( k \\) | \\(=\\) | \\( 1 \\) |\n| Character orbit | \\([\\chi]\\) | \\(=\\) | 3332.bc
          order
          degree
          minimal |\n\n## Newform invariants\n\nsage:\u00a0f = N[0] \\# Warning: the index may be different\n\ngp:\u00a0f = lf[1] \\\\ Warning: the index may be different\n\n
          Self dualno
          Analytic conductor\\(1.66288462209\\)
          Analytic rank\\(0\\)
          Dimension\\(4\\)
          Coefficient field\\(\\Q(\\zeta_{12})\\)
          gp:\u00a0f.mod \\\\ as an extension of the character field
          Defining polynomial\\( x^{4} - x^{2} + 1 \\)
          Coefficient ring\\(\\Z[a_1, a_2]\\)
          Coefficient ring index\\( 1 \\)
          Twist minimalno (minimal twist has level 68)
          Projective image\\(D_{4}\\)
          Projective fieldGalois closure of<br>4.2.19652.1
          Artin image$C_4\\wr C_2\\times C_6$
          Artin fieldGalois closure of<br>\\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          \n\n## Embedding invariants\n\n| Embedding label | | | 2027.1 |\n|---|---|---|---|\n| Root | | | \\(0.866025 - 0.500000i\\) of defining polynomial |\n| Character | \\(\\chi\\) | \\(=\\) | 3332.2027 |\n| Dual form | | | 3332.1.bc.b.863.1 |\n\nsage:\u00a0f.q_expansion() \\# note that sage often uses an isomorphic number field\n\ngp:\u00a0mfcoefs(f, 20)\n\n| \\(f(q)\\) | \\(=\\) | \\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\) |\n|---|---|---|\n| \\(\\operatorname{Tr}(f)(q)\\) | \\(=\\) | \\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\) |\n\n## Character values\n\nWe give the values of $\\chi$ on generators for $\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times$ .\n\n| \\(n\\) | \\(785\\) | \\(885\\) | \\(1667\\) |\n|---|---|---|---|\n| \\(\\chi(n)\\) | \\(e\\left(\\frac{3}{4}\\right)\\) | \\(e\\left(\\frac{2}{3}\\right)\\) | \\(-1\\) |\n\n## Coefficient data\n\nFor each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the Satake parameters\\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n
          \\(n\\)\\(a_n\\)\\(a_n / n^{(k-1)/2}\\)\\( \\alpha_n \\)\\( \\theta_n \\)
          \\(p\\)\\(a_p\\)\\(a_p / p^{(k-1)/2}\\)\\( \\alpha_p\\)\\( \\theta_p \\)
          \\(2\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(3\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(4\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(5\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(6\\)00
          \\(7\\)00
          \\(8\\)1.00000<br>i1.00000<br>i
          \\(9\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(10\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(11\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(12\\)00
          \\(13\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(14\\)00
          \\(15\\)00
          \\(16\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(17\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(18\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(19\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(20\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(21\\)00
          \\(22\\)00
          \\(23\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(24\\)00
          \\(25\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(26\\)00
          \\(27\\)00
          \\(28\\)00
          \\(29\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(30\\)00
          \\(31\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(32\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(33\\)00
          \\(34\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(35\\)00
          \\(36\\)1.00000<br>i1.00000<br>i
          \\(37\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(38\\)00
          \\(39\\)00
          \\(40\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(41\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(42\\)00
          \\(43\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(44\\)00
          \\(45\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(46\\)00
          \\(47\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(48\\)00
          \\(49\\)00
          \\(50\\)\u22121.00000\u22121.00000
          \\(51\\)00
          \\(52\\)00
          \\(53\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(54\\)00
          \\(55\\)00
          \\(56\\)00
          \\(57\\)00
          \\(58\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(59\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(60\\)00
          \\(61\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(62\\)00
          \\(63\\)00
          \\(64\\)\u22121.00000\u22121.00000
          \\(65\\)00
          \\(66\\)00
          \\(67\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(68\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(69\\)00
          \\(70\\)00
          \\(71\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(72\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(73\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(74\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(75\\)00
          \\(76\\)00
          \\(77\\)00
          \\(78\\)00
          \\(79\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(80\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(81\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(82\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(83\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(84\\)00
          \\(85\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(86\\)00
          \\(87\\)00
          \\(88\\)00
          \\(89\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(90\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(91\\)00
          \\(92\\)00
          \\(93\\)00
          \\(94\\)00
          \\(95\\)00
          \\(96\\)00
          \\(97\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(98\\)00
          \\(99\\)00
          \\(100\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(101\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(102\\)00
          \\(103\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(104\\)00
          \\(105\\)00
          \\(106\\)00
          \\(107\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(108\\)00
          \\(109\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(110\\)00
          \\(111\\)00
          \\(112\\)00
          \\(113\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(114\\)00
          \\(115\\)00
          \\(116\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(117\\)00
          \\(118\\)00
          \\(119\\)00
          \\(120\\)00
          \\(121\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(122\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(123\\)00
          \\(124\\)00
          \\(125\\)00
          \\(126\\)00
          \\(127\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(128\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(129\\)00
          \\(130\\)00
          \\(131\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(132\\)00
          \\(133\\)00
          \\(134\\)00
          \\(135\\)00
          \\(136\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(137\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(138\\)00
          \\(139\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(140\\)00
          \\(141\\)00
          \\(142\\)00
          \\(143\\)00
          \\(144\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(145\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(146\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(147\\)00
          \\(148\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(149\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(150\\)00
          \\(151\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(152\\)00
          \\(153\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(154\\)00
          \\(155\\)00
          \\(156\\)00
          \\(157\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(158\\)00
          \\(159\\)00
          \\(160\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(161\\)00
          \\(162\\)1.00000<br>i1.00000<br>i
          \\(163\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(164\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(165\\)00
          \\(166\\)00
          \\(167\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(168\\)00
          \\(169\\)\u22121.00000\u22121.00000
          \\(170\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(171\\)00
          \\(172\\)00
          \\(173\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(174\\)00
          \\(175\\)00
          \\(176\\)00
          \\(177\\)00
          \\(178\\)00
          \\(179\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(180\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(181\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(182\\)00
          \\(183\\)00
          \\(184\\)00
          \\(185\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(186\\)00
          \\(187\\)00
          \\(188\\)00
          \\(189\\)00
          \\(190\\)00
          \\(191\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(192\\)00
          \\(193\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(194\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(195\\)00
          \\(196\\)00
          \\(197\\)1.00000+1.00000<br>i1.00000+1.00000<br>i1.00000\\(0\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(198\\)00
          \\(199\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(200\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(201\\)00
          \\(202\\)00
          \\(203\\)00
          \\(204\\)00
          \\(205\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(206\\)00
          \\(207\\)00
          \\(208\\)00
          \\(209\\)00
          \\(210\\)00
          \\(211\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(212\\)00
          \\(213\\)00
          \\(214\\)00
          \\(215\\)00
          \\(216\\)00
          \\(217\\)00
          \\(218\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(219\\)00
          \\(220\\)00
          \\(221\\)00
          \\(222\\)00
          \\(223\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(224\\)00
          \\(225\\)\u22121.00000\u22121.00000
          \\(226\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(227\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(228\\)00
          \\(229\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(230\\)00
          \\(231\\)00
          \\(232\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(233\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(234\\)00
          \\(235\\)00
          \\(236\\)00
          \\(237\\)00
          \\(238\\)00
          \\(239\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(240\\)00
          \\(241\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(242\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(243\\)00
          \\(244\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(245\\)00
          \\(246\\)00
          \\(247\\)00
          \\(248\\)00
          \\(249\\)00
          \\(250\\)00
          \\(251\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(252\\)00
          \\(253\\)00
          \\(254\\)00
          \\(255\\)00
          \\(256\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(257\\)1.73205\u22121.00000<br>i1.73205\u22121.00000<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(258\\)00
          \\(259\\)00
          \\(260\\)00
          \\(261\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(262\\)00
          \\(263\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(264\\)00
          \\(265\\)00
          \\(266\\)00
          \\(267\\)00
          \\(268\\)00
          \\(269\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(270\\)00
          \\(271\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(272\\)1.000001.00000
          \\(273\\)00
          \\(274\\)00
          \\(275\\)00
          \\(276\\)00
          \\(277\\)0.366025+1.36603<br>i0.366025+1.36603<br>i0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(278\\)00
          \\(279\\)00
          \\(280\\)00
          \\(281\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(282\\)00
          \\(283\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(284\\)00
          \\(285\\)00
          \\(286\\)00
          \\(287\\)00
          \\(288\\)\u22121.00000\u22121.00000
          \\(289\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(290\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(291\\)00
          \\(292\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(293\\)2.000002.000001.00000\\(0\\)
          1.00000\\(0\\)
          \\(294\\)00
          \\(295\\)00
          \\(296\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(297\\)00
          \\(298\\)1.73205+1.00000<br>i1.73205+1.00000<br>i
          \\(299\\)00
          \\(300\\)00
          \\(301\\)00
          \\(302\\)00
          \\(303\\)00
          \\(304\\)00
          \\(305\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(306\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(307\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(308\\)00
          \\(309\\)00
          \\(310\\)00
          \\(311\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(312\\)00
          \\(313\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(314\\)2.00000<br>i2.00000<br>i
          \\(315\\)00
          \\(316\\)00
          \\(317\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(318\\)00
          \\(319\\)00
          \\(320\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(321\\)00
          \\(322\\)00
          \\(323\\)00
          \\(324\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(325\\)00
          \\(326\\)00
          \\(327\\)00
          \\(328\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(329\\)00
          \\(330\\)00
          \\(331\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(332\\)00
          \\(333\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(334\\)00
          \\(335\\)00
          \\(336\\)00
          \\(337\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(338\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(339\\)00
          \\(340\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(341\\)00
          \\(342\\)00
          \\(343\\)00
          \\(344\\)00
          \\(345\\)00
          \\(346\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(347\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(348\\)00
          \\(349\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(350\\)00
          \\(351\\)00
          \\(352\\)00
          \\(353\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(354\\)00
          \\(355\\)00
          \\(356\\)00
          \\(357\\)00
          \\(358\\)00
          \\(359\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(360\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(361\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(362\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(363\\)00
          \\(364\\)00
          \\(365\\)2.00000<br>i2.00000<br>i
          \\(366\\)00
          \\(367\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(368\\)00
          \\(369\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(370\\)2.000002.00000
          \\(371\\)00
          \\(372\\)00
          \\(373\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(374\\)00
          \\(375\\)00
          \\(376\\)00
          \\(377\\)00
          \\(378\\)00
          \\(379\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(380\\)00
          \\(381\\)00
          \\(382\\)00
          \\(383\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(384\\)00
          \\(385\\)00
          \\(386\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(387\\)00
          \\(388\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(389\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(390\\)00
          \\(391\\)00
          \\(392\\)00
          \\(393\\)00
          \\(394\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(395\\)00
          \\(396\\)00
          \\(397\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(398\\)00
          \\(399\\)00
          \\(400\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(401\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(402\\)00
          \\(403\\)00
          \\(404\\)00
          \\(405\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(406\\)00
          \\(407\\)00
          \\(408\\)00
          \\(409\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(410\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(411\\)00
          \\(412\\)00
          \\(413\\)00
          \\(414\\)00
          \\(415\\)00
          \\(416\\)00
          \\(417\\)00
          \\(418\\)00
          \\(419\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(420\\)00
          \\(421\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(422\\)00
          \\(423\\)00
          \\(424\\)00
          \\(425\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(426\\)00
          \\(427\\)00
          \\(428\\)00
          \\(429\\)00
          \\(430\\)00
          \\(431\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(432\\)00
          \\(433\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(434\\)00
          \\(435\\)00
          \\(436\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(437\\)00
          \\(438\\)00
          \\(439\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(440\\)00
          \\(441\\)00
          \\(442\\)00
          \\(443\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(444\\)00
          \\(445\\)00
          \\(446\\)00
          \\(447\\)00
          \\(448\\)00
          \\(449\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(450\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(451\\)00
          \\(452\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(453\\)00
          \\(454\\)00
          \\(455\\)00
          \\(456\\)00
          \\(457\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i\u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(458\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(459\\)00
          \\(460\\)00
          \\(461\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(462\\)00
          \\(463\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(464\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(465\\)00
          \\(466\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(467\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(468\\)00
          \\(469\\)00
          \\(470\\)00
          \\(471\\)00
          \\(472\\)00
          \\(473\\)00
          \\(474\\)00
          \\(475\\)00
          \\(476\\)00
          \\(477\\)00
          \\(478\\)00
          \\(479\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(480\\)00
          \\(481\\)00
          \\(482\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(483\\)00
          \\(484\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(485\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(486\\)00
          \\(487\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(488\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(489\\)00
          \\(490\\)00
          \\(491\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(492\\)00
          \\(493\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(494\\)00
          \\(495\\)00
          \\(496\\)00
          \\(497\\)00
          \\(498\\)00
          \\(499\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(500\\)00
          \\(501\\)00
          \\(502\\)00
          \\(503\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(504\\)00
          \\(505\\)00
          \\(506\\)00
          \\(507\\)00
          \\(508\\)00
          \\(509\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \\(510\\)00
          \\(511\\)00
          \\(512\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(513\\)00
          \\(514\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i
          \\(515\\)00
          \\(516\\)00
          \\(517\\)00
          \\(518\\)00
          \\(519\\)00
          \\(520\\)00
          \\(521\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(522\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(523\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(524\\)00
          \\(525\\)00
          \\(526\\)00
          \\(527\\)00
          \\(528\\)00
          \\(529\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(530\\)00
          \\(531\\)00
          \\(532\\)00
          \\(533\\)00
          \\(534\\)00
          \\(535\\)00
          \\(536\\)00
          \\(537\\)00
          \\(538\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(539\\)00
          \\(540\\)00
          \\(541\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(542\\)00
          \\(543\\)00
          \\(544\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(545\\)\u22122.00000\u22122.00000
          \\(546\\)00
          \\(547\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(548\\)00
          \\(549\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(550\\)00
          \\(551\\)00
          \\(552\\)00
          \\(553\\)00
          \\(554\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(555\\)00
          \\(556\\)00
          \\(557\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(558\\)00
          \\(559\\)00
          \\(560\\)00
          \\(561\\)00
          \\(562\\)00
          \\(563\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(564\\)00
          \\(565\\)1.00000+1.73205<br>i1.00000+1.73205<br>i
          \\(566\\)00
          \\(567\\)00
          \\(568\\)00
          \\(569\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(570\\)00
          \\(571\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(572\\)00
          \\(573\\)00
          \\(574\\)00
          \\(575\\)00
          \\(576\\)0.866025\u22120.500000<br>i0.866025\u22120.500000<br>i
          \\(577\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(578\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(579\\)00
          \\(580\\)2.00000<br>i2.00000<br>i
          \\(581\\)00
          \\(582\\)00
          \\(583\\)00
          \\(584\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(585\\)00
          \\(586\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(587\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(588\\)00
          \\(589\\)00
          \\(590\\)00
          \\(591\\)00
          \\(592\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(593\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(594\\)00
          \\(595\\)00
          \\(596\\)\u22122.00000\u22122.00000
          \\(597\\)00
          \\(598\\)00
          \\(599\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(600\\)00
          \\(601\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(602\\)00
          \\(603\\)00
          \\(604\\)00
          \\(605\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(606\\)00
          \\(607\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(608\\)00
          \\(609\\)00
          \\(610\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(611\\)00
          \\(612\\)\u22120.866025\u22120.500000<br>i\u22120.866025\u22120.500000<br>i
          \\(613\\)\u22121.00000+1.73205<br>i\u22121.00000+1.73205<br>i\u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(614\\)00
          \\(615\\)00
          \\(616\\)00
          \\(617\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(618\\)00
          \\(619\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(620\\)00
          \\(621\\)00
          \\(622\\)00
          \\(623\\)00
          \\(624\\)00
          \\(625\\)\u22120.500000\u22120.866025<br>i\u22120.500000\u22120.866025<br>i
          \\(626\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i
          \\(627\\)00
          \\(628\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(629\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(630\\)00
          \\(631\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(632\\)00
          \\(633\\)00
          \\(634\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(635\\)00
          \\(636\\)00
          \\(637\\)00
          \\(638\\)00
          \\(639\\)00
          \\(640\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(641\\)\u22120.366025\u22121.36603<br>i\u22120.366025\u22121.36603<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(642\\)00
          \\(643\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(644\\)00
          \\(645\\)00
          \\(646\\)00
          \\(647\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(648\\)0.866025+0.500000<br>i0.866025+0.500000<br>i
          \\(649\\)00
          \\(650\\)00
          \\(651\\)00
          \\(652\\)00
          \\(653\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \\(654\\)00
          \\(655\\)00
          \\(656\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(657\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(658\\)00
          \\(659\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(660\\)00
          \\(661\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(662\\)00
          \\(663\\)00
          \\(664\\)00
          \\(665\\)00
          \\(666\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(667\\)00
          \\(668\\)00
          \\(669\\)00
          \\(670\\)00
          \\(671\\)00
          \\(672\\)00
          \\(673\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(674\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(675\\)00
          \\(676\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(677\\)1.36603+0.366025<br>i1.36603+0.366025<br>i0.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(678\\)00
          \\(679\\)00
          \\(680\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(681\\)00
          \\(682\\)00
          \\(683\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(684\\)00
          \\(685\\)00
          \\(686\\)00
          \\(687\\)00
          \\(688\\)00
          \\(689\\)00
          \\(690\\)00
          \\(691\\)000.258819\u22120.965926<br>i\\(-0.416667\\pi\\)
          \u22120.258819+0.965926<br>i\\(0.583333\\pi\\)
          \\(692\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(693\\)00
          \\(694\\)00
          \\(695\\)00
          \\(696\\)00
          \\(697\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(698\\)00
          \\(699\\)00
          \\(700\\)00
          \\(701\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(702\\)00
          \\(703\\)00
          \\(704\\)00
          \\(705\\)00
          \\(706\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(707\\)00
          \\(708\\)00
          \\(709\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(710\\)00
          \\(711\\)00
          \\(712\\)00
          \\(713\\)00
          \\(714\\)00
          \\(715\\)00
          \\(716\\)00
          \\(717\\)00
          \\(718\\)00
          \\(719\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(720\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(721\\)00
          \\(722\\)1.00000<br>i1.00000<br>i
          \\(723\\)00
          \\(724\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(725\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(726\\)00
          \\(727\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(728\\)00
          \\(729\\)1.00000<br>i1.00000<br>i
          \\(730\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(731\\)00
          \\(732\\)00
          \\(733\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(734\\)00
          \\(735\\)00
          \\(736\\)00
          \\(737\\)00
          \\(738\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(739\\)00\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(740\\)\u22121.73205+1.00000<br>i\u22121.73205+1.00000<br>i
          \\(741\\)00
          \\(742\\)00
          \\(743\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(744\\)00
          \\(745\\)0.732051+2.73205<br>i0.732051+2.73205<br>i
          \\(746\\)00
          \\(747\\)00
          \\(748\\)00
          \\(749\\)00
          \\(750\\)00
          \\(751\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(752\\)00
          \\(753\\)00
          \\(754\\)00
          \\(755\\)00
          \\(756\\)00
          \\(757\\)2.00000<br>i2.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(758\\)00
          \\(759\\)00
          \\(760\\)00
          \\(761\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(762\\)00
          \\(763\\)00
          \\(764\\)00
          \\(765\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(766\\)00
          \\(767\\)00
          \\(768\\)00
          \\(769\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(770\\)00
          \\(771\\)00
          \\(772\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(773\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i\u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \u22120.866025\u22120.500000<br>i\\(-0.833333\\pi\\)
          \\(774\\)00
          \\(775\\)00
          \\(776\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(777\\)00
          \\(778\\)2.000002.00000
          \\(779\\)00
          \\(780\\)00
          \\(781\\)00
          \\(782\\)00
          \\(783\\)00
          \\(784\\)00
          \\(785\\)\u22122.00000+2.00000<br>i\u22122.00000+2.00000<br>i
          \\(786\\)00
          \\(787\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(788\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(789\\)00
          \\(790\\)00
          \\(791\\)00
          \\(792\\)00
          \\(793\\)00
          \\(794\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(795\\)00
          \\(796\\)00
          \\(797\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(798\\)00
          \\(799\\)00
          \\(800\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(801\\)00
          \\(802\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(803\\)00
          \\(804\\)00
          \\(805\\)00
          \\(806\\)00
          \\(807\\)00
          \\(808\\)00
          \\(809\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(810\\)0.366025\u22121.36603<br>i0.366025\u22121.36603<br>i
          \\(811\\)000.707107\u22120.707107<br>i\\(-0.250000\\pi\\)
          \u22120.707107+0.707107<br>i\\(0.750000\\pi\\)
          \\(812\\)00
          \\(813\\)00
          \\(814\\)00
          \\(815\\)00
          \\(816\\)00
          \\(817\\)00
          \\(818\\)\u22122.00000<br>i\u22122.00000<br>i
          \\(819\\)00
          \\(820\\)2.000002.00000
          \\(821\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(822\\)00
          \\(823\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(824\\)00
          \\(825\\)00
          \\(826\\)00
          \\(827\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(828\\)00
          \\(829\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \\(830\\)00
          \\(831\\)00
          \\(832\\)00
          \\(833\\)00
          \\(834\\)00
          \\(835\\)00
          \\(836\\)00
          \\(837\\)00
          \\(838\\)00
          \\(839\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(840\\)00
          \\(841\\)\u22121.00000<br>i\u22121.00000<br>i
          \\(842\\)00
          \\(843\\)00
          \\(844\\)00
          \\(845\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(846\\)00
          \\(847\\)00
          \\(848\\)00
          \\(849\\)00
          \\(850\\)0.500000\u22120.866025<br>i0.500000\u22120.866025<br>i
          \\(851\\)00
          \\(852\\)00
          \\(853\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000\\(0\\)
          \\(854\\)00
          \\(855\\)00
          \\(856\\)00
          \\(857\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(858\\)00
          \\(859\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(860\\)00
          \\(861\\)00
          \\(862\\)00
          \\(863\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(864\\)00
          \\(865\\)\u22121.73205\u22121.00000<br>i\u22121.73205\u22121.00000<br>i
          \\(866\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(867\\)00
          \\(868\\)00
          \\(869\\)00
          \\(870\\)00
          \\(871\\)00
          \\(872\\)0.366025+1.36603<br>i0.366025+1.36603<br>i
          \\(873\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i
          \\(874\\)00
          \\(875\\)00
          \\(876\\)00
          \\(877\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(878\\)00
          \\(879\\)00
          \\(880\\)00
          \\(881\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i1.00000<br>i\\(0.5\\pi\\)
          \u22121.00000\\(\\pi\\)
          \\(882\\)00
          \\(883\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(884\\)00
          \\(885\\)00
          \\(886\\)00
          \\(887\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(888\\)00
          \\(889\\)00
          \\(890\\)00
          \\(891\\)00
          \\(892\\)00
          \\(893\\)00
          \\(894\\)00
          \\(895\\)00
          \\(896\\)00
          \\(897\\)00
          \\(898\\)1.36603+0.366025<br>i1.36603+0.366025<br>i
          \\(899\\)00
          \\(900\\)\u22120.500000+0.866025<br>i\u22120.500000+0.866025<br>i
          \\(901\\)00
          \\(902\\)00
          \\(903\\)00
          \\(904\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(905\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(906\\)00
          \\(907\\)000.965926\u22120.258819<br>i\\(-0.0833333\\pi\\)
          \u22120.965926+0.258819<br>i\\(0.916667\\pi\\)
          \\(908\\)00
          \\(909\\)00
          \\(910\\)00
          \\(911\\)00\u22120.707107\u22120.707107<br>i\\(-0.750000\\pi\\)
          0.707107+0.707107<br>i\\(0.250000\\pi\\)
          \\(912\\)00
          \\(913\\)00
          \\(914\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(915\\)00
          \\(916\\)2.00000<br>i2.00000<br>i
          \\(917\\)00
          \\(918\\)00
          \\(919\\)00\u22120.500000\u22120.866025<br>i\\(-0.666667\\pi\\)
          0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \\(920\\)00
          \\(921\\)00
          \\(922\\)00
          \\(923\\)00
          \\(924\\)00
          \\(925\\)1.00000+1.00000<br>i1.00000+1.00000<br>i
          \\(926\\)00
          \\(927\\)00
          \\(928\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i
          \\(929\\)\u22120.366025+1.36603<br>i\u22120.366025+1.36603<br>i0.500000+0.866025<br>i\\(0.333333\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(930\\)00
          \\(931\\)00
          \\(932\\)1.00000\u22121.00000<br>i1.00000\u22121.00000<br>i
          \\(933\\)00
          \\(934\\)00
          \\(935\\)00
          \\(936\\)00
          \\(937\\)001.00000\\(0\\)
          \u22121.00000\\(\\pi\\)
          \\(938\\)00
          \\(939\\)00
          \\(940\\)00
          \\(941\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(942\\)00
          \\(943\\)00
          \\(944\\)00
          \\(945\\)00
          \\(946\\)00
          \\(947\\)00\u22120.965926\u22120.258819<br>i\\(-0.916667\\pi\\)
          0.965926+0.258819<br>i\\(0.0833333\\pi\\)
          \\(948\\)00
          \\(949\\)00
          \\(950\\)00
          \\(951\\)00
          \\(952\\)00
          \\(953\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(954\\)00
          \\(955\\)00
          \\(956\\)00
          \\(957\\)00
          \\(958\\)00
          \\(959\\)00
          \\(960\\)00
          \\(961\\)\u22120.866025+0.500000<br>i\u22120.866025+0.500000<br>i
          \\(962\\)00
          \\(963\\)00
          \\(964\\)\u22121.36603\u22120.366025<br>i\u22121.36603\u22120.366025<br>i
          \\(965\\)2.000002.00000
          \\(966\\)00
          \\(967\\)00\u22121.00000<br>i\\(-0.5\\pi\\)
          1.00000<br>i\\(0.5\\pi\\)
          \\(968\\)0.500000+0.866025<br>i0.500000+0.866025<br>i
          \\(969\\)00
          \\(970\\)1.00000\u22121.73205<br>i1.00000\u22121.73205<br>i
          \\(971\\)000.866025\u22120.500000<br>i\\(-0.166667\\pi\\)
          \u22120.866025+0.500000<br>i\\(0.833333\\pi\\)
          \\(972\\)00
          \\(973\\)00
          \\(974\\)00
          \\(975\\)00
          \\(976\\)\u22121.36603+0.366025<br>i\u22121.36603+0.366025<br>i
          \\(977\\)000.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          \u22120.500000+0.866025<br>i\\(0.666667\\pi\\)
          \\(978\\)00
          \\(979\\)00
          \\(980\\)00
          \\(981\\)\u22121.00000+1.00000<br>i\u22121.00000+1.00000<br>i
          \\(982\\)00
          \\(983\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(984\\)00
          \\(985\\)\u22121.00000\u22121.73205<br>i\u22121.00000\u22121.73205<br>i
          \\(986\\)\u22121.00000\u22121.00000<br>i\u22121.00000\u22121.00000<br>i
          \\(987\\)00
          \\(988\\)00
          \\(989\\)00
          \\(990\\)00
          \\(991\\)00\u22120.258819\u22120.965926<br>i\\(-0.583333\\pi\\)
          0.258819+0.965926<br>i\\(0.416667\\pi\\)
          \\(992\\)00
          \\(993\\)00
          \\(994\\)00
          \\(995\\)00
          \\(996\\)00
          \\(997\\)1.36603\u22120.366025<br>i1.36603\u22120.366025<br>i0.500000\u22120.866025<br>i\\(-0.333333\\pi\\)
          0.866025+0.500000<br>i\\(0.166667\\pi\\)
          \\(998\\)00
          \\(999\\)00
          \n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See \\(a_n\\) instead)\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n( See only \\(a_p\\))\n\n
          By<br>twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.1&check;2
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.1&check;2
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          \n\n
          By<br>twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.1&check;2119.115odd12
          68.1.f.a.47.1&check;2476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          \n", "html": "\n\n\n \n \n \n \n LMFDB - Embedded newform 3332.1.bc.b.2027.1 \n \n\n \n \n \n \n \n\n \n \n\n\n\n\n \n\n \n \n\n \n \n\n\n \n \n \n \n \n \n\n\n\n\n\n \n \n\n
          \n \n
          \n
          \n \n
          \n \n
          \n Citation\n ·\n Feedback\n ·\n Hide Menu\n \n
          \n
          \n\n
          \n
          Embedded newform 3332.1.bc.b.2027.1
          \n\n
          \n
          \n\n\n\n\n\n
          \n
          \n

          Properties

          \n
          \n \n
          Label\n 3332.1.bc.b.2027.1
          \n
          Level\n $3332$
          Weight\n $1$
          Character\n 3332.2027
          Analytic conductor\n $1.663$
          Analytic rank\n $0$
          Dimension\n $4$
          Projective image\n $D_{4}$
          CM discriminant\n -4
          Inner twists\n $8$
          \n
          \n\n\n\n

          Related objects

          \n \n\n\n\n

          Downloads

          \n \n\n

          Learn more

          \n \n\n
          \n
          \n
          \n
          \n
          \n \n
          \n Show commands:\n Magma\n / PariGP\n / SageMath\n
          \n\n\n\n\n

          Newspace parameters

          \n\n
          comment: Compute space of new eigenforms
           
          \n
          [N,k,chi] = [3332,1,Mod(667,3332)]
           
          mf = mfinit([N,k,chi],0)
           
          lf = mfeigenbasis(mf)
           
          \n
          from sage.modular.dirichlet import DirichletCharacter
           
          H = DirichletGroup(3332, base_ring=CyclotomicField(12))
           
          chi = DirichletCharacter(H, H._module([6, 4, 9]))
           
          N = Newforms(chi, 1, names="a")
           
          \n
          //Please install CHIMP (https://github.com/edgarcosta/CHIMP) if you want to run this code
           
          chi := DirichletCharacter("3332.667");
           
          S:= CuspForms(chi, 1);
           
          N := Newforms(S);
           
          \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Level: \\( N \\) \\(=\\)\\( 3332 = 2^{2} \\cdot 7^{2} \\cdot 17 \\)
          Weight: \\( k \\) \\(=\\)\\( 1 \\)
          Character orbit: \\([\\chi]\\) \\(=\\) 3332.bc (of order \\(12\\), degree \\(4\\), not minimal)
          \n\n

          Newform invariants

          \n\n
          comment: select newform
           
          \n
          sage: f = N[0] # Warning: the index may be different
           
          \n
          gp: f = lf[1] \\\\ Warning: the index may be different
           
          \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t\n \n \t\n \t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Self dual: no
          Analytic conductor: \\(1.66288462209\\)
          Analytic rank: \\(0\\)
          Dimension: \\(4\\)
          Coefficient field: \\(\\Q(\\zeta_{12})\\)
          \n
          comment: defining polynomial
           
          \n
          gp: f.mod \\\\ as an extension of the character field
           
          \n\n
          Defining polynomial: \n\n \\( x^{4} - x^{2} + 1 \\)\n \n\n \n \"Copy\n \n \n \"Toggle\n \n
          Coefficient ring: \\(\\Z[a_1, a_2]\\)
          Coefficient ring index: \\( 1 \\)
          Twist minimal: no (minimal twist has level 68)
          Projective image:\\(D_{4}\\)
          Projective field:Galois closure of 4.2.19652.1
          Artin image:$C_4\\wr C_2\\times C_6$
          Artin field:Galois closure of \\(\\mathbb{Q}[x]/(x^{48} - \\cdots)\\)
          \n\n\n

          Embedding invariants

          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          Embedding label 2027.1
          Root\\(0.866025 - 0.500000i\\) of defining polynomial
          Character\\(\\chi\\)\\(=\\)3332.2027
          Dual form 3332.1.bc.b.863.1
          \n\n\n

          $q$-expansion

          \n
          \n
          comment: q-expansion
           
          \n
          sage: f.q_expansion() # note that sage often uses an isomorphic number field
           
          \n
          gp: mfcoefs(f, 20)
           
          \n\n
          \n \n \n \n \n \n \n \n \n \n \n \n
          \\(f(q)\\)\\(=\\)\\(q+(-0.866025 + 0.500000i) q^{2} +(0.500000 - 0.866025i) q^{4} +(-1.36603 - 0.366025i) q^{5} +1.00000i q^{8} +(-0.866025 + 0.500000i) q^{9} +(1.36603 - 0.366025i) q^{10} +(-0.500000 - 0.866025i) q^{16} +(-0.500000 + 0.866025i) q^{17} +(0.500000 - 0.866025i) q^{18} +(-1.00000 + 1.00000i) q^{20} +(0.866025 + 0.500000i) q^{25} +(1.00000 - 1.00000i) q^{29} +(0.866025 + 0.500000i) q^{32} -1.00000i q^{34} +1.00000i q^{36} +(1.36603 + 0.366025i) q^{37} +(0.366025 - 1.36603i) q^{40} +(-1.00000 - 1.00000i) q^{41} +(1.36603 - 0.366025i) q^{45} -1.00000 q^{50} +(-0.366025 + 1.36603i) q^{58} +(0.366025 - 1.36603i) q^{61} -1.00000 q^{64} +(0.500000 + 0.866025i) q^{68} +(-0.500000 - 0.866025i) q^{72} +(-0.366025 - 1.36603i) q^{73} +(-1.36603 + 0.366025i) q^{74} +(0.366025 + 1.36603i) q^{80} +(0.500000 - 0.866025i) q^{81} +(1.36603 + 0.366025i) q^{82} +(1.00000 - 1.00000i) q^{85} +(-1.00000 + 1.00000i) q^{90} +(1.00000 - 1.00000i) q^{97} +O(q^{100})\\)
          \\(\\operatorname{Tr}(f)(q)\\)\\(=\\)\n\n \\( 4 q + 2 q^{4} - 2 q^{5} + 2 q^{10} - 2 q^{16} - 2 q^{17} + 2 q^{18} - 4 q^{20} + 4 q^{29} + 2 q^{37} - 2 q^{40} - 4 q^{41} + 2 q^{45} - 4 q^{50} + 2 q^{58} - 2 q^{61} - 4 q^{64} + 2 q^{68} - 2 q^{72} + 2 q^{73}+ \\cdots + 4 q^{97}+O(q^{100}) \\)\n \n\n \n \"Copy\n \n \n \"Toggle\n \n
          \n
          \n\n
          \n\n\n

          Character values

          \n

          We give the values of \\(\\chi\\) on generators for \\(\\left(\\mathbb{Z}/3332\\mathbb{Z}\\right)^\\times\\).

          \n\n \n \n \n \n \n \n \n \n \n \n \n \n
          \\(n\\)\\(785\\)\\(885\\)\\(1667\\)
          \\(\\chi(n)\\)\\(e\\left(\\frac{3}{4}\\right)\\)\\(e\\left(\\frac{2}{3}\\right)\\)\\(-1\\)
          \n\n\n

          Coefficient data

          \n\n

          For each \\(n\\) we display the coefficients of the \\(q\\)-expansion \\(a_n\\), the\nSatake parameters \\(\\alpha_p\\),\nand the Satake angles \\(\\theta_p = \\textrm{Arg}(\\alpha_p)\\).

          \n\n\n\n\n

          \n
          \n \n Display \\(a_p\\) with \\(p\\) up to:\n 50\n 250\n 1000\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n \n Display \\(a_n\\) with \\(n\\) up to:\n 50\n 250\n 1000\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n
          \n\n\n
          \n \n \n \n \n \n \n
          Significant digits:
          \n
          \n\n
          \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n
          \n \\(n\\)\n \n \\(a_n\\)\n \n \\(a_n / n^{(k-1)/2}\\)\n \n \\( \\alpha_n \\)\n \n \\( \\theta_n \\)\n
          \n \\(p\\)\n \n \\(a_p\\)\n \n \\(a_p / p^{(k-1)/2}\\)\n \n \\( \\alpha_p\\)\n \n \\( \\theta_p \\)\n
          \n \\(2\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(3\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(4\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(5\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(6\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(7\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(8\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(9\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(10\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(11\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(12\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(13\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(14\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(15\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(16\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(17\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n \n\n \n\n \n\n \n\n
          \n\n \n\n \n\n \n\n
          \n \\(18\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(19\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(20\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(21\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(22\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(23\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(24\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(25\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(26\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(27\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(28\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(29\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(30\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(31\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(32\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(33\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(34\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(35\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(36\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(37\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(38\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(39\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(40\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(41\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(42\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(43\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(44\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(45\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(46\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(47\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(48\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(49\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(50\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(51\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(52\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(53\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(54\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(55\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(56\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(57\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(58\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(59\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(60\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(61\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(62\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(63\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(64\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(65\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(66\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(67\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(68\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(69\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(70\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(71\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(72\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(73\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(74\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(75\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(76\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(77\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(78\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(79\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(80\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(81\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(82\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(83\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(84\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(85\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(86\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(87\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(88\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(89\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(90\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(91\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(92\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(93\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(94\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(95\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(96\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(97\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(98\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(99\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(100\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(101\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(102\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(103\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(104\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(105\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(106\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(107\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(108\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(109\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(110\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(111\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(112\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(113\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(114\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(115\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(116\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(117\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(118\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(119\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(120\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(121\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(122\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(123\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(124\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(125\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(126\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(127\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(128\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(129\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(130\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(131\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(132\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(133\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(134\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(135\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(136\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(137\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(138\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(139\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(140\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(141\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(142\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(143\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(144\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(145\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(146\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(147\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(148\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(149\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n \\(150\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(151\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(152\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(153\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(154\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(155\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(156\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(157\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(158\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(159\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(160\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(161\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(162\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(163\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(164\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(165\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(166\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(167\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(168\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(169\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(170\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(171\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(172\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(173\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(174\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(175\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(176\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(177\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(178\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(179\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(180\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(181\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(182\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(183\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(184\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(185\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(186\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(187\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(188\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(189\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(190\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(191\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(192\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(193\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(194\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(195\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(196\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(197\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(198\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(199\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(200\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(201\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(202\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(203\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(204\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(205\\)\n \n 1.00000\n \n +\n \n 1.73205i\n \n 1.00000\n \n +\n \n 1.73205i\n
          \n \\(206\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(207\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(208\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(209\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(210\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(211\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(212\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(213\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(214\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(215\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(216\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(217\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(218\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(219\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(220\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(221\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(222\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(223\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(224\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(225\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(226\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(227\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(228\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(229\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(230\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(231\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(232\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(233\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(234\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(235\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(236\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(237\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(238\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(239\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(240\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(241\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(242\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(243\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(244\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(245\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(246\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(247\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(248\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(249\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(250\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(251\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(252\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(253\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(254\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(255\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(256\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(257\\)\n \n 1.73205\n \n −\n \n 1.00000i\n \n 1.73205\n \n −\n \n 1.00000i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(258\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(259\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(260\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(261\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(262\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(263\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(264\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(265\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(266\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(267\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(268\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(269\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(270\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(271\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(272\\)\n \n 1.00000\n \n\n \n\n \n 1.00000\n \n\n \n\n
          \n \\(273\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(274\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(275\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(276\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(277\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(278\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(279\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(280\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(281\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(282\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(283\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(284\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(285\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(286\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(287\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(288\\)\n \n −1.00000\n \n\n \n\n \n −1.00000\n \n\n \n\n
          \n \\(289\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(290\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(291\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(292\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(293\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(294\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(295\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(296\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(297\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(298\\)\n \n 1.73205\n \n +\n \n 1.00000i\n \n 1.73205\n \n +\n \n 1.00000i\n
          \n \\(299\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(300\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(301\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(302\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(303\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(304\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(305\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n
          \n \\(306\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(307\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(308\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(309\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(310\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(311\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(312\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(313\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(314\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(315\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(316\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(317\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(318\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(319\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(320\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(321\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(322\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(323\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(324\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(325\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(326\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(327\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(328\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(329\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(330\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(331\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(332\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(333\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(334\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(335\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(336\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(337\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(338\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(339\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(340\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(341\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(342\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(343\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(344\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(345\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(346\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(347\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(348\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(349\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(350\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(351\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(352\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(353\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(354\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(355\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(356\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(357\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(358\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(359\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(360\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(361\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(362\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(363\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(364\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(365\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(366\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(367\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(368\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(369\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(370\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(371\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(372\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(373\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(374\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(375\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(376\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(377\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(378\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(379\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(380\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(381\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(382\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(383\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(384\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(385\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(386\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(387\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(388\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(389\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n \\(390\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(391\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(392\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(393\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(394\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(395\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(396\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(397\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(398\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(399\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(400\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(401\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(402\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(403\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(404\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(405\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(406\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(407\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(408\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(409\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(410\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(411\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(412\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(413\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(414\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(415\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(416\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(417\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(418\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(419\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(420\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(421\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(422\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(423\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(424\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(425\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(426\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(427\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(428\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(429\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(430\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(431\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(432\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(433\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(434\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(435\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(436\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(437\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(438\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(439\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(440\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(441\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(442\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(443\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(444\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(445\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(446\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(447\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(448\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(449\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(450\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(451\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(452\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(453\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(454\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(455\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(456\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(457\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(458\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(459\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(460\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(461\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(462\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(463\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(464\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(465\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(466\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(467\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(468\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(469\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(470\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(471\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(472\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(473\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(474\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(475\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(476\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(477\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(478\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(479\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(480\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(481\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(482\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(483\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(484\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(485\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(486\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(487\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(488\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(489\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(490\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(491\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(492\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(493\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(494\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(495\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(496\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(497\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(498\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(499\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(500\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(501\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(502\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(503\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(504\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(505\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(506\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(507\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(508\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(509\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n \\(510\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(511\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(512\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(513\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(514\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n
          \n \\(515\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(516\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(517\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(518\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(519\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(520\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(521\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(522\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(523\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(524\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(525\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(526\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(527\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(528\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(529\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(530\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(531\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(532\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(533\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(534\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(535\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(536\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(537\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(538\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(539\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(540\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(541\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(542\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(543\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(544\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(545\\)\n \n −2.00000\n \n\n \n\n \n −2.00000\n \n\n \n\n
          \n \\(546\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(547\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(548\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(549\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(550\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(551\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(552\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(553\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(554\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(555\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(556\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(557\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(558\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(559\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(560\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(561\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(562\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(563\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(564\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(565\\)\n \n 1.00000\n \n +\n \n 1.73205i\n \n 1.00000\n \n +\n \n 1.73205i\n
          \n \\(566\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(567\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(568\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(569\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(570\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(571\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(572\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(573\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(574\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(575\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(576\\)\n \n 0.866025\n \n −\n \n 0.500000i\n \n 0.866025\n \n −\n \n 0.500000i\n
          \n \\(577\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(578\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(579\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(580\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(581\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(582\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(583\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(584\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(585\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(586\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(587\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(588\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(589\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(590\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(591\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(592\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(593\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(594\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(595\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(596\\)\n \n −2.00000\n \n\n \n\n \n −2.00000\n \n\n \n\n
          \n \\(597\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(598\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(599\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(600\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(601\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(602\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(603\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(604\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(605\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(606\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(607\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(608\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(609\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(610\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(611\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(612\\)\n \n −0.866025\n \n −\n \n 0.500000i\n \n −0.866025\n \n −\n \n 0.500000i\n
          \n \\(613\\)\n \n −1.00000\n \n +\n \n 1.73205i\n \n −1.00000\n \n +\n \n 1.73205i\n \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(614\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(615\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(616\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(617\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(618\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(619\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(620\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(621\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(622\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(623\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(624\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(625\\)\n \n −0.500000\n \n −\n \n 0.866025i\n \n −0.500000\n \n −\n \n 0.866025i\n
          \n \\(626\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n
          \n \\(627\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(628\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(629\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(630\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(631\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(632\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(633\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(634\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(635\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(636\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(637\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(638\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(639\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(640\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(641\\)\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.366025\n \n −\n \n 1.36603i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(642\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(643\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(644\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(645\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(646\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(647\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(648\\)\n \n 0.866025\n \n +\n \n 0.500000i\n \n 0.866025\n \n +\n \n 0.500000i\n
          \n \\(649\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(650\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(651\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(652\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(653\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n \\(654\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(655\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(656\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(657\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(658\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(659\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(660\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(661\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(662\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(663\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(664\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(665\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(666\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(667\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(668\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(669\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(670\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(671\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(672\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(673\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(674\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(675\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(676\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(677\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(678\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(679\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(680\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(681\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(682\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(683\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(684\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(685\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(686\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(687\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(688\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(689\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(690\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(691\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.258819\n \n −\n \n 0.965926i\n \n \\(-0.416667\\pi\\)\n
          \n −0.258819\n \n +\n \n 0.965926i\n \n \\(0.583333\\pi\\)\n
          \n \\(692\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(693\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(694\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(695\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(696\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(697\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(698\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(699\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(700\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(701\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(702\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(703\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(704\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(705\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(706\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(707\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(708\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(709\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(710\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(711\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(712\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(713\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(714\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(715\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(716\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(717\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(718\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(719\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(720\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(721\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(722\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(723\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(724\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(725\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(726\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(727\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(728\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(729\\)\n \n\n \n\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n
          \n \\(730\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(731\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(732\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(733\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(734\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(735\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(736\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(737\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(738\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(739\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(740\\)\n \n −1.73205\n \n +\n \n 1.00000i\n \n −1.73205\n \n +\n \n 1.00000i\n
          \n \\(741\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(742\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(743\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(744\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(745\\)\n \n 0.732051\n \n +\n \n 2.73205i\n \n 0.732051\n \n +\n \n 2.73205i\n
          \n \\(746\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(747\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(748\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(749\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(750\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(751\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(752\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(753\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(754\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(755\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(756\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(757\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(758\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(759\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(760\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(761\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(762\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(763\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(764\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(765\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(766\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(767\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(768\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(769\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(770\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(771\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(772\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(773\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n −0.866025\n \n −\n \n 0.500000i\n \n \\(-0.833333\\pi\\)\n
          \n \\(774\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(775\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(776\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(777\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(778\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(779\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(780\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(781\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(782\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(783\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(784\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(785\\)\n \n −2.00000\n \n +\n \n 2.00000i\n \n −2.00000\n \n +\n \n 2.00000i\n
          \n \\(786\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(787\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(788\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(789\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(790\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(791\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(792\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(793\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(794\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(795\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(796\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(797\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(798\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(799\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(800\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(801\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(802\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(803\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(804\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(805\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(806\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(807\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(808\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(809\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(810\\)\n \n 0.366025\n \n −\n \n 1.36603i\n \n 0.366025\n \n −\n \n 1.36603i\n
          \n \\(811\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.707107\n \n −\n \n 0.707107i\n \n \\(-0.250000\\pi\\)\n
          \n −0.707107\n \n +\n \n 0.707107i\n \n \\(0.750000\\pi\\)\n
          \n \\(812\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(813\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(814\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(815\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(816\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(817\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(818\\)\n \n\n \n −\n \n 2.00000i\n \n\n \n −\n \n 2.00000i\n
          \n \\(819\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(820\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(821\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(822\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(823\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(824\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(825\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(826\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(827\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(828\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(829\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n \\(830\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(831\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(832\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(833\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(834\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(835\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(836\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(837\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(838\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(839\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(840\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(841\\)\n \n\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n
          \n \\(842\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(843\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(844\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(845\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(846\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(847\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(848\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(849\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(850\\)\n \n 0.500000\n \n −\n \n 0.866025i\n \n 0.500000\n \n −\n \n 0.866025i\n
          \n \\(851\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(852\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(853\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n \\(854\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(855\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(856\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(857\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(858\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(859\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(860\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(861\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(862\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(863\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(864\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(865\\)\n \n −1.73205\n \n −\n \n 1.00000i\n \n −1.73205\n \n −\n \n 1.00000i\n
          \n \\(866\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(867\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(868\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(869\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(870\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(871\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(872\\)\n \n 0.366025\n \n +\n \n 1.36603i\n \n 0.366025\n \n +\n \n 1.36603i\n
          \n \\(873\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n
          \n \\(874\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(875\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(876\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(877\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(878\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(879\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(880\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(881\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(882\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(883\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(884\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(885\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(886\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(887\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(888\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(889\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(890\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(891\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(892\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(893\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(894\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(895\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(896\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(897\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(898\\)\n \n 1.36603\n \n +\n \n 0.366025i\n \n 1.36603\n \n +\n \n 0.366025i\n
          \n \\(899\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(900\\)\n \n −0.500000\n \n +\n \n 0.866025i\n \n −0.500000\n \n +\n \n 0.866025i\n
          \n \\(901\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(902\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(903\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(904\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(905\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(906\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(907\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.965926\n \n −\n \n 0.258819i\n \n \\(-0.0833333\\pi\\)\n
          \n −0.965926\n \n +\n \n 0.258819i\n \n \\(0.916667\\pi\\)\n
          \n \\(908\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(909\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(910\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(911\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.707107\n \n −\n \n 0.707107i\n \n \\(-0.750000\\pi\\)\n
          \n 0.707107\n \n +\n \n 0.707107i\n \n \\(0.250000\\pi\\)\n
          \n \\(912\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(913\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(914\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(915\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(916\\)\n \n\n \n\n \n 2.00000i\n \n\n \n\n \n 2.00000i\n
          \n \\(917\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(918\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(919\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.500000\n \n −\n \n 0.866025i\n \n \\(-0.666667\\pi\\)\n
          \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n \\(920\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(921\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(922\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(923\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(924\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(925\\)\n \n 1.00000\n \n +\n \n 1.00000i\n \n 1.00000\n \n +\n \n 1.00000i\n
          \n \\(926\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(927\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(928\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n
          \n \\(929\\)\n \n −0.366025\n \n +\n \n 1.36603i\n \n −0.366025\n \n +\n \n 1.36603i\n \n 0.500000\n \n +\n \n 0.866025i\n \n \\(0.333333\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(930\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(931\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(932\\)\n \n 1.00000\n \n −\n \n 1.00000i\n \n 1.00000\n \n −\n \n 1.00000i\n
          \n \\(933\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(934\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(935\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(936\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(937\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 1.00000\n \n\n \n\n \n \\(0\\)\n
          \n −1.00000\n \n\n \n\n \n \\(\\pi\\)\n
          \n \\(938\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(939\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(940\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(941\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(942\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(943\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(944\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(945\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(946\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(947\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.965926\n \n −\n \n 0.258819i\n \n \\(-0.916667\\pi\\)\n
          \n 0.965926\n \n +\n \n 0.258819i\n \n \\(0.0833333\\pi\\)\n
          \n \\(948\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(949\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(950\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(951\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(952\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(953\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(954\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(955\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(956\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(957\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(958\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(959\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(960\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(961\\)\n \n −0.866025\n \n +\n \n 0.500000i\n \n −0.866025\n \n +\n \n 0.500000i\n
          \n \\(962\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(963\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(964\\)\n \n −1.36603\n \n −\n \n 0.366025i\n \n −1.36603\n \n −\n \n 0.366025i\n
          \n \\(965\\)\n \n 2.00000\n \n\n \n\n \n 2.00000\n \n\n \n\n
          \n \\(966\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(967\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n\n \n −\n \n 1.00000i\n \n \\(-0.5\\pi\\)\n
          \n\n \n\n \n 1.00000i\n \n \\(0.5\\pi\\)\n
          \n \\(968\\)\n \n 0.500000\n \n +\n \n 0.866025i\n \n 0.500000\n \n +\n \n 0.866025i\n
          \n \\(969\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(970\\)\n \n 1.00000\n \n −\n \n 1.73205i\n \n 1.00000\n \n −\n \n 1.73205i\n
          \n \\(971\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.866025\n \n −\n \n 0.500000i\n \n \\(-0.166667\\pi\\)\n
          \n −0.866025\n \n +\n \n 0.500000i\n \n \\(0.833333\\pi\\)\n
          \n \\(972\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(973\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(974\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(975\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(976\\)\n \n −1.36603\n \n +\n \n 0.366025i\n \n −1.36603\n \n +\n \n 0.366025i\n
          \n \\(977\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n −0.500000\n \n +\n \n 0.866025i\n \n \\(0.666667\\pi\\)\n
          \n \\(978\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(979\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(980\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(981\\)\n \n −1.00000\n \n +\n \n 1.00000i\n \n −1.00000\n \n +\n \n 1.00000i\n
          \n \\(982\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(983\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(984\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(985\\)\n \n −1.00000\n \n −\n \n 1.73205i\n \n −1.00000\n \n −\n \n 1.73205i\n
          \n \\(986\\)\n \n −1.00000\n \n −\n \n 1.00000i\n \n −1.00000\n \n −\n \n 1.00000i\n
          \n \\(987\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(988\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(989\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(990\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(991\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n \n −0.258819\n \n −\n \n 0.965926i\n \n \\(-0.583333\\pi\\)\n
          \n 0.258819\n \n +\n \n 0.965926i\n \n \\(0.416667\\pi\\)\n
          \n \\(992\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(993\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(994\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(995\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(996\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(997\\)\n \n 1.36603\n \n −\n \n 0.366025i\n \n 1.36603\n \n −\n \n 0.366025i\n \n 0.500000\n \n −\n \n 0.866025i\n \n \\(-0.333333\\pi\\)\n
          \n 0.866025\n \n +\n \n 0.500000i\n \n \\(0.166667\\pi\\)\n
          \n \\(998\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n \\(999\\)\n \n\n \n 0\n \n\n \n\n \n 0\n \n\n
          \n
          \n
          \n \n Display \\(a_p\\) with \\(p\\) up to:\n 50\n 250\n 1000\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n\n \n (See \\(a_n\\) instead)\n \n \n Display \\(a_n\\) with \\(n\\) up to:\n 50\n 250\n 1000\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n\n \n (See only \\(a_p\\))\n \n
          \n\n\n

          Twists

          \n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
                 By twisting character
          CharParityOrdTypeTwistMinDim
          1.1even1trivial3332.1.bc.b.2027.14
          4.3odd2CM3332.1.bc.b.2027.14
          7.2even3inner3332.1.bc.b.667.14
          7.3odd668.1.f.a.55.1yes2
          7.4even33332.1.m.b.2843.12
          7.5odd63332.1.bc.c.667.14
          7.6odd23332.1.bc.c.2027.14
          17.13even4inner3332.1.bc.b.2223.14
          21.17even6612.1.l.a.55.12
          28.3even668.1.f.a.55.1yes2
          28.11odd63332.1.m.b.2843.12
          28.19even63332.1.bc.c.667.14
          28.23odd6inner3332.1.bc.b.667.14
          28.27even23332.1.bc.c.2027.14
          35.3even121700.1.n.a.599.12
          35.17even121700.1.n.b.599.12
          35.24odd61700.1.p.a.1551.12
          56.3even61088.1.p.a.191.12
          56.45odd61088.1.p.a.191.12
          68.47odd4inner3332.1.bc.b.2223.14
          84.59odd6612.1.l.a.55.12
          119.3even481156.1.g.b.155.18
          119.10even481156.1.g.b.179.18
          119.13odd43332.1.bc.c.2223.14
          119.24even481156.1.g.b.179.28
          119.30even12inner3332.1.bc.b.863.14
          119.31even481156.1.g.b.155.28
          119.38odd121156.1.f.b.251.12
          119.45even481156.1.g.b.399.18
          119.47odd123332.1.bc.c.863.14
          119.59odd241156.1.c.b.579.12
          119.66odd241156.1.d.a.1155.22
          119.73even481156.1.g.b.423.28
          119.80even481156.1.g.b.423.18
          119.81even123332.1.m.b.3039.12
          119.87odd241156.1.d.a.1155.12
          119.94odd241156.1.c.b.579.22
          119.101odd61156.1.f.b.327.12
          119.108even481156.1.g.b.399.28
          119.115odd1268.1.f.a.47.12
          140.3odd121700.1.n.a.599.12
          140.59even61700.1.p.a.1551.12
          140.87odd121700.1.n.b.599.12
          357.353even12612.1.l.a.523.12
          476.3odd481156.1.g.b.155.18
          476.31odd481156.1.g.b.155.28
          476.47even123332.1.bc.c.863.14
          476.59even241156.1.c.b.579.12
          476.87even241156.1.d.a.1155.12
          476.115even1268.1.f.a.47.12
          476.143odd481156.1.g.b.179.28
          476.199odd481156.1.g.b.423.18
          476.227odd481156.1.g.b.399.28
          476.251even43332.1.bc.c.2223.14
          476.283odd481156.1.g.b.399.18
          476.311odd481156.1.g.b.423.28
          476.319odd123332.1.m.b.3039.12
          476.339even61156.1.f.b.327.12
          476.367odd481156.1.g.b.179.18
          476.387odd12inner3332.1.bc.b.863.14
          476.395even121156.1.f.b.251.12
          476.423even241156.1.d.a.1155.22
          476.451even241156.1.c.b.579.22
          595.234odd121700.1.p.a.251.12
          595.353even121700.1.n.b.999.12
          595.472even121700.1.n.a.999.12
          952.115even121088.1.p.a.319.12
          952.829odd121088.1.p.a.319.12
          1428.1067odd12612.1.l.a.523.12
          2380.1067odd121700.1.n.a.999.12
          2380.1543odd121700.1.n.b.999.12
          2380.2019even121700.1.p.a.251.12
          \n
              
          \n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
                  By twisted newform
          TwistMinDimCharParityOrdType
          68.1.f.a.47.12119.115odd12
          68.1.f.a.47.12476.115even12
          68.1.f.a.55.1yes27.3odd6
          68.1.f.a.55.1yes228.3even6
          612.1.l.a.55.1221.17even6
          612.1.l.a.55.1284.59odd6
          612.1.l.a.523.12357.353even12
          612.1.l.a.523.121428.1067odd12
          1088.1.p.a.191.1256.3even6
          1088.1.p.a.191.1256.45odd6
          1088.1.p.a.319.12952.115even12
          1088.1.p.a.319.12952.829odd12
          1156.1.c.b.579.12119.59odd24
          1156.1.c.b.579.12476.59even24
          1156.1.c.b.579.22119.94odd24
          1156.1.c.b.579.22476.451even24
          1156.1.d.a.1155.12119.87odd24
          1156.1.d.a.1155.12476.87even24
          1156.1.d.a.1155.22119.66odd24
          1156.1.d.a.1155.22476.423even24
          1156.1.f.b.251.12119.38odd12
          1156.1.f.b.251.12476.395even12
          1156.1.f.b.327.12119.101odd6
          1156.1.f.b.327.12476.339even6
          1156.1.g.b.155.18119.3even48
          1156.1.g.b.155.18476.3odd48
          1156.1.g.b.155.28119.31even48
          1156.1.g.b.155.28476.31odd48
          1156.1.g.b.179.18119.10even48
          1156.1.g.b.179.18476.367odd48
          1156.1.g.b.179.28119.24even48
          1156.1.g.b.179.28476.143odd48
          1156.1.g.b.399.18119.45even48
          1156.1.g.b.399.18476.283odd48
          1156.1.g.b.399.28119.108even48
          1156.1.g.b.399.28476.227odd48
          1156.1.g.b.423.18119.80even48
          1156.1.g.b.423.18476.199odd48
          1156.1.g.b.423.28119.73even48
          1156.1.g.b.423.28476.311odd48
          1700.1.n.a.599.1235.3even12
          1700.1.n.a.599.12140.3odd12
          1700.1.n.a.999.12595.472even12
          1700.1.n.a.999.122380.1067odd12
          1700.1.n.b.599.1235.17even12
          1700.1.n.b.599.12140.87odd12
          1700.1.n.b.999.12595.353even12
          1700.1.n.b.999.122380.1543odd12
          1700.1.p.a.251.12595.234odd12
          1700.1.p.a.251.122380.2019even12
          1700.1.p.a.1551.1235.24odd6
          1700.1.p.a.1551.12140.59even6
          3332.1.m.b.2843.127.4even3
          3332.1.m.b.2843.1228.11odd6
          3332.1.m.b.3039.12119.81even12
          3332.1.m.b.3039.12476.319odd12
          3332.1.bc.b.667.147.2even3inner
          3332.1.bc.b.667.1428.23odd6inner
          3332.1.bc.b.863.14119.30even12inner
          3332.1.bc.b.863.14476.387odd12inner
          3332.1.bc.b.2027.141.1even1trivial
          3332.1.bc.b.2027.144.3odd2CM
          3332.1.bc.b.2223.1417.13even4inner
          3332.1.bc.b.2223.1468.47odd4inner
          3332.1.bc.c.667.147.5odd6
          3332.1.bc.c.667.1428.19even6
          3332.1.bc.c.863.14119.47odd12
          3332.1.bc.c.863.14476.47even12
          3332.1.bc.c.2027.147.6odd2
          3332.1.bc.c.2027.1428.27even2
          3332.1.bc.c.2223.14119.13odd4
          3332.1.bc.c.2223.14476.251even4
          \n
          \n\n\n\n

          \n
          \n
          \n\n\n
          \n\n

          This project is supported by grants from the US National Science Foundation, the UK Engineering and Physical Sciences Research Council, and the Simons Foundation.

          \n
          \n Contact\n ·\n Citation\n ·\n Acknowledgments\n ·\n Editorial Board\n ·\n Source\n ·\n SageMath version 10.1\n ·\n LMFDB Release 1.2.1\n
          \n
          \n\n"} diff --git a/bench/data/groundtruth/math_mathhelpforum_1.jsonl b/bench/data/groundtruth/math_mathhelpforum_1.jsonl new file mode 100644 index 00000000..46c399be --- /dev/null +++ b/bench/data/groundtruth/math_mathhelpforum_1.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "title", "raw_content": "

          \n\t\t\t\t\tintegral question..\n\t\t\t\t

          ", "content": {"title_content": "integral question..", "level": "2"}}, {"type": "equation-interline", "raw_content": "\"<br", "content": {"math_content": "
          \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
          ", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\"<br", "content": {"math_content": "
          \nz=\\frac{1}{2}\\tan x\\\\
          ", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\"<br", "content": {"math_content": "
          \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
          ", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \nwhat to do next??\n\t\t\t\t\t\t
          ", "content": [{"c": "what to do next??", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\t\t\t\ti am not using sec
          \nonly sin cos tan cot

          \nits very complicated and with sec
          \nso if i will put sec=1/cos then i ll get a very complicated expression
          \nis there an easier way??\n\t\t\t\t\t\t
          ", "content": [{"c": "i am not using sec only sin cos tan cot its very complicated and with sec so if i will put sec=1/cos then i ll get a very complicated expression is there an easier way??", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\n\t\t\t\tis there an easier way??\n\n\t\t
          You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square,
          ", "content": [{"c": "is there an easier way?? You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"z will work here.", "content": {"math_content": "z = \\frac{1}{2}\\sinh \\theta", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          will work here.

          ", "content": [{"c": "will work here.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"z", "content": {"math_content": "z = \\frac{1}{2}\\sinh \\theta \\implies dz = \\frac{1}{2}\\cosh\\theta\\, d\\theta", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


          \nSo

          ", "content": [{"c": "So", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"I", "content": {"math_content": "I = \\int\\frac{\\frac{1}{2}\\cosh\\theta \\, d\\theta}{\\sqrt{\\left(\\frac{1}{2}\\right)^2+\\left(\\f rac{1}{2}\\right)^2\\sinh\\theta}} = \\int d\\theta = \\theta + C", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


          \nWe need to write this in terms of our original variable so

          ", "content": [{"c": "We need to write this in terms of our original variable so", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"z", "content": {"math_content": "z = \\frac{1}{2}\\sinh\\theta \\implies \\theta = \\sinh^{-1}(2z)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


          \nSo

          ", "content": [{"c": "So", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"I", "content": {"math_content": "I = \\sinh^{-1}(2z) + C", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


          \nThis is also the answer maxima gives to the integral
          ", "content": [{"c": "This is also the answer maxima gives to the integral", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "http://mathhelpforum.com/images/smilies/smile.png", "data": null, "alt": null, "title": "Smile", "caption": null}}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\t\t\t\ti cant use hyperbolic function\n\t\t\t\t\t\t
          ", "content": [{"c": "i cant use hyperbolic function", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\t\t\t\tWhy not?

          \nWell if that's really the case then the substitution reduces your original integral to

          ", "content": [{"c": "Why not? Well if that's really the case then the substitution reduces your original integral to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\int", "content": {"math_content": "\\int \\sec x \\, d x", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


          \nonce you figure that out, draw a right angled triangle with
          ", "content": [{"c": "once you figure that out, draw a right angled triangle with", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\tan and use it to work out what any other trig functions in your answer are in terms of ", "content": {"math_content": "\\tan x = 2z", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          and use it to work out what any other trig functions in your answer are in terms of
          ", "content": [{"c": "and use it to work out what any other trig functions in your answer are in terms of", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"z\"", "content": {"math_content": "z", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          What do you mean you're not using sec?

          \nWhat does the stuff in red say?:

          Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next.\n\t\t\t\t\t\t
          ", "content": [{"c": "What do you mean you're not using sec? What does the stuff in red say?: Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\t\t\t\ti didnt get an answer in a thread posted at another website

          \nso help is needed\n\t\t\t\t\t\t
          ", "content": [{"c": "i didnt get an answer in a thread posted at another website so help is needed", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\n\t\t\t\t\t\tLast edited by mr fantastic; March 3rd 2009 at 03:36 PM.\n\n\n\t\t\t\t
          ", "content": [{"c": "Last edited by mr fantastic; March 3rd 2009 at 03:36 PM.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          i didnt get an answer in this thread
          S.O.S. Mathematics CyberBoard :: View topic - integral question..

          \nso help is needed
          I gave you the answer in post #2. In post #3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected.
          ", "content": [{"c": "i didnt get an answer in this thread S.O.S. Mathematics CyberBoard :: View topic - integral question.. so help is needed I gave you the answer in post #2. In post #3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected.", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "http://mathhelpforum.com/images/smilies/Skype/emoticon-0179-headbang.gif", "data": null, "alt": null, "title": "Skype Headbang", "caption": null}}, {"type": "paragraph", "raw_content": "


          \nThread closed.\n\t\t\t\t\t\t
          ", "content": [{"c": "Thread closed.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\tResults 1 to 11 of 11\n\t\t\t
          ", "content": [{"c": "Results 1 to 11 of 11", "t": "text"}]}, {"type": "list", "raw_content": "
          1. February 28th 2009,\u00a003:36 AM#1
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          ", "content": {"items": [[[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "03:36 AM", "t": "text"}, {"c": "#1", "t": "text"}, {"c": "\n\t\t\t\tMHF Contributor\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "1,401", "t": "text"}]], []], "ordered": true}}, {"type": "table", "raw_content": "
          ", "content": {"html": null, "is_complex": false, "table_nest_level": "1"}}, {"type": "list", "raw_content": "
          1. February 28th 2009,\u00a003:58 AM#2

          2. February 28th 2009,\u00a004:34 AM#3
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          3. February 28th 2009,\u00a005:41 AM#4
            \"Stonehambey
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            114

          4. February 28th 2009,\u00a005:49 AM#5
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          5. February 28th 2009,\u00a006:11 AM#6
            \"Stonehambey
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            114

          6. February 28th 2009,\u00a012:18 PM#7

          7. February 28th 2009,\u00a002:31 PM#8

          8. March 3rd 2009,\u00a009:07 AM#9
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          9. March 3rd 2009,\u00a011:01 AM#10

          10. March 3rd 2009,\u00a003:33 PM#11

          ", "content": {"items": [[], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "03:58 AM", "t": "text"}, {"c": "#2", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "04:34 AM", "t": "text"}, {"c": "#3", "t": "text"}, {"c": "\n\t\t\t\tMHF Contributor\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "1,401", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "05:41 AM", "t": "text"}, {"c": "#4", "t": "text"}, {"c": "\n\t\t\t\tMember\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "114", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "05:49 AM", "t": "text"}, {"c": "#5", "t": "text"}, {"c": "\n\t\t\t\tMHF Contributor\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "1,401", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "06:11 AM", "t": "text"}, {"c": "#6", "t": "text"}, {"c": "\n\t\t\t\tMember\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "114", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "12:18 PM", "t": "text"}, {"c": "#7", "t": "text"}]], [[{"c": "February 28th 2009,\u00a0", "t": "text"}, {"c": "02:31 PM", "t": "text"}, {"c": "#8", "t": "text"}]], [[{"c": "March 3rd 2009,\u00a0", "t": "text"}, {"c": "09:07 AM", "t": "text"}, {"c": "#9", "t": "text"}, {"c": "\n\t\t\t\tMHF Contributor\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Nov 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "1,401", "t": "text"}]], [[{"c": "March 3rd 2009,\u00a0", "t": "text"}, {"c": "11:01 AM", "t": "text"}, {"c": "#10", "t": "text"}]], [[{"c": "March 3rd 2009,\u00a0", "t": "text"}, {"c": "03:33 PM", "t": "text"}, {"c": "#11", "t": "text"}]]], "ordered": true}}]], "main_html": "

          \n\t\t\t\t\tintegral question..\n\t\t\t\t

          \"<br\"<br\"<br

          \nwhat to do next??\n\t\t\t\t\t\t
          \n\t\t\t\t\t\t\ti am not using sec
          \nonly sin cos tan cot

          \nits very complicated and with sec
          \nso if i will put sec=1/cos then i ll get a very complicated expression
          \nis there an easier way??\n\t\t\t\t\t\t
          \n\n\t\t\t\tis there an easier way??\n\n\t\t
          You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square,
          \"z will work here.
          will work here.

          \"z


          \nSo

          \"I


          \nWe need to write this in terms of our original variable so

          \"z


          \nSo

          \"I


          \nThis is also the answer maxima gives to the integral
          \"\"
          \n\t\t\t\t\t\t\ti cant use hyperbolic function\n\t\t\t\t\t\t
          \n\t\t\t\t\t\t\tWhy not?

          \nWell if that's really the case then the substitution reduces your original integral to

          \"\\int


          \nonce you figure that out, draw a right angled triangle with
          \"\\tan and use it to work out what any other trig functions in your answer are in terms of
          and use it to work out what any other trig functions in your answer are in terms of
          \"z\"
          What do you mean you're not using sec?

          \nWhat does the stuff in red say?:

          Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next.\n\t\t\t\t\t\t
          \n\t\t\t\t\t\t\ti didnt get an answer in a thread posted at another website

          \nso help is needed\n\t\t\t\t\t\t
          \n\n\t\t\t\t\t\tLast edited by mr fantastic; March 3rd 2009 at 03:36 PM.\n\n\n\t\t\t\t
          i didnt get an answer in this thread
          S.O.S. Mathematics CyberBoard :: View topic - integral question..

          \nso help is needed
          I gave you the answer in post #2. In post #3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected.
          \"\"


          \nThread closed.\n\t\t\t\t\t\t
          \n\t\t\t\tResults 1 to 11 of 11\n\t\t\t
          1. February 28th 2009,\u00a003:36 AM#1
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          1. February 28th 2009,\u00a003:58 AM#2

          2. February 28th 2009,\u00a004:34 AM#3
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          3. February 28th 2009,\u00a005:41 AM#4
            \"Stonehambey
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            114

          4. February 28th 2009,\u00a005:49 AM#5
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          5. February 28th 2009,\u00a006:11 AM#6
            \"Stonehambey
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            114

          6. February 28th 2009,\u00a012:18 PM#7

          7. February 28th 2009,\u00a002:31 PM#8

          8. March 3rd 2009,\u00a009:07 AM#9
            \"transgalactic
            \n\t\t\t\tMHF Contributor\n\t\t\t\"\"
            Joined
            Nov 2008
            Posts
            1,401

          9. March 3rd 2009,\u00a011:01 AM#10

          10. March 3rd 2009,\u00a003:33 PM#11

          ", "statics": {"title": 1, "equation-interline": 11, "paragraph": 18, "paragraph.text": 18, "image": 2, "list": 2, "list.text": 63, "table": 1}, "url": "https://mathhelpforum.com/t/integral-question.76128/", "content": "## integral question..\n\n$$\n
          \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
          \n$$\n\n$$\n
          \nz=\\frac{1}{2}\\tan x\\\\
          \n$$\n\n$$\n
          \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
          \n$$\n\nwhat to do next??\n\ni am not using sec only sin cos tan cot its very complicated and with sec so if i will put sec=1/cos then i ll get a very complicated expression is there an easier way??\n\nis there an easier way?? You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square,\n\n$$\nz = \\frac{1}{2}\\sinh \\theta\n$$\n\nwill work here.\n\n$$\nz = \\frac{1}{2}\\sinh \\theta \\implies dz = \\frac{1}{2}\\cosh\\theta\\, d\\theta\n$$\n\nSo\n\n$$\nI = \\int\\frac{\\frac{1}{2}\\cosh\\theta \\, d\\theta}{\\sqrt{\\left(\\frac{1}{2}\\right)^2+\\left(\\f rac{1}{2}\\right)^2\\sinh\\theta}} = \\int d\\theta = \\theta + C\n$$\n\nWe need to write this in terms of our original variable so\n\n$$\nz = \\frac{1}{2}\\sinh\\theta \\implies \\theta = \\sinh^{-1}(2z)\n$$\n\nSo\n\n$$\nI = \\sinh^{-1}(2z) + C\n$$\n\nThis is also the answer maxima gives to the integral\n\ni cant use hyperbolic function\n\nWhy not? Well if that's really the case then the substitution reduces your original integral to\n\n$$\n\\int \\sec x \\, d x\n$$\n\nonce you figure that out, draw a right angled triangle with\n\n$$\n\\tan x = 2z\n$$\n\nand use it to work out what any other trig functions in your answer are in terms of\n\n$$\nz\n$$\n\nWhat do you mean you're not using sec? What does the stuff in red say?: Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next.\n\ni didnt get an answer in a thread posted at another website so help is needed\n\nLast edited by mr fantastic; March 3rd 2009 at 03:36 PM.\n\ni didnt get an answer in this thread S.O.S. Mathematics CyberBoard :: View topic - integral question.. so help is needed I gave you the answer in post \\#2. In post \\#3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected.\n\nThread closed.\n\nResults 1 to 11 of 11\n\n1. February 28th 2009, 03:36 AM \\#1 MHF Contributor Joined Nov 2008 Posts 1,401\n\n\n\n2. February 28th 2009, 03:58 AM \\#2\n3. February 28th 2009, 04:34 AM \\#3 MHF Contributor Joined Nov 2008 Posts 1,401\n4. February 28th 2009, 05:41 AM \\#4 Member Joined Nov 2008 Posts 114\n5. February 28th 2009, 05:49 AM \\#5 MHF Contributor Joined Nov 2008 Posts 1,401\n6. February 28th 2009, 06:11 AM \\#6 Member Joined Nov 2008 Posts 114\n7. February 28th 2009, 12:18 PM \\#7\n8. February 28th 2009, 02:31 PM \\#8\n9. March 3rd 2009, 09:07 AM \\#9 MHF Contributor Joined Nov 2008 Posts 1,401\n10. March 3rd 2009, 11:01 AM \\#10\n11. March 3rd 2009, 03:33 PM \\#11\n", "html": " \n integral question.. - Math Help Forum
          \"Math
          • Register
          • Help



          \n\t\t\t\tResults 1 to 11 of 11\n\t\t\t

          \n\t\t\tMath Help - integral question..

          1. February 28th 2009, 03:36 AM #1
            \n\t\t\t\tMHF Contributor\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            1,401

            \n\t\t\t\t\tintegral question..\n\t\t\t\t

            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" alt=\"
            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" />
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" alt=\"
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" />
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" alt=\"
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" />
            \nwhat to do next??\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          2. February 28th 2009, 03:58 AM #2
            \n\t\t\t\tFlow Master\n\t\t\t \"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"mr
            Joined
            Dec 2007
            From
            Zeitgeist
            Posts
            16,947
            Thanks
            6
            \"Quote\" Originally Posted by transgalactic \"View
            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" alt=\"
            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" />
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" alt=\"
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" />
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" alt=\"
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" />
            \nwhat to do next??
            Read this thread: http://www.mathhelpforum.com/math-he...functions.html
            Follow Math Help Forum on Facebook and Google+

          3. February 28th 2009, 04:34 AM #3
            \n\t\t\t\tMHF Contributor\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            1,401
            \n\t\t\t\t\t\t\ti am not using sec
            \nonly sin cos tan cot

            \nits very complicated and with sec
            \nso if i will put sec=1/cos then i ll get a very complicated expression
            \nis there an easier way??\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          4. February 28th 2009, 05:41 AM #4
            \n\t\t\t\tMember\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            114
            \n\n\t\t\t\tis there an easier way??\n\n\t\t
            You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square, \"z will work here.

            \"z

            \nSo

            \"I

            \nWe need to write this in terms of our original variable so

            \"z

            \nSo

            \"I

            \nThis is also the answer maxima gives to the integral \"\"
            Follow Math Help Forum on Facebook and Google+

          5. February 28th 2009, 05:49 AM #5
            \n\t\t\t\tMHF Contributor\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            1,401
            \n\t\t\t\t\t\t\ti cant use hyperbolic function\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          6. February 28th 2009, 06:11 AM #6
            \n\t\t\t\tMember\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            114
            \n\t\t\t\t\t\t\tWhy not?

            \nWell if that's really the case then the substitution reduces your original integral to

            \"\\int

            \nonce you figure that out, draw a right angled triangle with \"\\tan and use it to work out what any other trig functions in your answer are in terms of \"z\"
            Follow Math Help Forum on Facebook and Google+

          7. February 28th 2009, 12:18 PM #7
            \n\t\t\t\tFlow Master\n\t\t\t \"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"mr
            Joined
            Dec 2007
            From
            Zeitgeist
            Posts
            16,947
            Thanks
            6
            \"Quote\" Originally Posted by transgalactic \"View
            i am not using sec
            \nonly sin cos tan cot

            \nits very complicated and with sec
            \nso if i will put sec=1/cos then i ll get a very complicated expression
            \nis there an easier way??
            What do you mean you're not using sec?

            \nWhat does the stuff in red say?:

            \"Quote\" Originally Posted by transgalactic \"View
            [snip]
            \"\\int
            \n[snip]
            \nWhat to do next?
            Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next.\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          8. February 28th 2009, 02:31 PM #8
            \n\t\t\t\tFlow Master\n\t\t\t \"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"mr
            Joined
            Dec 2007
            From
            Zeitgeist
            Posts
            16,947
            Thanks
            6
            \"Quote\" Originally Posted by transgalactic \"View
            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" alt=\"
            \n\\int \\frac{dz}{\\sqrt{z^2+\\frac{1}{4}}}=2\\int \\frac{\\frac{1}{2}\\frac{dx}{\\cos ^2 x}}{\\sqrt{\\tan^2 x+1}}=\\int \\frac{dx}{\\cos x}\\\\
            \n\" />
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" alt=\"
            \nz=\\frac{1}{2}\\tan x\\\\
            \n\" />
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" alt=\"
            \ndz=\\frac{1}{2}\\frac{dx}{\\cos ^2 x}
            \n\" />
            \nwhat to do next??
            This question may have been posted and answered at other websites that provide maths help.
            Follow Math Help Forum on Facebook and Google+

          9. March 3rd 2009, 09:07 AM #9
            \n\t\t\t\tMHF Contributor\n\t\t\t \"\"
            Joined
            Nov 2008
            Posts
            1,401
            \n\t\t\t\t\t\t\ti didnt get an answer in a thread posted at another website

            \nso help is needed\n\t\t\t\t\t\t
            \n\n\t\t\t\t\t\tLast edited by mr fantastic; March 3rd 2009 at 03:36 PM.\n\n\n\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          10. March 3rd 2009, 11:01 AM #10
            \n\t\t\t\tMath Engineering Student\n\t\t\t \"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"Krizalid's
            Joined
            Mar 2007
            From
            Santiago, Chile
            Posts
            3,656
            Thanks
            15

          11. March 3rd 2009, 03:33 PM #11
            \n\t\t\t\tFlow Master\n\t\t\t \"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"mr
            Joined
            Dec 2007
            From
            Zeitgeist
            Posts
            16,947
            Thanks
            6
            \"Quote\" Originally Posted by transgalactic \"View
            i didnt get an answer in this thread
            S.O.S. Mathematics CyberBoard :: View topic - integral question..

            \nso help is needed
            I gave you the answer in post #2. In post #3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected. \"\"

            \nThread closed.\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          Similar Math Help Forum Discussions

          1. integral question
            \n Posted in the Calculus Forum\n
            Replies: 1\n
            Last Post: February 6th 2010, 01:40 PM
          2. Double Integral and Triple Integral question
            \n Posted in the Calculus Forum\n
            Replies: 3\n
            Last Post: February 3rd 2010, 12:47 PM
          3. Integral Question
            \n Posted in the Calculus Forum\n
            Replies: 1\n
            Last Post: January 31st 2010, 05:00 PM
          4. Another Integral Question
            \n Posted in the Calculus Forum\n
            Replies: 9\n
            Last Post: January 17th 2010, 03:06 PM
          5. integral question..
            \n Posted in the Calculus Forum\n
            Replies: 2\n
            Last Post: March 11th 2009, 05:38 AM

          Search Tags


          \"/mathhelpforum\" \"@mathhelpforum\"
          \"\"\n\tCopyright © 2005-2014 Math Help Forum. All rights reserved.\n\n

          \n\n \n"} diff --git a/bench/data/groundtruth/math_mathhelpforum_2.jsonl b/bench/data/groundtruth/math_mathhelpforum_2.jsonl new file mode 100644 index 00000000..db96d276 --- /dev/null +++ b/bench/data/groundtruth/math_mathhelpforum_2.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "list", "raw_content": "
          1. April 8th 2009,\u00a009:51 PM#1
            \"noles2188
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Oct 2008
            Posts
            124
          ", "content": {"items": [[[{"c": "April 8th 2009,\u00a0", "t": "text"}, {"c": "09:51 PM", "t": "text"}, {"c": "#1", "t": "text"}, {"c": "\n\t\t\t\tMember\n\t\t\t", "t": "text"}, {"c": "Joined", "t": "text"}, {"c": "Oct 2008", "t": "text"}, {"c": "Posts", "t": "text"}, {"c": "124", "t": "text"}]]], "ordered": true, "list_nest_level": "2"}}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\tResults 1 to 5 of 5\n\t\t\t
          ", "content": [{"c": "Results 1 to 5 of 5", "t": "text"}]}, {"type": "title", "raw_content": "

          \n\t\t\t\t\tContinuous functions\n\t\t\t\t

          ", "content": {"title_content": "Continuous functions", "level": "2"}}, {"type": "paragraph", "raw_content": "
          \n\t\t\t\t\t\t\t1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
          \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

          \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)
          ", "content": [{"c": "1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)). Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous. 2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)", "t": "text"}]}, {"type": "image", "raw_content": "\"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.\n\t\t\t\t\t\t", "content": {"url": "http://mathhelpforum.com/images/smilies/biggrin.png", "data": null, "alt": null, "title": "Big Grin", "caption": null}}, {"type": "paragraph", "raw_content": "
          -->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
          ", "content": [{"c": "-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
          \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

          \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)
          ", "content": [{"c": "1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)). Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous. 2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)", "t": "text"}]}, {"type": "image", "raw_content": "\"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.", "content": {"url": "http://mathhelpforum.com/images/smilies/biggrin.png", "data": null, "alt": null, "title": "Big Grin", "caption": null}}, {"type": "paragraph", "raw_content": "
          -->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
          We have :f(x)=
          ", "content": [{"c": "-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c. We have :f(x)=", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{n\\rightarrow\\infty}{\\frac{x^n}{1+x^n}}.................................................. .........................................1", "content": {"math_content": "\\lim_{n\\rightarrow\\infty}{\\frac{x^n}{1+x^n}} =\\frac{\\lim_{n\\rightarrow\\infty}{x^n}}{1+\\lim_{n\\r ightarrow\\infty}{x^n}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .................................................. .........................................1

          \nAND now we have the following cases:

          \n1) |x|<1 <===> -1<x<1 ,then
          ", "content": [{"c": ".................................................. .........................................1 AND now we have the following cases: 1) |x|<1 <===> -1.", "content": {"math_content": "\\lim_{n\\rightarrow\\infty}{x^n} =0", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \n2) x=1 ,then
          ", "content": [{"c": ". 2) x=1 ,then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{n\\rightarrow\\infty}{x^n}.", "content": {"math_content": "\\lim_{n\\rightarrow\\infty}{x^n} =1", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .


          \n3) x>1 ,then
          ", "content": [{"c": ". 3) x>1 ,then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{n\\rightarrow\\infty}{x^n}.", "content": {"math_content": "\\lim_{n\\rightarrow\\infty}{x^n} =\\infty", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .


          \n4) x =-1 ,then
          ", "content": [{"c": ". 4) x =-1 ,then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"x^n\" oscillates finitely.", "content": {"math_content": "x^n", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          oscillates finitely.

          \n5) x<-1 ,then
          ", "content": [{"c": "oscillates finitely. 5) x<-1 ,then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\" oscillates infinitely.", "content": {"math_content": "x^n", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          oscillates infinitely.

          \nAnd thus by using (1)

          \nFor -1<x<1 ,f(x) = 0 and

          \nFor x=1 , f(x)=1/2.

          \nThus D= (-1,1] = (-1,1)U{1}

          \nNext we consider continuity over (-1,1].

          \nLet -1<c<1 ,and consider
          ", "content": [{"c": "oscillates infinitely. And thus by using (1) For -1.", "content": {"math_content": "\\lim_{x\\rightarrow c}{f(x)} =\\lim_{x\\rightarrow c}{0}= 0 = f(c)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \nHENCE f is continuous over (-1,1).

          \nBut if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -1<x<1 , to 1/2 =f(1) and hence the function is not continuous.

          \nTo prove that:
          \nLet, \u03b5=1/4, then for all \u03b4>0 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|=
          ", "content": [{"c": ". HENCE f is continuous over (-1,1). But if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -10 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|=", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\frac{1}{2}\\geq\\frac{1}{4}=\\epsilon\".", "content": {"math_content": "\\frac{1}{2}\\geq\\frac{1}{4}=\\epsilon", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \nThus
          ", "content": [{"c": ". Thus", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{x\\rightarrow.", "content": {"math_content": "\\lim_{x\\rightarrow 1^-}{f(x)}\\neq f(1)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \nNow to prove : if
          ", "content": [{"c": ". Now to prove : if", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{x\\rightarrow ,then ", "content": {"math_content": "\\lim_{x\\rightarrow c}{f(x)} = f(c)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          ,then
          ", "content": [{"c": ",then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\lim_{x\\rightarrow ,where ", "content": {"math_content": "\\lim_{x\\rightarrow c}{\\sqrt{f(x)}} =\\sqrt{c}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          ,where
          ", "content": [{"c": ",where", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"f(x)\\geq,when x belongs to D.", "content": {"math_content": "f(x)\\geq 0", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          ,when x belongs to D.

          \nFor that you must consider the :
          ", "content": [{"c": ",when x belongs to D. For that you must consider the :", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"|\\sqrt{f(x)}-\\sqrt{c}|\".................................................. ..................................2", "content": {"math_content": "|\\sqrt{f(x)}-\\sqrt{c}|", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .................................................. ..................................2

          \nNow multiply (2) by
          ", "content": [{"c": ".................................................. ..................................2 Now multiply (2) by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\frac{|\\sqrt{f(x)}+\\sqrt{c}|}{|\\sqrt{f(x)}+\\sqrt{c and we get:", "content": {"math_content": "\\frac{|\\sqrt{f(x)}+\\sqrt{c}|}{|\\sqrt{f(x)}+\\sqrt{c }|}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          and we get:


          ", "content": [{"c": "and we get:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\".", "content": {"math_content": "\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \nBut
          ", "content": [{"c": ". But", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\" ,thus :", "content": {"math_content": "\\sqrt{f(x)}+\\sqrt{c}\\geq\\sqrt{c}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          ,thus :


          ", "content": [{"c": ",thus :", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\\leq\\frac{|f(x)-f(c)|}{\\sqrt{c}}\".................................................. .......................................3", "content": {"math_content": "\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\\leq\\frac{|f(x)-f(c)|}{\\sqrt{c}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .................................................. .......................................3

          \nAnd if we want (3) smaller than \u03b5>0 we must have :

          ", "content": [{"c": ".................................................. .......................................3 And if we want (3) smaller than \u03b5>0 we must have :", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"|f(x)-f(c)|<\\sqrt{c}.\\epsilon\" which is possible since f is continuous at c.", "content": {"math_content": "|f(x)-f(c)|<\\sqrt{c}.\\epsilon", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          which is possible since f is continuous at c.

          \nHence sqrt(f) is continuous at c\n\t\t\t\t\t\t
          ", "content": [{"c": "which is possible since f is continuous at c. Hence sqrt(f) is continuous at c", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          The answer above is incomplete.
          ", "content": [{"c": "The answer above is incomplete.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"f(x)", "content": {"math_content": "f(x) = \\left\\{ {\\begin{array}{lr}
          \n {0,} & {\\left| x \\right| < 1} \\\\ {\\frac{1}{2},} & {x = 1} \\\\ {1,} & {\\left| x \\right| > 1} \\\\ \\end{array} } \\right.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \nThat means that
          ", "content": [{"c": "That means that", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\mathcal{D}.", "content": {"math_content": "\\mathcal{D} = \\mathbb{R}\\backslash \\left\\{ { - 1} \\right\\}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .
          \nIt also means that
          ", "content": [{"c": ". It also means that", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"f\" is continuous on ", "content": {"math_content": "f", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          is continuous on
          ", "content": [{"c": "is continuous on", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\mathbb{R}\\backslash.", "content": {"math_content": "\\mathbb{R}\\backslash \\left\\{ {1, - 1} \\right\\}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .

          \nThe mistake above is:
          ", "content": [{"c": ". The mistake above is:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\"\\left|.\n\t\t\t\t\t\t", "content": {"math_content": "\\left| x \\right| > 1\\;,\\;\\frac{{x^n }}{{1 + x^n }} = \\frac{1}
          \n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          .
          ", "content": [{"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "
        • April 9th 2009,\u00a007:59 AM
        • ", "content": [{"c": "April 9th 2009, 07:59 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "#2", "t": "text"}]}, {"type": "image", "raw_content": "\"xalk", "content": {"url": "http://cdn.mathhelpforum.com/images/statusicon/user-offline.png", "data": null, "alt": "xalk is offline", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
        • \n\t\t\t\tBanned\n\t\t\t
        • ", "content": [{"c": "Banned", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "http://cdn.mathhelpforum.com/images/reputation/reputation_pos.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "list", "raw_content": "
          Joined
          Mar 2009
          Posts
          256
          Thanks
          1
          ", "content": {"items": [[[{"c": "Joined", "t": "text"}]], [[{"c": "Mar 2009", "t": "text"}]], [[{"c": "Posts", "t": "text"}]], [[{"c": "256", "t": "text"}]], [[{"c": "Thanks", "t": "text"}]], [[{"c": "1", "t": "text"}]]], "ordered": true, "list_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
        • April 9th 2009,\u00a003:54 PM
        • ", "content": [{"c": "April 9th 2009, 03:54 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "#3", "t": "text"}]}, {"type": "paragraph", "raw_content": "
        • April 9th 2009,\u00a006:45 PM
        • ", "content": [{"c": "April 9th 2009, 06:45 PM", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "#4", "t": "text"}]}, {"type": "image", "raw_content": "\"xalk", "content": {"url": "http://cdn.mathhelpforum.com/images/statusicon/user-offline.png", "data": null, "alt": "xalk is offline", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
        • \n\t\t\t\tBanned\n\t\t\t
        • ", "content": [{"c": "Banned", "t": "text"}]}, {"type": "image", "raw_content": "\"\"", "content": {"url": "http://cdn.mathhelpforum.com/images/reputation/reputation_pos.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "list", "raw_content": "
          Joined
          Mar 2009
          Posts
          256
          Thanks
          1
          ", "content": {"items": [[[{"c": "Joined", "t": "text"}]], [[{"c": "Mar 2009", "t": "text"}]], [[{"c": "Posts", "t": "text"}]], [[{"c": "256", "t": "text"}]], [[{"c": "Thanks", "t": "text"}]], [[{"c": "1", "t": "text"}]]], "ordered": true, "list_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
        • April 10th 2009,\u00a012:10 AM
        • ", "content": [{"c": "April 10th 2009, 12:10 AM", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "#5", "t": "text"}]}]], "main_html": "
          1. April 8th 2009,\u00a009:51 PM#1
            \"noles2188
            \n\t\t\t\tMember\n\t\t\t\"\"
            Joined
            Oct 2008
            Posts
            124
          \n\t\t\t\tResults 1 to 5 of 5\n\t\t\t

          \n\t\t\t\t\tContinuous functions\n\t\t\t\t

          \n\t\t\t\t\t\t\t1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
          \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

          \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)
          \"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.\n\t\t\t\t\t\t
          -->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
          1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
          \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

          \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)
          \"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
          -->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
          We have :f(x)=
          \"\\lim_{n\\rightarrow\\infty}{\\frac{x^n}{1+x^n}}.................................................. .........................................1
          .................................................. .........................................1

          \nAND now we have the following cases:

          \n1) |x|<1 <===> -1<x<1 ,then
          \"\\lim_{n\\rightarrow\\infty}{x^n}.
          .

          \n2) x=1 ,then
          \"\\lim_{n\\rightarrow\\infty}{x^n}.
          .


          \n3) x>1 ,then
          \"\\lim_{n\\rightarrow\\infty}{x^n}.
          .


          \n4) x =-1 ,then
          \"x^n\" oscillates finitely.
          oscillates finitely.

          \n5) x<-1 ,then
          \" oscillates infinitely.
          oscillates infinitely.

          \nAnd thus by using (1)

          \nFor -1<x<1 ,f(x) = 0 and

          \nFor x=1 , f(x)=1/2.

          \nThus D= (-1,1] = (-1,1)U{1}

          \nNext we consider continuity over (-1,1].

          \nLet -1<c<1 ,and consider
          \"\\lim_{x\\rightarrow.
          .

          \nHENCE f is continuous over (-1,1).

          \nBut if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -1<x<1 , to 1/2 =f(1) and hence the function is not continuous.

          \nTo prove that:
          \nLet, \u03b5=1/4, then for all \u03b4>0 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|=
          \"\\frac{1}{2}\\geq\\frac{1}{4}=\\epsilon\".
          .

          \nThus
          \"\\lim_{x\\rightarrow.
          .

          \nNow to prove : if
          \"\\lim_{x\\rightarrow ,then
          ,then
          \"\\lim_{x\\rightarrow ,where
          ,where
          \"f(x)\\geq,when x belongs to D.
          ,when x belongs to D.

          \nFor that you must consider the :
          \"|\\sqrt{f(x)}-\\sqrt{c}|\".................................................. ..................................2
          .................................................. ..................................2

          \nNow multiply (2) by
          \"\\frac{|\\sqrt{f(x)}+\\sqrt{c}|}{|\\sqrt{f(x)}+\\sqrt{c and we get:
          and we get:


          \"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\".
          .

          \nBut
          \" ,thus :
          ,thus :


          \"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\\leq\\frac{|f(x)-f(c)|}{\\sqrt{c}}\".................................................. .......................................3
          .................................................. .......................................3

          \nAnd if we want (3) smaller than \u03b5>0 we must have :

          \"|f(x)-f(c)|<\\sqrt{c}.\\epsilon\" which is possible since f is continuous at c.
          which is possible since f is continuous at c.

          \nHence sqrt(f) is continuous at c\n\t\t\t\t\t\t
          The answer above is incomplete.
          \"f(x)

          \nThat means that
          \"\\mathcal{D}.
          .
          \nIt also means that
          \"f\" is continuous on
          is continuous on
          \"\\mathbb{R}\\backslash.
          .

          \nThe mistake above is:
          \"\\left|.\n\t\t\t\t\t\t
          .
        • April 9th 2009,\u00a007:59 AM
        • \"xalk
        • \n\t\t\t\tBanned\n\t\t\t
        • \"\"
          Joined
          Mar 2009
          Posts
          256
          Thanks
          1
        • April 9th 2009,\u00a003:54 PM
        • April 9th 2009,\u00a006:45 PM
        • \"xalk
        • \n\t\t\t\tBanned\n\t\t\t
        • \"\"
          Joined
          Mar 2009
          Posts
          256
          Thanks
          1
        • April 10th 2009,\u00a012:10 AM
        • ", "statics": {"list": 3, "list.text": 20, "paragraph": 39, "paragraph.text": 39, "title": 1, "image": 6, "equation-interline": 23}, "url": "http://mathhelpforum.com/differential-geometry/82966-continuous-functions.html", "content": "1. April 8th 2009, 09:51 PM \\#1 Member Joined Oct 2008 Posts 124\n\nResults 1 to 5 of 5\n\n## Continuous functions\n\n1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)). Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous. 2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)\n\n-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.\n\n1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)). Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous. 2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)\n\n-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c. We have :f(x)=\n\n$$\n\\lim_{n\\rightarrow\\infty}{\\frac{x^n}{1+x^n}} =\\frac{\\lim_{n\\rightarrow\\infty}{x^n}}{1+\\lim_{n\\r ightarrow\\infty}{x^n}}\n$$\n\n.................................................. .........................................1 AND now we have the following cases: 1) |x|<1 <===> -11 ,then\n\n$$\n\\lim_{n\\rightarrow\\infty}{x^n} =\\infty\n$$\n\n. 4) x =-1 ,then\n\n$$\nx^n\n$$\n\noscillates finitely. 5) x<-1 ,then\n\n$$\nx^n\n$$\n\noscillates infinitely. And thus by using (1) For -10 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|=\n\n$$\n\\frac{1}{2}\\geq\\frac{1}{4}=\\epsilon\n$$\n\n. Thus\n\n$$\n\\lim_{x\\rightarrow 1^-}{f(x)}\\neq f(1)\n$$\n\n. Now to prove : if\n\n$$\n\\lim_{x\\rightarrow c}{f(x)} = f(c)\n$$\n\n,then\n\n$$\n\\lim_{x\\rightarrow c}{\\sqrt{f(x)}} =\\sqrt{c}\n$$\n\n,where\n\n$$\nf(x)\\geq 0\n$$\n\n,when x belongs to D. For that you must consider the :\n\n$$\n|\\sqrt{f(x)}-\\sqrt{c}|\n$$\n\n.................................................. ..................................2 Now multiply (2) by\n\n$$\n\\frac{|\\sqrt{f(x)}+\\sqrt{c}|}{|\\sqrt{f(x)}+\\sqrt{c }|}\n$$\n\nand we get:\n\n$$\n\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\n$$\n\n. But\n\n$$\n\\sqrt{f(x)}+\\sqrt{c}\\geq\\sqrt{c}\n$$\n\n,thus :\n\n$$\n\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\\leq\\frac{|f(x)-f(c)|}{\\sqrt{c}}\n$$\n\n.................................................. .......................................3 And if we want (3) smaller than \u03b5>0 we must have :\n\n$$\n|f(x)-f(c)|<\\sqrt{c}.\\epsilon\n$$\n\nwhich is possible since f is continuous at c. Hence sqrt(f) is continuous at c\n\nThe answer above is incomplete.\n\n$$\nf(x) = \\left\\{ {\\begin{array}{lr}
          \n {0,} & {\\left| x \\right| < 1} \\\\ {\\frac{1}{2},} & {x = 1} \\\\ {1,} & {\\left| x \\right| > 1} \\\\ \\end{array} } \\right.\n$$\n\nThat means that\n\n$$\n\\mathcal{D} = \\mathbb{R}\\backslash \\left\\{ { - 1} \\right\\}\n$$\n\n. It also means that\n\n$$\nf\n$$\n\nis continuous on\n\n$$\n\\mathbb{R}\\backslash \\left\\{ {1, - 1} \\right\\}\n$$\n\n. The mistake above is:\n\n$$\n\\left| x \\right| > 1\\;,\\;\\frac{{x^n }}{{1 + x^n }} = \\frac{1}
          \n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}\n$$\n\n.\n\nApril 9th 2009, 07:59 AM\n\n\\#2\n\nBanned\n\n1. Joined\n2. Mar 2009\n3. Posts\n4. 256\n5. Thanks\n6. 1\n\nApril 9th 2009, 03:54 PM\n\n\\#3\n\nApril 9th 2009, 06:45 PM\n\n\\#4\n\nBanned\n\n1. Joined\n2. Mar 2009\n3. Posts\n4. 256\n5. Thanks\n6. 1\n\nApril 10th 2009, 12:10 AM\n\n\\#5\n", "html": " \n Continuous functions - Math Help Forum
          \"Math
          • Register
          • Help



          \r\n\t\t\t\tResults 1 to 5 of 5\r\n\t\t\t

          \r\n\t\t\tMath Help - Continuous functions

          1. April 8th 2009, 09:51 PM #1
            \r\n\t\t\t\tMember\r\n\t\t\t \"\"
            Joined
            Oct 2008
            Posts
            124

            \r\n\t\t\t\t\tContinuous functions\r\n\t\t\t\t

            \r\n\t\t\t\t\t\t\t1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
            \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

            \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)\"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.\r\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          2. April 9th 2009, 07:59 AM #2
            \r\n\t\t\t\tBanned\r\n\t\t\t \"\"
            Joined
            Mar 2009
            Posts
            256
            Thanks
            1
            \"Quote\" Originally Posted by noles2188 \"View
            1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
            \nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

            \n2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)\"\"-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
            We have :f(x)= \"\\lim_{n\\rightarrow\\infty}{\\frac{x^n}{1+x^n}}.................................................. .........................................1

            \nAND now we have the following cases:

            \n1) |x|<1 <===> -1<x<1 ,then \"\\lim_{n\\rightarrow\\infty}{x^n}.

            \n2) x=1 ,then \"\\lim_{n\\rightarrow\\infty}{x^n}.


            \n3) x>1 ,then \"\\lim_{n\\rightarrow\\infty}{x^n}.


            \n4) x =-1 ,then \"x^n\" oscillates finitely.

            \n5) x<-1 ,then \" oscillates infinitely.

            \nAnd thus by using (1)

            \nFor -1<x<1 ,f(x) = 0 and

            \nFor x=1 , f(x)=1/2.

            \nThus D= (-1,1] = (-1,1)U{1}

            \nNext we consider continuity over (-1,1].

            \nLet -1<c<1 ,and consider \"\\lim_{x\\rightarrow.

            \nHENCE f is continuous over (-1,1).

            \nBut if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -1<x<1 , to 1/2 =f(1) and hence the function is not continuous.

            \nTo prove that:
            \nLet, ε=1/4, then for all δ>0 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|= \"\\frac{1}{2}\\geq\\frac{1}{4}=\\epsilon\".

            \nThus \"\\lim_{x\\rightarrow.

            \nNow to prove : if \"\\lim_{x\\rightarrow ,then \"\\lim_{x\\rightarrow ,where \"f(x)\\geq,when x belongs to D.

            \nFor that you must consider the : \"|\\sqrt{f(x)}-\\sqrt{c}|\".................................................. ..................................2

            \nNow multiply (2) by \"\\frac{|\\sqrt{f(x)}+\\sqrt{c}|}{|\\sqrt{f(x)}+\\sqrt{c and we get:


            \"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\".

            \nBut \" ,thus :


            \"\\frac{|f(x)-f(c)|}{\\sqrt{f(x)}+\\sqrt{c}}\\leq\\frac{|f(x)-f(c)|}{\\sqrt{c}}\".................................................. .......................................3

            \nAnd if we want (3) smaller than ε>0 we must have :

            \"|f(x)-f(c)|<\\sqrt{c}.\\epsilon\" which is possible since f is continuous at c.

            \nHence sqrt(f) is continuous at c\r\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          3. April 9th 2009, 03:54 PM #3
            \r\n\t\t\t\tMHF Contributor\r\n\t\t\t \"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"
            Joined
            Aug 2006
            Posts
            18,605
            Thanks
            1574
            Awards
            1
            \"Quote\" Originally Posted by noles2188 \"View
            1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
            \r\nLet D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.
            The answer above is incomplete.
            \r\n {0,} & {\\left| x \\right| < 1} \\\\ {\\frac{1}{2},} & {x = 1} \\\\ {1,} & {\\left| x \\right| > 1} \\\\ \\end{array} } \\right.\" alt=\"f(x) = \\left\\{ {\\begin{array}{lr}
            \r\n {0,} & {\\left| x \\right| < 1} \\\\ {\\frac{1}{2},} & {x = 1} \\\\ {1,} & {\\left| x \\right| > 1} \\\\ \\end{array} } \\right.\" />
            \r\nThat means that \"\\mathcal{D}.
            \r\nIt also means that \"f\" is continuous on \"\\mathbb{R}\\backslash.

            \r\nThe mistake above is: \r\n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}\" alt=\"\\left| x \\right| > 1\\;,\\;\\frac{{x^n }}{{1 + x^n }} = \\frac{1}
            \r\n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}\" />.\r\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          4. April 9th 2009, 06:45 PM #4
            \r\n\t\t\t\tBanned\r\n\t\t\t \"\"
            Joined
            Mar 2009
            Posts
            256
            Thanks
            1
            \"Quote\" Originally Posted by Plato \"View
            The mistake above is: \n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}\" alt=\"\\left| x \\right| > 1\\;,\\;\\frac{{x^n }}{{1 + x^n }} = \\frac{1}
            \n{{\\left( {\\frac{1}{x}} \\right)^n + 1}}\" />.
            If |x|>1 ,then x<-1 or x>1 ,but for x=-2 for example the limit of ;

            \"\\frac{1}{\\frac{1}{(-2)^n}+1}\" is not equal to 1\r\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          5. April 10th 2009, 12:10 AM #5
            \r\n\t\t\t\tMHF Contributor\r\n\t\t\t \"\"\"\"\"\"
            \"\"
            \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"Opalg's
            Joined
            Aug 2007
            From
            Leeds, UK
            Posts
            4,041
            Thanks
            7
            \"Quote\" Originally Posted by xalk \"View
            the limit of \"\\frac{1}{\\frac{1}{(-2)^n}+1}\" is not equal to 1
            Yes it is! The reason is that \"|a|<1\\:\\Rightarrow\\:a^n\\to0\"; and \"\\bigl|\\tfrac1{-2}\\bigr|<1\". So \"\\frac{1}{\\frac{1}{(-2)^n}+1}\\to\\frac1{0+1}=1\" as \"n\\to\\infty\".\r\n\t\t\t\t\t\t
            Follow Math Help Forum on Facebook and Google+

          Similar Math Help Forum Discussions

          1. Continuous functions
            \r\n Posted in the Discrete Math Forum\r\n
            Replies: 1\r\n
            Last Post: May 22nd 2010, 05:29 PM
          2. more continuous functions
            \r\n Posted in the Differential Geometry Forum\r\n
            Replies: 1\r\n
            Last Post: October 5th 2009, 11:57 AM
          3. continuous functions
            \r\n Posted in the Differential Geometry Forum\r\n
            Replies: 0\r\n
            Last Post: October 4th 2009, 12:47 PM
          4. Why are the functions f and g continuous?
            \r\n Posted in the Calculus Forum\r\n
            Replies: 1\r\n
            Last Post: September 3rd 2009, 07:01 PM
          5. On continuous functions
            \r\n Posted in the Advanced Algebra Forum\r\n
            Replies: 1\r\n
            Last Post: April 30th 2008, 11:58 PM

          Search Tags

          continuous, \r\n\t\t\r\n\t\t\tfunctions \"\"

          View Tag Cloud


          \"/mathhelpforum\" \"@mathhelpforum\"
          \r\n\tCopyright © 2005-2014 Math Help Forum. All rights reserved.\r\n\t\r\n

          \n\n \n"} diff --git a/bench/data/groundtruth/math_mathjax_asciimath_1.jsonl b/bench/data/groundtruth/math_mathjax_asciimath_1.jsonl index b257a2f7..20841ac9 100644 --- a/bench/data/groundtruth/math_mathjax_asciimath_1.jsonl +++ b/bench/data/groundtruth/math_mathjax_asciimath_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

          \n 1. Words and Equations

          ", "content": {"title_content": "1. Words and Equations", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          ", "content": [{"c": "ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          ", "content": [{"c": "Note: The \\` key is normally next to the 1 key on the keyboard.", "t": "text"}]}, {"type": "code", "raw_content": "
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n ", "inline": false, "content": {"code_content": " The area of a triangle with base `b`\n and height `h` is `1/2 bh`. The area\n of a circle with radius `r` is `pi r^2`.", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

          \n into this text box:

          ", "content": [{"c": "into this text box:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.
          ", "content": [{"c": "It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\`E=mc^2\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          ", "content": [{"c": "As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\`E=mc^2\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          ", "content": [{"c": "It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Einstein's famous formula is\n

          \n `E=mc^2`,\n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n
          ", "content": [{"c": "Einstein's famous formula is`E=mc^2`, where `E` is energy, `m` is mass and `c` is the speed of light.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          ", "content": [{"c": "Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 2. Symbols

          ", "content": {"title_content": "2. Symbols", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          ", "content": [{"c": "If you need to use a mathematical symbol, look it up in the symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.
          ", "content": [{"c": "Remember left-quotes (i.e. \\`) are used to indicate mathematics.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Greek letters are produced by typing the name of the letter, e.g. \\`alpha\\` gives\n `alpha` and \\`beta\\` gives `beta`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\`Sigma\\` gives `Sigma`, whereas \\`sigma\\` gives\n `sigma`.

          ", "content": [{"c": "Greek letters are produced by typing the name of the letter, e.g. \\`alpha\\` gives\n `alpha` and \\`beta\\` gives `beta`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\`Sigma\\` gives `Sigma`, whereas \\`sigma\\` gives\n `sigma`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\`3 -: 4\\` to get `3-: 4` or \\`3//4\\` to get `3//4`. There are several symbols\n for multiplication and these are shown in the box below.

          ", "content": [{"c": "For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\`3 -: 4\\` to get `3-: 4` or \\`3//4\\` to get `3//4`. There are several symbols\n for multiplication and these are shown in the box below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Typing `2xx7 = 14` and `2 times 7 =14` gives the same output.\n \n You might also want\n to write this as `2*7=14` or even `2**7=14`.
          ", "content": [{"c": "Typing `2xx7 = 14` and `2 times 7 =14` gives the same output.\n \n You might also want\n to write this as `2*7=14` or even `2**7=14`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          ", "content": [{"c": "Type the following expressions, referring to the symbol list if necessary.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          \n `\\ \\ \\ \\ \\ ` `int cos x dx` `\\ \\ \\ \\ \\ \\ \\ \\ ` `f @ g (x)` `\\ \\ \\ \\ \\ \\ \\ \\ ` `x in RR` `\\ \\\n \\ \\ \\ \\ \\ \\ ` `phi: A -> B`\n

          ", "content": {"math_content": "\\setminus \\setminus \\setminus \\setminus \\setminus \\int \\cos x \\mathrm{dx} \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus f \\circ g \\left(x\\right) \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus x \\in \\mathbb{R} \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\phi : A \\to B", "math_type": "asciimath", "by": "None"}}, {"type": "paragraph", "raw_content": "
          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.
          ", "content": [{"c": "To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 3. Indices, subscripts, fractions and brackets

          ", "content": {"title_content": "3. Indices, subscripts, fractions and brackets", "level": "2"}}, {"type": "paragraph", "raw_content": "
          \n Notice the brackets in \\`e^(2x)\\` don't appear in the output `e^(2x)`. In the expression\n `f^((3)) (x)` for the third derivative of `f`, we want the brackets to appear so\n we type \\`f^((3))(x)\\`.
          ", "content": [{"c": "Notice the brackets in \\`e^(2x)\\` don't appear in the output `e^(2x)`. In the expression\n `f^((3)) (x)` for the third derivative of `f`, we want the brackets to appear so\n we type \\`f^((3))(x)\\`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n To get an index we use the symbol ^, so for example \\`x^2\\` gives `x^2`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get `e^(2x)` we type \\`e^(2x)\\`, because \\`e^2x\\` gives `e^2x`. However \\`p^32\\`\n gives `p^32` and \\`x^alpha\\` gives `x^alpha`.\n

          ", "content": [{"c": "To get an index we use the symbol ^, so for example \\`x^2\\` gives `x^2`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get `e^(2x)` we type \\`e^(2x)\\`, because \\`e^2x\\` gives `e^2x`. However \\`p^32\\`\n gives `p^32` and \\`x^alpha\\` gives `x^alpha`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\`x_10\\` gives `x_10` and it is necessary to use brackets in \\`x_(ij)\\` to get `x_(ij)`.\n

          ", "content": [{"c": "The symbol _ is used for subscripts and they work in the same way as indices. So\n \\`x_10\\` gives `x_10` and it is necessary to use brackets in \\`x_(ij)\\` to get `x_(ij)`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Remember you can check your answers by hanging the mouse over the expression.
          ", "content": [{"c": "Remember you can check your answers by hanging the mouse over the expression.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Use the text box to type the expressions below.\n

          ", "content": [{"c": "Use the text box to type the expressions below.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          \n `\\ \\ \\ \\ ` `e^x` `\\ \\ \\ \\ ` `pi^2` `\\ \\ \\ \\ ` `(x + 1)^2` `\\ \\ \\ \\ ` `x^3 + 4x^2\n - 5` `\\ \\ \\ \\ ` `a_(nm)` `\\ \\ \\ \\ ` `x_2^3`\n

          ", "content": {"math_content": "\\setminus \\setminus \\setminus \\setminus {e}^{x} \\setminus \\setminus \\setminus \\setminus {\\pi}^{2} \\setminus \\setminus \\setminus \\setminus {\\left(x + 1\\right)}^{2} \\setminus \\setminus \\setminus \\setminus {x}^{3} + 4 {x}^{2} - 5 \\setminus \\setminus \\setminus \\setminus {a}_{n m} \\setminus \\setminus \\setminus \\setminus {x}_{2}^{3}", "math_type": "asciimath", "by": "None"}}, {"type": "paragraph", "raw_content": "

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          ", "content": [{"c": "The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n `sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2`\n

          \n `int_0^1 x^2 dx`
          ", "content": [{"c": "`sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2``int_0^1 x^2 dx`", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n As you can see above, the symbol \\`/\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          ", "content": [{"c": "As you can see above, the symbol \\`/\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          \n `\\ \\ \\ \\ ` `1/(x+1)`\n

          ", "content": {"math_content": "\\setminus \\setminus \\setminus \\setminus \\frac{1}{x + 1}", "math_type": "asciimath", "by": "None"}}, {"type": "paragraph", "raw_content": "

          \n is achieved by typing \\`1/(x+1)\\`. What do you think would be produced by typing\n \\`1/x+1\\`?\n

          ", "content": [{"c": "is achieved by typing \\`1/(x+1)\\`. What do you think would be produced by typing\n \\`1/x+1\\`?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Both \\`x_n/10\\` and \\`(x_n)/(10)\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          ", "content": [{"c": "Both \\`x_n/10\\` and \\`(x_n)/(10)\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          \n `\\ \\ \\ \\ ` `(x+1)/(x+1)` `\\ \\ \\ \\ ` `(x+1)/x^2` `\\ \\ \\ \\ ` `1/3245` `\\ \\ \\ \\ ` `dy/dx`\n `\\ \\ \\ \\ ` `(ab)/(cd)`\n

          ", "content": {"math_content": "\\setminus \\setminus \\setminus \\setminus \\frac{x + 1}{x + 1} \\setminus \\setminus \\setminus \\setminus \\frac{x + 1}{x} ^ 2 \\setminus \\setminus \\setminus \\setminus \\frac{1}{3245} \\setminus \\setminus \\setminus \\setminus \\frac{\\mathrm{dy}}{\\mathrm{dx}} \\setminus \\setminus \\setminus \\setminus \\frac{a b}{c d}", "math_type": "asciimath", "by": "None"}}, {"type": "paragraph", "raw_content": "

          \n Remember that we can get a one line fraction by using //.

          ", "content": [{"c": "Remember that we can get a one line fraction by using //.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read `e^(x//2)` than `e^(x/2)`.
          ", "content": [{"c": "You may wish to use this for fractions that appear as indices, because it is easier\n to read `e^(x//2)` than `e^(x/2)`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Finally, use \\`sqrt(x)\\` for `\\sqrt(x)` and \\`root(x)(y)\\` for `root(x)(y)`. Use\n the box below to type the formula for the solutions of the equation `ax^2+bx+c=0`,\n where `a !=0`.

          ", "content": [{"c": "Finally, use \\`sqrt(x)\\` for `\\sqrt(x)` and \\`root(x)(y)\\` for `root(x)(y)`. Use\n the box below to type the formula for the solutions of the equation `ax^2+bx+c=0`,\n where `a !=0`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          ", "content": [{"c": "[Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 4. Spaces, multiple lines and text

          ", "content": {"title_content": "4. Spaces, multiple lines and text", "level": "2"}}, {"type": "paragraph", "raw_content": "
          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.
          ", "content": [{"c": "In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          ", "content": [{"c": "ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n We set\n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n Thus `(a+b)(c+b)=0`.
          ", "content": [{"c": "We set`a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`. Thus `(a+b)(c+b)=0`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          ", "content": [{"c": "Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to `x`.\n

          ", "content": [{"c": "When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to `x`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Using the quadratic formula, the roots of `x^2-6x+4=0` are\n \n `x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)`\n \n `\\ \\ = (-6 +- sqrt(36 - 16))/2`\n \n `\\ \\ =(-6 +- sqrt(20))/2`\n \n `\\ \\ = -0.8 or 2.2 \\ \\ \\ `to 1 decimal place.
          ", "content": [{"c": "Using the quadratic formula, the roots of `x^2-6x+4=0` are\n \n `x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)`\n \n `\\ \\ = (-6 +- sqrt(36 - 16))/2`\n \n `\\ \\ =(-6 +- sqrt(20))/2`\n \n `\\ \\ = -0.8 or 2.2 \\ \\ \\ `to 1 decimal place.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n
          ", "content": [{"c": "There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\`text(some words)\\`.\n Try removing the inverted commas in the example below to see their effect.

          ", "content": [{"c": "On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\`text(some words)\\`.\n Try removing the inverted commas in the example below to see their effect.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          `sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)`.
          ", "content": [{"c": "`sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)`.", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 5. Matrices and advanced alignment

          ", "content": {"title_content": "5. Matrices and advanced alignment", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          ", "content": [{"c": "The ASCIIMath notation for matrices is demonstrated below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n A `3xx3` matrix,`((1,2,3),(4,5,6),(7,8,9))`, and a `2xx1` matrix, or vector, `((1),(0))`.\n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n
          ", "content": [{"c": "A `3xx3` matrix,`((1,2,3),(4,5,6),(7,8,9))`, and a `2xx1` matrix, or vector, `((1),(0))`. The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`. A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Alter the text in the box above so that it starts with\n

          ", "content": [{"c": "Alter the text in the box above so that it starts with", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ \\ `A `3 xx 2` matrix ,`((1,2),(3,4),(5,6))`,...\n

          ", "content": [{"c": "`\\ \\ \\ \\ \\ `A `3 xx 2` matrix ,`((1,2),(3,4),(5,6))`,...", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n In the general `m xx n` matrix, we used \\`cdots\\` for centred dots. This can be\n useful when writing infinite series, for example\n

          ", "content": [{"c": "In the general `m xx n` matrix, we used \\`cdots\\` for centred dots. This can be\n useful when writing infinite series, for example", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.
          ", "content": [{"c": "`e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Similarly, for low dots, as in `1, ldots, n` use \\`...\\` or \\`ldots\\`.\n

          ", "content": [{"c": "Similarly, for low dots, as in `1, ldots, n` use \\`...\\` or \\`ldots\\`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          ", "content": [{"c": "The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n `|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}`
          ", "content": [{"c": "`|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}`", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Notice the use of \\`text( )\\` round\n the comma after `x ge 0` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          ", "content": [{"c": "Notice the use of \\`text( )\\` round\n the comma after `x ge 0` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n You can look up symbols in the symbol list.
          ", "content": [{"c": "You can look up symbols in the symbol list.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

          \n `((1,2,3,4),(a,b,c,d))` `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ` `{:(f:,[0,6],\n ->, RR),( ,x ,|->, x^2+1):}`\n

          ", "content": {"math_content": "\\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right) \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.", "math_type": "asciimath", "by": "None"}}]], "main_html": "

          \n 1. Words and Equations

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n

          \n into this text box:

          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\`E=mc^2\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          \n Einstein's famous formula is\n

          \n `E=mc^2`,\n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          \n 2. Symbols

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.

          \n Greek letters are produced by typing the name of the letter, e.g. \\`alpha\\` gives\n `alpha` and \\`beta\\` gives `beta`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\`Sigma\\` gives `Sigma`, whereas \\`sigma\\` gives\n `sigma`.

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\`3 -: 4\\` to get `3-: 4` or \\`3//4\\` to get `3//4`. There are several symbols\n for multiplication and these are shown in the box below.

          \n Typing `2xx7 = 14` and `2 times 7 =14` gives the same output.\n \n You might also want\n to write this as `2*7=14` or even `2**7=14`.

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          \n `\\ \\ \\ \\ \\ ` `int cos x dx` `\\ \\ \\ \\ \\ \\ \\ \\ ` `f @ g (x)` `\\ \\ \\ \\ \\ \\ \\ \\ ` `x in RR` `\\ \\\n \\ \\ \\ \\ \\ \\ ` `phi: A -> B`\n

          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.

          \n 3. Indices, subscripts, fractions and brackets

          \n Notice the brackets in \\`e^(2x)\\` don't appear in the output `e^(2x)`. In the expression\n `f^((3)) (x)` for the third derivative of `f`, we want the brackets to appear so\n we type \\`f^((3))(x)\\`.

          \n To get an index we use the symbol ^, so for example \\`x^2\\` gives `x^2`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get `e^(2x)` we type \\`e^(2x)\\`, because \\`e^2x\\` gives `e^2x`. However \\`p^32\\`\n gives `p^32` and \\`x^alpha\\` gives `x^alpha`.\n

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\`x_10\\` gives `x_10` and it is necessary to use brackets in \\`x_(ij)\\` to get `x_(ij)`.\n

          \n Remember you can check your answers by hanging the mouse over the expression.

          \n Use the text box to type the expressions below.\n

          \n `\\ \\ \\ \\ ` `e^x` `\\ \\ \\ \\ ` `pi^2` `\\ \\ \\ \\ ` `(x + 1)^2` `\\ \\ \\ \\ ` `x^3 + 4x^2\n - 5` `\\ \\ \\ \\ ` `a_(nm)` `\\ \\ \\ \\ ` `x_2^3`\n

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          \n `sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2`\n

          \n `int_0^1 x^2 dx`

          \n As you can see above, the symbol \\`/\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          \n `\\ \\ \\ \\ ` `1/(x+1)`\n

          \n is achieved by typing \\`1/(x+1)\\`. What do you think would be produced by typing\n \\`1/x+1\\`?\n

          \n Both \\`x_n/10\\` and \\`(x_n)/(10)\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          \n `\\ \\ \\ \\ ` `(x+1)/(x+1)` `\\ \\ \\ \\ ` `(x+1)/x^2` `\\ \\ \\ \\ ` `1/3245` `\\ \\ \\ \\ ` `dy/dx`\n `\\ \\ \\ \\ ` `(ab)/(cd)`\n

          \n Remember that we can get a one line fraction by using //.

          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read `e^(x//2)` than `e^(x/2)`.

          \n Finally, use \\`sqrt(x)\\` for `\\sqrt(x)` and \\`root(x)(y)\\` for `root(x)(y)`. Use\n the box below to type the formula for the solutions of the equation `ax^2+bx+c=0`,\n where `a !=0`.

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          \n 4. Spaces, multiple lines and text

          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          \n We set\n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n Thus `(a+b)(c+b)=0`.

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to `x`.\n

          \n Using the quadratic formula, the roots of `x^2-6x+4=0` are\n \n `x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)`\n \n `\\ \\ = (-6 +- sqrt(36 - 16))/2`\n \n `\\ \\ =(-6 +- sqrt(20))/2`\n \n `\\ \\ = -0.8 or 2.2 \\ \\ \\ `to 1 decimal place.
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\`text(some words)\\`.\n Try removing the inverted commas in the example below to see their effect.

          `sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)`.

          \n 5. Matrices and advanced alignment

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          \n A `3xx3` matrix,`((1,2,3),(4,5,6),(7,8,9))`, and a `2xx1` matrix, or vector, `((1),(0))`.\n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n

          \n Alter the text in the box above so that it starts with\n

          \n `\\ \\ \\ \\ \\ `A `3 xx 2` matrix ,`((1,2),(3,4),(5,6))`,...\n

          \n In the general `m xx n` matrix, we used \\`cdots\\` for centred dots. This can be\n useful when writing infinite series, for example\n

          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.

          \n Similarly, for low dots, as in `1, ldots, n` use \\`...\\` or \\`ldots\\`.\n

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          \n `|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}`

          \n Notice the use of \\`text( )\\` round\n the comma after `x ge 0` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          \n You can look up symbols in the symbol list.

          \n `((1,2,3,4),(a,b,c,d))` `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ` `{:(f:,[0,6],\n ->, RR),( ,x ,|->, x^2+1):}`\n

          ", "statics": {"title": 5, "paragraph": 49, "paragraph.text": 49, "code": 1, "equation-interline": 5}, "url": "https://www.wjagray.co.uk/maths/ASCIIMathTutorial.html", "content": "## 1. Words and Equations\n\nASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text\n\nNote: The \\\\` key is normally next to the 1 key on the keyboard.\n\n```\n The area of a triangle with base `b`\n and height `h` is `1/2 bh`. The area\n of a circle with radius `r` is `pi r^2`.\n```\n\ninto this text box:\n\nIt is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.\n\nAs you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\\\`E=mc^2\\\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n\nIt is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n\nEinstein's famous formula is\\`E=mc^2\\`, where \\`E\\` is energy, \\`m\\` is mass and \\`c\\` is the speed of light.\n\nTry removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n\n## 2. Symbols\n\nIf you need to use a mathematical symbol, look it up in the symbol list. ASCIIMath has standard functions predefined, so to get \\`sin\n x\\` just type \\\\`sin x\\\\` and \\`ln x\\` type \\\\`ln x\\\\`.\n\nRemember left-quotes (i.e. \\\\`) are used to indicate mathematics.\n\nGreek letters are produced by typing the name of the letter, e.g. \\\\`alpha\\\\` gives\n \\`alpha\\` and \\\\`beta\\\\` gives \\`beta\\`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\\\`Sigma\\\\` gives \\`Sigma\\`, whereas \\\\`sigma\\\\` gives\n \\`sigma\\`.\n\nFor addition and subtraction, just use the symbols on the keyboard. For division,\n type \\\\`3 -: 4\\\\` to get \\`3-: 4\\` or \\\\`3//4\\\\` to get \\`3//4\\`. There are several symbols\n for multiplication and these are shown in the box below.\n\nTyping \\`2xx7 = 14\\` and \\`2 times 7 =14\\` gives the same output.\n \n You might also want\n to write this as \\`2*7=14\\` or even \\`2**7=14\\`.\n\nType the following expressions, referring to the symbol list if necessary.\n\n$$\n\\setminus \\setminus \\setminus \\setminus \\setminus \\int \\cos x \\mathrm{dx} \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus f \\circ g \\left(x\\right) \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus x \\in \\mathbb{R} \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\phi : A \\to B\n$$\n\nTo check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.\n\n## 3. Indices, subscripts, fractions and brackets\n\nNotice the brackets in \\\\`e^(2x)\\\\` don't appear in the output \\`e^(2x)\\`. In the expression\n \\`f^((3)) (x)\\` for the third derivative of \\`f\\`, we want the brackets to appear so\n we type \\\\`f^((3))(x)\\\\`.\n\nTo get an index we use the symbol ^, so for example \\\\`x^2\\\\` gives \\`x^2\\`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get \\`e^(2x)\\` we type \\\\`e^(2x)\\\\`, because \\\\`e^2x\\\\` gives \\`e^2x\\`. However \\\\`p^32\\\\`\n gives \\`p^32\\` and \\\\`x^alpha\\\\` gives \\`x^alpha\\`.\n\nThe symbol _ is used for subscripts and they work in the same way as indices. So\n \\\\`x_10\\\\` gives \\`x_10\\` and it is necessary to use brackets in \\\\`x_(ij)\\\\` to get \\`x_(ij)\\`.\n\nRemember you can check your answers by hanging the mouse over the expression.\n\nUse the text box to type the expressions below.\n\n$$\n\\setminus \\setminus \\setminus \\setminus {e}^{x} \\setminus \\setminus \\setminus \\setminus {\\pi}^{2} \\setminus \\setminus \\setminus \\setminus {\\left(x + 1\\right)}^{2} \\setminus \\setminus \\setminus \\setminus {x}^{3} + 4 {x}^{2} - 5 \\setminus \\setminus \\setminus \\setminus {a}_{n m} \\setminus \\setminus \\setminus \\setminus {x}_{2}^{3}\n$$\n\nThe index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.\n\n\\`sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2\\`\\`int_0^1 x^2 dx\\`\n\nAs you can see above, the symbol \\\\`/\\\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n\n$$\n\\setminus \\setminus \\setminus \\setminus \\frac{1}{x + 1}\n$$\n\nis achieved by typing \\\\`1/(x+1)\\\\`. What do you think would be produced by typing\n \\\\`1/x+1\\\\`?\n\nBoth \\\\`x_n/10\\\\` and \\\\`(x_n)/(10)\\\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n\n$$\n\\setminus \\setminus \\setminus \\setminus \\frac{x + 1}{x + 1} \\setminus \\setminus \\setminus \\setminus \\frac{x + 1}{x} ^ 2 \\setminus \\setminus \\setminus \\setminus \\frac{1}{3245} \\setminus \\setminus \\setminus \\setminus \\frac{\\mathrm{dy}}{\\mathrm{dx}} \\setminus \\setminus \\setminus \\setminus \\frac{a b}{c d}\n$$\n\nRemember that we can get a one line fraction by using //.\n\nYou may wish to use this for fractions that appear as indices, because it is easier\n to read \\`e^(x//2)\\` than \\`e^(x/2)\\`.\n\nFinally, use \\\\`sqrt(x)\\\\` for \\`\\sqrt(x)\\` and \\\\`root(x)(y)\\\\` for \\`root(x)(y)\\`. Use\n the box below to type the formula for the solutions of the equation \\`ax^2+bx+c=0\\`,\n where \\`a !=0\\`.\n\n[Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]\n\n## 4. Spaces, multiple lines and text\n\nIn some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.\n\nASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\\\`\\ \\\\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n\nWe set\\`a=3, \\ \\ \\ b=-3,\\ \\ \\` and \\`\\ \\ c=2\\`. Thus \\`(a+b)(c+b)=0\\`.\n\nNotice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n\nWhen answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to \\`x\\`.\n\nUsing the quadratic formula, the roots of \\`x^2-6x+4=0\\` are\n \n \\`x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)\\`\n \n \\`\\ \\ = (-6 +- sqrt(36 - 16))/2\\`\n \n \\`\\ \\ =(-6 +- sqrt(20))/2\\`\n \n \\`\\ \\ = -0.8 or 2.2 \\ \\ \\ \\`to 1 decimal place.\n\nThere is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n\nOn the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\\\`text(some words)\\\\`.\n Try removing the inverted commas in the example below to see their effect.\n\n\\`sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)\\`.\n\n## 5. Matrices and advanced alignment\n\nThe ASCIIMath notation for matrices is demonstrated below.\n\nA \\`3xx3\\` matrix,\\`((1,2,3),(4,5,6),(7,8,9))\\`, and a \\`2xx1\\` matrix, or vector, \\`((1),(0))\\`. The outer brackets determine the delimiters e.g. \\`|(a,b),(c,d)|=ad-bc\\`. A general \\`m xx n\\` matrix \\`((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))\\`\n\nAlter the text in the box above so that it starts with\n\n\\`\\ \\ \\ \\ \\ \\`A \\`3 xx 2\\` matrix ,\\`((1,2),(3,4),(5,6))\\`,...\n\nIn the general \\`m xx n\\` matrix, we used \\\\`cdots\\\\` for centred dots. This can be\n useful when writing infinite series, for example\n\n\\`e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots \\`.\n\nSimilarly, for low dots, as in \\`1, ldots, n\\` use \\\\`...\\\\` or \\\\`ldots\\\\`.\n\nThe matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\\\`{:\\\\` and\n \\\\`:}\\\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n\n\\`|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}\\`\n\nNotice the use of \\\\`text( )\\\\` round\n the comma after \\`x ge 0\\` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n\nYou can look up symbols in the symbol list.\n\n$$\n\\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right) \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\setminus \\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.\n$$\n", "html": "\n\n\n \n \n ASCIIMath Tutorial\n\n \n\n \n\n \n\n \n\n\n
          \n
          \n
          \n

          \n ASCIIMath Tutorial

          \n

          \n James Gray - The Open University

          \n

          \n This tutorial and accompanying symbol list introduce\n the ASCIIMath notation and some points of good practice in writing mathematics.\n To display the mathematics correctly, this page requires Internet Explorer 6 with\n MathPlayer installed,\n or Mozilla/Firefox/Netscape 7+ with MathML fonts installed (e.g. download the MIT MathML font packages).\n If you have these installed you should see a familiar formula here:

          \n

          \n `x=(-b +- sqrt(b^2 - 4ac))/(2a)`

          \n
          \n
          \n
          \n

          \n 1. Words and Equations

          \n
          \n
          \n

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          \n
          \n
          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          \n
          \n
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n

          \n into this text box:

          \n\t
          \n
          \n
          \n
          \n \n
          \n
          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.
          \n
          \n

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\`E=mc^2\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          \n

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          \n
          \n
          \n Einstein's famous formula is\n

          \n

          \n `E=mc^2`,\n

          \n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n
          \n \n
          \n \n
          \n

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          \n
          \n

          \n 2. Symbols

          \n
          \n

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          \n
          \n
          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.
          \n
          \n

          \n Greek letters are produced by typing the name of the letter, e.g. \\`alpha\\` gives\n `alpha` and \\`beta\\` gives `beta`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\`Sigma\\` gives `Sigma`, whereas \\`sigma\\` gives\n `sigma`.

          \n

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\`3 -: 4\\` to get `3-: 4` or \\`3//4\\` to get `3//4`. There are several symbols\n for multiplication and these are shown in the box below.

          \n
          \n
          \n Typing `2xx7 = 14` and `2 times 7 =14` gives the same output.\n

          \n You might also want\n to write this as `2*7=14` or even `2**7=14`.
          \n \n
          \n
          \n

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          \n

          \n `\\ \\ \\ \\ \\ ` `int cos x dx` `\\ \\ \\ \\ \\ \\ \\ \\ ` `f @ g (x)` `\\ \\ \\ \\ \\ \\ \\ \\ ` `x in RR` `\\ \\\n \\ \\ \\ \\ \\ \\ ` `phi: A -> B`\n

          \n
          \n
          \n
          \n \n
          \n
          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.
          \n

          \n 3. Indices, subscripts, fractions and brackets

          \n
          \n Notice the brackets in \\`e^(2x)\\` don't appear in the output `e^(2x)`. In the expression\n `f^((3)) (x)` for the third derivative of `f`, we want the brackets to appear so\n we type \\`f^((3))(x)\\`.
          \n
          \n

          \n To get an index we use the symbol ^, so for example \\`x^2\\` gives `x^2`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get `e^(2x)` we type \\`e^(2x)\\`, because \\`e^2x\\` gives `e^2x`. However \\`p^32\\`\n gives `p^32` and \\`x^alpha\\` gives `x^alpha`.\n

          \n

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\`x_10\\` gives `x_10` and it is necessary to use brackets in \\`x_(ij)\\` to get `x_(ij)`.\n

          \n
          \n\t
          \n
          \n Remember you can check your answers by hanging the mouse over the expression.
          \n
          \n

          \n Use the text box to type the expressions below.\n

          \n

          \n `\\ \\ \\ \\ ` `e^x` `\\ \\ \\ \\ ` `pi^2` `\\ \\ \\ \\ ` `(x + 1)^2` `\\ \\ \\ \\ ` `x^3 + 4x^2\n - 5` `\\ \\ \\ \\ ` `a_(nm)` `\\ \\ \\ \\ ` `x_2^3`\n

          \n
          \n\t
          \n
          \n
          \n \n
          \n

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          \n
          \n
          \n `sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2`\n

          \n

          \n `int_0^1 x^2 dx`
          \n \n
          \n
          \n

          \n As you can see above, the symbol \\`/\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          \n

          \n `\\ \\ \\ \\ ` `1/(x+1)`\n

          \n

          \n is achieved by typing \\`1/(x+1)\\`. What do you think would be produced by typing\n \\`1/x+1\\`?\n

          \n

          \n Both \\`x_n/10\\` and \\`(x_n)/(10)\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          \n

          \n `\\ \\ \\ \\ ` `(x+1)/(x+1)` `\\ \\ \\ \\ ` `(x+1)/x^2` `\\ \\ \\ \\ ` `1/3245` `\\ \\ \\ \\ ` `dy/dx`\n `\\ \\ \\ \\ ` `(ab)/(cd)`\n

          \n
          \n
          \n
          \n \n
          \n
          \n

          \n Remember that we can get a one line fraction by using //.

          \n
          \n
          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read `e^(x//2)` than `e^(x/2)`.
          \n \n
          \n
          \n

          \n Finally, use \\`sqrt(x)\\` for `\\sqrt(x)` and \\`root(x)(y)\\` for `root(x)(y)`. Use\n the box below to type the formula for the solutions of the equation `ax^2+bx+c=0`,\n where `a !=0`.

          \n
          \n
          \n
          \n \n
          \n
          \n

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          \n
          \n

          \n 4. Spaces, multiple lines and text

          \n
          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.
          \n
          \n

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          \n
          \n
          \n We set\n

          \n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n

          \n Thus `(a+b)(c+b)=0`.
          \n \n
          \n
          \n

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          \n

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to `x`.\n

          \n
          \n
          \n Using the quadratic formula, the roots of `x^2-6x+4=0` are\n

          \n `x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)`\n

          \n `\\ \\ = (-6 +- sqrt(36 - 16))/2`\n

          \n `\\ \\ =(-6 +- sqrt(20))/2`\n

          \n `\\ \\ = -0.8 or 2.2 \\ \\ \\ `to 1 decimal place.
          \n \n
          \n
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n
          \n
          \n

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\`text(some words)\\`.\n Try removing the inverted commas in the example below to see their effect.

          \n
          \n\t
          `sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)`.
          \n \n\t
          \n

          \n 5. Matrices and advanced alignment

          \n
          \n

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          \n
          \n
          \n A `3xx3` matrix,`((1,2,3),(4,5,6),(7,8,9))`, and a `2xx1` matrix, or vector, `((1),(0))`.\n

          \n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n
          \n \n
          \n
          \n

          \n Alter the text in the box above so that it starts with\n

          \n

          \n `\\ \\ \\ \\ \\ `A `3 xx 2` matrix ,`((1,2),(3,4),(5,6))`,...\n

          \n

          \n In the general `m xx n` matrix, we used \\`cdots\\` for centred dots. This can be\n useful when writing infinite series, for example\n

          \n
          \n
          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.
          \n \n
          \n

          \n Similarly, for low dots, as in `1, ldots, n` use \\`...\\` or \\`ldots\\`.\n

          \n

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          \n
          \n
          \n `|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}`
          \n \n
          \n
          \n

          \n Notice the use of \\`text( )\\` round\n the comma after `x ge 0` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          \n
          \n
          \n You can look up symbols in the symbol list.
          \n
          \n

          \n `((1,2,3,4),(a,b,c,d))` `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ` `{:(f:,[0,6],\n ->, RR),( ,x ,|->, x^2+1):}`\n

          \n
          \n
          \n
          \n
          \n \n
          \n
          \n

          \n Acknowledgements

          \n

          \n The ASCIIMath syntax and javascripts were developed by Peter Jipsen (Chapman University).\n Further information can be found at the \n ASCIIMath Homepage.\n

          \n

          \n The javascripts for this page were adapted from Peter Jipsen's \n ASCIIMath email editor by Keith Brunton at Edinburgh University.\n

          \n
          \n
          \n
          \n\n\n"} +{"content_list": [[{"type": "title", "raw_content": "

          \n 1. Words and Equations

          ", "content": {"title_content": "1. Words and Equations", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          ", "content": [{"c": "ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          ", "content": [{"c": "Note: The \\` key is normally next to the 1 key on the keyboard.", "t": "text"}]}, {"type": "code", "raw_content": "
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n ", "inline": false, "content": {"code_content": "The area of a triangle with base `b`\nand height `h` is `1/2 bh`. The area\nof a circle with radius `r` is `pi r^2`.", "by": "tag_pre"}}, {"type": "paragraph", "raw_content": "

          \n into this text box:

          ", "content": [{"c": "into this text box:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.
          ", "content": [{"c": "It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\E = m {c}^{2}. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          ", "content": [{"c": "As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\", "t": "text"}, {"c": "E = m {c}^{2}", "t": "equation-inline"}, {"c": ". Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          ", "content": [{"c": "It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Einstein's famous formula is\n

          \n `E=mc^2`,\n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n
          ", "content": [{"c": "Einstein's famous formula is`E=mc^2`, where `E` is energy, `m` is mass and `c` is the speed of light.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          ", "content": [{"c": "Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 2. Symbols

          ", "content": {"title_content": "2. Symbols", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          ", "content": [{"c": "If you need to use a mathematical symbol, look it up in the symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.
          ", "content": [{"c": "Remember left-quotes (i.e. \\`) are used to indicate mathematics.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Greek letters are produced by typing the name of the letter, e.g. \\\\alpha gives\n \\alpha and \\\\beta gives \\beta. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\\\Sigma gives \\Sigma, whereas \\\\sigma gives\n \\sigma.

          ", "content": [{"c": "Greek letters are produced by typing the name of the letter, e.g. \\", "t": "text"}, {"c": "\\alpha", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "\\alpha", "t": "equation-inline"}, {"c": "and \\", "t": "text"}, {"c": "\\beta", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "\\beta", "t": "equation-inline"}, {"c": ". To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\", "t": "text"}, {"c": "\\Sigma", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "\\Sigma", "t": "equation-inline"}, {"c": ", whereas \\", "t": "text"}, {"c": "\\sigma", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "\\sigma", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\3 \\div 4 to get 3 \\div 4 or \\3 / 4 to get 3 / 4. There are several symbols\n for multiplication and these are shown in the box below.

          ", "content": [{"c": "For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\", "t": "text"}, {"c": "3 \\div 4", "t": "equation-inline"}, {"c": "to get", "t": "text"}, {"c": "3 \\div 4", "t": "equation-inline"}, {"c": "or \\", "t": "text"}, {"c": "3 / 4", "t": "equation-inline"}, {"c": "to get", "t": "text"}, {"c": "3 / 4", "t": "equation-inline"}, {"c": ". There are several symbols\n for multiplication and these are shown in the box below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Typing 2 \\times 7 = 14 and 2 \\times 7 = 14 gives the same output.\n \n You might also want\n to write this as 2 \\cdot 7 = 14 or even 2 \\ast 7 = 14.
          ", "content": [{"c": "Typing", "t": "text"}, {"c": "2 \\times 7 = 14", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "2 \\times 7 = 14", "t": "equation-inline"}, {"c": "gives the same output.\n \n You might also want\n to write this as", "t": "text"}, {"c": "2 \\cdot 7 = 14", "t": "equation-inline"}, {"c": "or even", "t": "text"}, {"c": "2 \\ast 7 = 14", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          ", "content": [{"c": "Type the following expressions, referring to the symbol list if necessary.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\int \\cos x \\mathrm{dx}", "content": {"math_content": "\\int \\cos x \\mathrm{dx}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ \\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ \\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "f \\circ g \\left(x\\right)", "content": {"math_content": "f \\circ g \\left(x\\right)", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ \\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ \\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x \\in \\mathbb{R}", "content": {"math_content": "x \\in \\mathbb{R}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\\n \\ \\ \\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\\n \\ \\ \\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\phi : A \\to B", "content": {"math_content": "\\phi : A \\to B", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.
          ", "content": [{"c": "To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 3. Indices, subscripts, fractions and brackets

          ", "content": {"title_content": "3. Indices, subscripts, fractions and brackets", "level": "2"}}, {"type": "paragraph", "raw_content": "
          \n Notice the brackets in \\{e}^{2 x} don't appear in the output {e}^{2 x}. In the expression\n {f}^{\\left(3\\right)} \\left(x\\right) for the third derivative of f, we want the brackets to appear so\n we type \\{f}^{\\left(3\\right)} \\left(x\\right).
          ", "content": [{"c": "Notice the brackets in \\", "t": "text"}, {"c": "{e}^{2 x}", "t": "equation-inline"}, {"c": "don't appear in the output", "t": "text"}, {"c": "{e}^{2 x}", "t": "equation-inline"}, {"c": ". In the expression", "t": "text"}, {"c": "{f}^{\\left(3\\right)} \\left(x\\right)", "t": "equation-inline"}, {"c": "for the third derivative of", "t": "text"}, {"c": "f", "t": "equation-inline"}, {"c": ", we want the brackets to appear so\n we type \\", "t": "text"}, {"c": "{f}^{\\left(3\\right)} \\left(x\\right)", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n To get an index we use the symbol ^, so for example \\{x}^{2} gives {x}^{2}. An index\n that is anything other than a number or a single letter requires brackets. So to\n get {e}^{2 x} we type \\{e}^{2 x}, because \\{e}^{2} x gives {e}^{2} x. However \\{p}^{32}\n gives {p}^{32} and \\{x}^{\\alpha} gives {x}^{\\alpha}.\n

          ", "content": [{"c": "To get an index we use the symbol ^, so for example \\", "t": "text"}, {"c": "{x}^{2}", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "{x}^{2}", "t": "equation-inline"}, {"c": ". An index\n that is anything other than a number or a single letter requires brackets. So to\n get", "t": "text"}, {"c": "{e}^{2 x}", "t": "equation-inline"}, {"c": "we type \\", "t": "text"}, {"c": "{e}^{2 x}", "t": "equation-inline"}, {"c": ", because \\", "t": "text"}, {"c": "{e}^{2} x", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "{e}^{2} x", "t": "equation-inline"}, {"c": ". However \\", "t": "text"}, {"c": "{p}^{32}", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "{p}^{32}", "t": "equation-inline"}, {"c": "and \\", "t": "text"}, {"c": "{x}^{\\alpha}", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "{x}^{\\alpha}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\{x}_{10} gives {x}_{10} and it is necessary to use brackets in \\{x}_{i j} to get {x}_{i j}.\n

          ", "content": [{"c": "The symbol _ is used for subscripts and they work in the same way as indices. So\n \\", "t": "text"}, {"c": "{x}_{10}", "t": "equation-inline"}, {"c": "gives", "t": "text"}, {"c": "{x}_{10}", "t": "equation-inline"}, {"c": "and it is necessary to use brackets in \\", "t": "text"}, {"c": "{x}_{i j}", "t": "equation-inline"}, {"c": "to get", "t": "text"}, {"c": "{x}_{i j}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Remember you can check your answers by hanging the mouse over the expression.
          ", "content": [{"c": "Remember you can check your answers by hanging the mouse over the expression.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Use the text box to type the expressions below.\n

          ", "content": [{"c": "Use the text box to type the expressions below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{e}^{x}", "content": {"math_content": "{e}^{x}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{\\pi}^{2}", "content": {"math_content": "{\\pi}^{2}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{\\left(x + 1\\right)}^{2}", "content": {"math_content": "{\\left(x + 1\\right)}^{2}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{x}^{3} + 4 {x}^{2} - 5", "content": {"math_content": "{x}^{3} + 4 {x}^{2} - 5", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{a}_{n m}", "content": {"math_content": "{a}_{n m}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{x}_{2}^{3}", "content": {"math_content": "{x}_{2}^{3}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          ", "content": [{"c": "The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "{\\sum}_{k = 1}^{n} k = 1 + 2 + \\cdots + n = \\frac{n \\left(n + 1\\right)}{2}", "content": {"math_content": "{\\sum}_{k = 1}^{n} k = 1 + 2 + \\cdots + n = \\frac{n \\left(n + 1\\right)}{2}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n `int_0^1 x^2 dx`
          ", "content": [{"c": "`int_0^1 x^2 dx`", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n As you can see above, the symbol \\/ is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          ", "content": [{"c": "As you can see above, the symbol \\", "t": "text"}, {"c": "/", "t": "equation-inline"}, {"c": "is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{1}{x + 1}", "content": {"math_content": "\\frac{1}{x + 1}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n is achieved by typing \\\\frac{1}{x + 1}. What do you think would be produced by typing\n \\\\frac{1}{x} + 1?\n

          ", "content": [{"c": "is achieved by typing \\", "t": "text"}, {"c": "\\frac{1}{x + 1}", "t": "equation-inline"}, {"c": ". What do you think would be produced by typing\n \\", "t": "text"}, {"c": "\\frac{1}{x} + 1", "t": "equation-inline"}, {"c": "?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Both \\{x}_{n} / 10 and \\\\frac{{x}_{n}}{10} give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          ", "content": [{"c": "Both \\", "t": "text"}, {"c": "{x}_{n} / 10", "t": "equation-inline"}, {"c": "and \\", "t": "text"}, {"c": "\\frac{{x}_{n}}{10}", "t": "equation-inline"}, {"c": "give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{x + 1}{x + 1}", "content": {"math_content": "\\frac{x + 1}{x + 1}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{x + 1}{x} ^ 2", "content": {"math_content": "\\frac{x + 1}{x} ^ 2", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{1}{3245}", "content": {"math_content": "\\frac{1}{3245}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{\\mathrm{dy}}{\\mathrm{dx}}", "content": {"math_content": "\\frac{\\mathrm{dy}}{\\mathrm{dx}}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{a b}{c d}", "content": {"math_content": "\\frac{a b}{c d}", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n Remember that we can get a one line fraction by using //.

          ", "content": [{"c": "Remember that we can get a one line fraction by using //.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read {e}^{x / 2} than {e}^{\\frac{x}{2}}.
          ", "content": [{"c": "You may wish to use this for fractions that appear as indices, because it is easier\n to read", "t": "text"}, {"c": "{e}^{x / 2}", "t": "equation-inline"}, {"c": "than", "t": "text"}, {"c": "{e}^{\\frac{x}{2}}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Finally, use \\\\sqrt{x} for \\sqrt{x} and \\\\sqrt[x]{y} for \\sqrt[x]{y}. Use\n the box below to type the formula for the solutions of the equation a {x}^{2} + b x + c = 0,\n where a \\ne 0.

          ", "content": [{"c": "Finally, use \\", "t": "text"}, {"c": "\\sqrt{x}", "t": "equation-inline"}, {"c": "for", "t": "text"}, {"c": "\\sqrt{x}", "t": "equation-inline"}, {"c": "and \\", "t": "text"}, {"c": "\\sqrt[x]{y}", "t": "equation-inline"}, {"c": "for", "t": "text"}, {"c": "\\sqrt[x]{y}", "t": "equation-inline"}, {"c": ". Use\n the box below to type the formula for the solutions of the equation", "t": "text"}, {"c": "a {x}^{2} + b x + c = 0", "t": "equation-inline"}, {"c": ",\n where", "t": "text"}, {"c": "a \\ne 0", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          ", "content": [{"c": "[Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 4. Spaces, multiple lines and text

          ", "content": {"title_content": "4. Spaces, multiple lines and text", "level": "2"}}, {"type": "paragraph", "raw_content": "
          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.
          ", "content": [{"c": "In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          ", "content": [{"c": "ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n We set\n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n Thus `(a+b)(c+b)=0`.
          ", "content": [{"c": "We set`a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`. Thus `(a+b)(c+b)=0`.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          ", "content": [{"c": "Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to x.\n

          ", "content": [{"c": "When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to", "t": "text"}, {"c": "x", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n Using the quadratic formula, the roots of {x}^{2} - 6 x + 4 = 0 are\n \n x = \\frac{- 6 \\pm \\sqrt{{\\left(- 6\\right)}^{2} - 4 \\left(1\\right) \\left(4\\right)}}{2 \\times 1}= \\frac{- 6 \\pm \\sqrt{36 - 16}}{2}= \\frac{- 6 \\pm \\sqrt{20}}{2}= - 0.8 \\mathmr{and} 2.2to 1 decimal place.
          ", "content": [{"c": "Using the quadratic formula, the roots of", "t": "text"}, {"c": "{x}^{2} - 6 x + 4 = 0", "t": "equation-inline"}, {"c": "are", "t": "text"}, {"c": "x = \\frac{- 6 \\pm \\sqrt{{\\left(- 6\\right)}^{2} - 4 \\left(1\\right) \\left(4\\right)}}{2 \\times 1}", "t": "equation-inline"}, {"c": "= \\frac{- 6 \\pm \\sqrt{36 - 16}}{2}", "t": "equation-inline"}, {"c": "= \\frac{- 6 \\pm \\sqrt{20}}{2}", "t": "equation-inline"}, {"c": "= - 0.8 \\mathmr{and} 2.2", "t": "equation-inline"}, {"c": "to 1 decimal place.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n
          ", "content": [{"c": "There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\\\textrm{s o m e w \\mathmr{and} \\mathrm{ds}}.\n Try removing the inverted commas in the example below to see their effect.

          ", "content": [{"c": "On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\", "t": "text"}, {"c": "\\textrm{s o m e w \\mathmr{and} \\mathrm{ds}}", "t": "equation-inline"}, {"c": ".\n Try removing the inverted commas in the example below to see their effect.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \\sin = \\text{opp\"/\"hyp} \\mathmr{and} \\cos = \\frac{\\textrm{a \\mathrm{dj}}}{\\textrm{h y p}}.
          ", "content": [{"c": "\\sin = \\text{opp\"/\"hyp} \\mathmr{and} \\cos = \\frac{\\textrm{a \\mathrm{dj}}}{\\textrm{h y p}}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "title", "raw_content": "

          \n 5. Matrices and advanced alignment

          ", "content": {"title_content": "5. Matrices and advanced alignment", "level": "2"}}, {"type": "paragraph", "raw_content": "

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          ", "content": [{"c": "The ASCIIMath notation for matrices is demonstrated below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n A 3 \\times 3 matrix,\\left(\\begin{matrix}1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9\\end{matrix}\\right), and a 2 \\times 1 matrix, or vector, \\left(\\begin{matrix}1 \\\\ 0\\end{matrix}\\right).\n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n
          ", "content": [{"c": "A", "t": "text"}, {"c": "3 \\times 3", "t": "equation-inline"}, {"c": "matrix,", "t": "text"}, {"c": "\\left(\\begin{matrix}1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9\\end{matrix}\\right)", "t": "equation-inline"}, {"c": ", and a", "t": "text"}, {"c": "2 \\times 1", "t": "equation-inline"}, {"c": "matrix, or vector,", "t": "text"}, {"c": "\\left(\\begin{matrix}1 \\\\ 0\\end{matrix}\\right)", "t": "equation-inline"}, {"c": ". The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`. A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Alter the text in the box above so that it starts with\n

          ", "content": [{"c": "Alter the text in the box above so that it starts with", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n `\\ \\ \\ \\ \\ `A 3 \\times 2 matrix ,\\left(\\begin{matrix}1 & 2 \\\\ 3 & 4 \\\\ 5 & 6\\end{matrix}\\right),...\n

          ", "content": [{"c": "`\\ \\ \\ \\ \\ `A", "t": "text"}, {"c": "3 \\times 2", "t": "equation-inline"}, {"c": "matrix ,", "t": "text"}, {"c": "\\left(\\begin{matrix}1 & 2 \\\\ 3 & 4 \\\\ 5 & 6\\end{matrix}\\right)", "t": "equation-inline"}, {"c": ",...", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n In the general m \\times n matrix, we used \\\\cdots for centred dots. This can be\n useful when writing infinite series, for example\n

          ", "content": [{"c": "In the general", "t": "text"}, {"c": "m \\times n", "t": "equation-inline"}, {"c": "matrix, we used \\", "t": "text"}, {"c": "\\cdots", "t": "equation-inline"}, {"c": "for centred dots. This can be\n useful when writing infinite series, for example", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.
          ", "content": [{"c": "`e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n Similarly, for low dots, as in 1 , \\ldots , n use \\\\ldots or \\\\ldots.\n

          ", "content": [{"c": "Similarly, for low dots, as in", "t": "text"}, {"c": "1 , \\ldots , n", "t": "equation-inline"}, {"c": "use \\", "t": "text"}, {"c": "\\ldots", "t": "equation-inline"}, {"c": "or \\", "t": "text"}, {"c": "\\ldots", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          ", "content": [{"c": "The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "| x | = \\left\\{\\left(x , \\mathmr{if} x \\ge 0 \\textrm{,}\\right) , \\left(- x , \\mathmr{if} x < 0.\\right)\\right.", "content": {"math_content": "| x | = \\left\\{\\left(x , \\mathmr{if} x \\ge 0 \\textrm{,}\\right) , \\left(- x , \\mathmr{if} x < 0.\\right)\\right.", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          \n Notice the use of \\\\textrm{} round\n the comma after x \\ge 0 to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          ", "content": [{"c": "Notice the use of \\", "t": "text"}, {"c": "\\textrm{}", "t": "equation-inline"}, {"c": "round\n the comma after", "t": "text"}, {"c": "x \\ge 0", "t": "equation-inline"}, {"c": "to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.", "t": "text"}]}, {"type": "paragraph", "raw_content": "
          \n You can look up symbols in the symbol list.
          ", "content": [{"c": "You can look up symbols in the symbol list.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right)", "content": {"math_content": "\\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right)", "math_type": "asciimath", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ `

          ", "content": [{"c": "`\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ `", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.", "content": {"math_content": "\\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.", "math_type": "asciimath", "by": "mathjax"}}]], "main_html": "

          \n 1. Words and Equations

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n

          \n into this text box:

          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\E = m {c}^{2}. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          \n Einstein's famous formula is\n

          \n `E=mc^2`,\n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          \n 2. Symbols

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.

          \n Greek letters are produced by typing the name of the letter, e.g. \\\\alpha gives\n \\alpha and \\\\beta gives \\beta. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\\\Sigma gives \\Sigma, whereas \\\\sigma gives\n \\sigma.

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\3 \\div 4 to get 3 \\div 4 or \\3 / 4 to get 3 / 4. There are several symbols\n for multiplication and these are shown in the box below.

          \n Typing 2 \\times 7 = 14 and 2 \\times 7 = 14 gives the same output.\n \n You might also want\n to write this as 2 \\cdot 7 = 14 or even 2 \\ast 7 = 14.

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          \n `\\ \\ \\ \\ \\ `

          \\int \\cos x \\mathrm{dx}

          `\\ \\ \\ \\ \\ \\ \\ \\ `

          f \\circ g \\left(x\\right)

          `\\ \\ \\ \\ \\ \\ \\ \\ `

          x \\in \\mathbb{R}

          `\\ \\\n \\ \\ \\ \\ \\ \\ `

          \\phi : A \\to B
          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.

          \n 3. Indices, subscripts, fractions and brackets

          \n Notice the brackets in \\{e}^{2 x} don't appear in the output {e}^{2 x}. In the expression\n {f}^{\\left(3\\right)} \\left(x\\right) for the third derivative of f, we want the brackets to appear so\n we type \\{f}^{\\left(3\\right)} \\left(x\\right).

          \n To get an index we use the symbol ^, so for example \\{x}^{2} gives {x}^{2}. An index\n that is anything other than a number or a single letter requires brackets. So to\n get {e}^{2 x} we type \\{e}^{2 x}, because \\{e}^{2} x gives {e}^{2} x. However \\{p}^{32}\n gives {p}^{32} and \\{x}^{\\alpha} gives {x}^{\\alpha}.\n

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\{x}_{10} gives {x}_{10} and it is necessary to use brackets in \\{x}_{i j} to get {x}_{i j}.\n

          \n Remember you can check your answers by hanging the mouse over the expression.

          \n Use the text box to type the expressions below.\n

          \n `\\ \\ \\ \\ `

          {e}^{x}

          `\\ \\ \\ \\ `

          {\\pi}^{2}

          `\\ \\ \\ \\ `

          {\\left(x + 1\\right)}^{2}

          `\\ \\ \\ \\ `

          {x}^{3} + 4 {x}^{2} - 5

          `\\ \\ \\ \\ `

          {a}_{n m}

          `\\ \\ \\ \\ `

          {x}_{2}^{3}

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          {\\sum}_{k = 1}^{n} k = 1 + 2 + \\cdots + n = \\frac{n \\left(n + 1\\right)}{2}

          \n `int_0^1 x^2 dx`

          \n As you can see above, the symbol \\/ is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          \n `\\ \\ \\ \\ `

          \\frac{1}{x + 1}

          \n is achieved by typing \\\\frac{1}{x + 1}. What do you think would be produced by typing\n \\\\frac{1}{x} + 1?\n

          \n Both \\{x}_{n} / 10 and \\\\frac{{x}_{n}}{10} give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          \n `\\ \\ \\ \\ `

          \\frac{x + 1}{x + 1}

          `\\ \\ \\ \\ `

          \\frac{x + 1}{x} ^ 2

          `\\ \\ \\ \\ `

          \\frac{1}{3245}

          `\\ \\ \\ \\ `

          \\frac{\\mathrm{dy}}{\\mathrm{dx}}

          \n `\\ \\ \\ \\ `

          \\frac{a b}{c d}

          \n Remember that we can get a one line fraction by using //.

          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read {e}^{x / 2} than {e}^{\\frac{x}{2}}.

          \n Finally, use \\\\sqrt{x} for \\sqrt{x} and \\\\sqrt[x]{y} for \\sqrt[x]{y}. Use\n the box below to type the formula for the solutions of the equation a {x}^{2} + b x + c = 0,\n where a \\ne 0.

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          \n 4. Spaces, multiple lines and text

          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          \n We set\n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n Thus `(a+b)(c+b)=0`.

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to x.\n

          \n Using the quadratic formula, the roots of {x}^{2} - 6 x + 4 = 0 are\n \n x = \\frac{- 6 \\pm \\sqrt{{\\left(- 6\\right)}^{2} - 4 \\left(1\\right) \\left(4\\right)}}{2 \\times 1}= \\frac{- 6 \\pm \\sqrt{36 - 16}}{2}= \\frac{- 6 \\pm \\sqrt{20}}{2}= - 0.8 \\mathmr{and} 2.2to 1 decimal place.
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\\\textrm{s o m e w \\mathmr{and} \\mathrm{ds}}.\n Try removing the inverted commas in the example below to see their effect.

          \\sin = \\text{opp\"/\"hyp} \\mathmr{and} \\cos = \\frac{\\textrm{a \\mathrm{dj}}}{\\textrm{h y p}}.

          \n 5. Matrices and advanced alignment

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          \n A 3 \\times 3 matrix,\\left(\\begin{matrix}1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9\\end{matrix}\\right), and a 2 \\times 1 matrix, or vector, \\left(\\begin{matrix}1 \\\\ 0\\end{matrix}\\right).\n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n

          \n Alter the text in the box above so that it starts with\n

          \n `\\ \\ \\ \\ \\ `A 3 \\times 2 matrix ,\\left(\\begin{matrix}1 & 2 \\\\ 3 & 4 \\\\ 5 & 6\\end{matrix}\\right),...\n

          \n In the general m \\times n matrix, we used \\\\cdots for centred dots. This can be\n useful when writing infinite series, for example\n

          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.

          \n Similarly, for low dots, as in 1 , \\ldots , n use \\\\ldots or \\\\ldots.\n

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          | x | = \\left\\{\\left(x , \\mathmr{if} x \\ge 0 \\textrm{,}\\right) , \\left(- x , \\mathmr{if} x < 0.\\right)\\right.

          \n Notice the use of \\\\textrm{} round\n the comma after x \\ge 0 to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          \n You can look up symbols in the symbol list.
          \\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right)

          `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ `

          \\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.", "statics": {"title": 5, "paragraph": 65, "paragraph.text": 131, "code": 1, "paragraph.equation-inline": 70, "equation-interline": 20}, "url": "https://www.wjagray.co.uk/maths/ASCIIMathTutorial.html", "content": "## 1. Words and Equations\n\nASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text\n\nNote: The \\\\` key is normally next to the 1 key on the keyboard.\n\n```\nThe area of a triangle with base `b`\nand height `h` is `1/2 bh`. The area\nof a circle with radius `r` is `pi r^2`.\n```\n\ninto this text box:\n\nIt is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.\n\nAs you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\ $E = m {c}^{2}$ . Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n\nIt is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n\nEinstein's famous formula is\\`E=mc^2\\`, where \\`E\\` is energy, \\`m\\` is mass and \\`c\\` is the speed of light.\n\nTry removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n\n## 2. Symbols\n\nIf you need to use a mathematical symbol, look it up in the symbol list. ASCIIMath has standard functions predefined, so to get \\`sin\n x\\` just type \\\\`sin x\\\\` and \\`ln x\\` type \\\\`ln x\\\\`.\n\nRemember left-quotes (i.e. \\\\`) are used to indicate mathematics.\n\nGreek letters are produced by typing the name of the letter, e.g. \\ $\\alpha$ gives $\\alpha$ and \\ $\\beta$ gives $\\beta$ . To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\ $\\Sigma$ gives $\\Sigma$ , whereas \\ $\\sigma$ gives $\\sigma$ .\n\nFor addition and subtraction, just use the symbols on the keyboard. For division,\n type \\ $3 \\div 4$ to get $3 \\div 4$ or \\ $3 / 4$ to get $3 / 4$ . There are several symbols\n for multiplication and these are shown in the box below.\n\nTyping $2 \\times 7 = 14$ and $2 \\times 7 = 14$ gives the same output.\n \n You might also want\n to write this as $2 \\cdot 7 = 14$ or even $2 \\ast 7 = 14$ .\n\nType the following expressions, referring to the symbol list if necessary.\n\n\\`\\ \\ \\ \\ \\ \\`\n\n$$\n\\int \\cos x \\mathrm{dx}\n$$\n\n\\`\\ \\ \\ \\ \\ \\ \\ \\ \\`\n\n$$\nf \\circ g \\left(x\\right)\n$$\n\n\\`\\ \\ \\ \\ \\ \\ \\ \\ \\`\n\n$$\nx \\in \\mathbb{R}\n$$\n\n\\`\\ \\\n \\ \\ \\ \\ \\ \\ \\`\n\n$$\n\\phi : A \\to B\n$$\n\nTo check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.\n\n## 3. Indices, subscripts, fractions and brackets\n\nNotice the brackets in \\ ${e}^{2 x}$ don't appear in the output ${e}^{2 x}$ . In the expression ${f}^{\\left(3\\right)} \\left(x\\right)$ for the third derivative of $f$ , we want the brackets to appear so\n we type \\ ${f}^{\\left(3\\right)} \\left(x\\right)$ .\n\nTo get an index we use the symbol ^, so for example \\ ${x}^{2}$ gives ${x}^{2}$ . An index\n that is anything other than a number or a single letter requires brackets. So to\n get ${e}^{2 x}$ we type \\ ${e}^{2 x}$ , because \\ ${e}^{2} x$ gives ${e}^{2} x$ . However \\ ${p}^{32}$ gives ${p}^{32}$ and \\ ${x}^{\\alpha}$ gives ${x}^{\\alpha}$ .\n\nThe symbol _ is used for subscripts and they work in the same way as indices. So\n \\ ${x}_{10}$ gives ${x}_{10}$ and it is necessary to use brackets in \\ ${x}_{i j}$ to get ${x}_{i j}$ .\n\nRemember you can check your answers by hanging the mouse over the expression.\n\nUse the text box to type the expressions below.\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{e}^{x}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{\\pi}^{2}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{\\left(x + 1\\right)}^{2}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{x}^{3} + 4 {x}^{2} - 5\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{a}_{n m}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n{x}_{2}^{3}\n$$\n\nThe index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.\n\n$$\n{\\sum}_{k = 1}^{n} k = 1 + 2 + \\cdots + n = \\frac{n \\left(n + 1\\right)}{2}\n$$\n\n\\`int_0^1 x^2 dx\\`\n\nAs you can see above, the symbol \\ $/$ is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{1}{x + 1}\n$$\n\nis achieved by typing \\ $\\frac{1}{x + 1}$ . What do you think would be produced by typing\n \\ $\\frac{1}{x} + 1$ ?\n\nBoth \\ ${x}_{n} / 10$ and \\ $\\frac{{x}_{n}}{10}$ give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{x + 1}{x + 1}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{x + 1}{x} ^ 2\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{1}{3245}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{\\mathrm{dy}}{\\mathrm{dx}}\n$$\n\n\\`\\ \\ \\ \\ \\`\n\n$$\n\\frac{a b}{c d}\n$$\n\nRemember that we can get a one line fraction by using //.\n\nYou may wish to use this for fractions that appear as indices, because it is easier\n to read ${e}^{x / 2}$ than ${e}^{\\frac{x}{2}}$ .\n\nFinally, use \\ $\\sqrt{x}$ for $\\sqrt{x}$ and \\ $\\sqrt[x]{y}$ for $\\sqrt[x]{y}$ . Use\n the box below to type the formula for the solutions of the equation $a {x}^{2} + b x + c = 0$ ,\n where $a \\ne 0$ .\n\n[Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]\n\n## 4. Spaces, multiple lines and text\n\nIn some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.\n\nASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\\\`\\ \\\\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n\nWe set\\`a=3, \\ \\ \\ b=-3,\\ \\ \\` and \\`\\ \\ c=2\\`. Thus \\`(a+b)(c+b)=0\\`.\n\nNotice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n\nWhen answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to $x$ .\n\nUsing the quadratic formula, the roots of ${x}^{2} - 6 x + 4 = 0$ are $x = \\frac{- 6 \\pm \\sqrt{{\\left(- 6\\right)}^{2} - 4 \\left(1\\right) \\left(4\\right)}}{2 \\times 1}$ $= \\frac{- 6 \\pm \\sqrt{36 - 16}}{2}$ $= \\frac{- 6 \\pm \\sqrt{20}}{2}$ $= - 0.8 \\mathmr{and} 2.2$ to 1 decimal place.\n\nThere is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n\nOn the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\ $\\textrm{s o m e w \\mathmr{and} \\mathrm{ds}}$ .\n Try removing the inverted commas in the example below to see their effect.\n\n$\\sin = \\text{opp\"/\"hyp} \\mathmr{and} \\cos = \\frac{\\textrm{a \\mathrm{dj}}}{\\textrm{h y p}}$ .\n\n## 5. Matrices and advanced alignment\n\nThe ASCIIMath notation for matrices is demonstrated below.\n\nA $3 \\times 3$ matrix, $\\left(\\begin{matrix}1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9\\end{matrix}\\right)$ , and a $2 \\times 1$ matrix, or vector, $\\left(\\begin{matrix}1 \\\\ 0\\end{matrix}\\right)$ . The outer brackets determine the delimiters e.g. \\`|(a,b),(c,d)|=ad-bc\\`. A general \\`m xx n\\` matrix \\`((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))\\`\n\nAlter the text in the box above so that it starts with\n\n\\`\\ \\ \\ \\ \\ \\`A $3 \\times 2$ matrix , $\\left(\\begin{matrix}1 & 2 \\\\ 3 & 4 \\\\ 5 & 6\\end{matrix}\\right)$ ,...\n\nIn the general $m \\times n$ matrix, we used \\ $\\cdots$ for centred dots. This can be\n useful when writing infinite series, for example\n\n\\`e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots \\`.\n\nSimilarly, for low dots, as in $1 , \\ldots , n$ use \\ $\\ldots$ or \\ $\\ldots$ .\n\nThe matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\\\`{:\\\\` and\n \\\\`:}\\\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n\n$$\n| x | = \\left\\{\\left(x , \\mathmr{if} x \\ge 0 \\textrm{,}\\right) , \\left(- x , \\mathmr{if} x < 0.\\right)\\right.\n$$\n\nNotice the use of \\ $\\textrm{}$ round\n the comma after $x \\ge 0$ to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n\nYou can look up symbols in the symbol list.\n\n$$\n\\left(\\begin{matrix}1 & 2 & 3 & 4 \\\\ a & b & c & d\\end{matrix}\\right)\n$$\n\n\\`\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\`\n\n$$\n\\left.\\left(f : , \\left[0 , 6\\right] , \\to , \\mathbb{R}\\right) , \\left(, x , \\mapsto , {x}^{2} + 1\\right)\\right.\n$$\n", "html": "\n\n\n \n \n ASCIIMath Tutorial\n\n \n\n \n\n \n\n \n\n\n
          \n
          \n
          \n

          \n ASCIIMath Tutorial

          \n

          \n James Gray - The Open University

          \n

          \n This tutorial and accompanying symbol list introduce\n the ASCIIMath notation and some points of good practice in writing mathematics.\n To display the mathematics correctly, this page requires Internet Explorer 6 with\n MathPlayer installed,\n or Mozilla/Firefox/Netscape 7+ with MathML fonts installed (e.g. download the MIT MathML font packages).\n If you have these installed you should see a familiar formula here:

          \n

          \n `x=(-b +- sqrt(b^2 - 4ac))/(2a)`

          \n
          \n
          \n
          \n

          \n 1. Words and Equations

          \n
          \n
          \n

          \n ASCIIMath works by transforming the text you type into mathematics. To see how it\n works, type this text

          \n
          \n
          \n Note:\n
          \n The \\` key is normally next to the 1 key on the keyboard.
          \n
          \n
          \n    The area of a triangle with base `b`\n    and height `h` is `1/2 bh`. The area\n    of a circle with radius `r` is `pi r^2`.
          \n

          \n into this text box:

          \n\t
          \n
          \n
          \n
          \n \n
          \n
          \n It is also possible to put the mathematics between dollar signs like this: \\$E=mc^2\\$.\n There is no difference in the output.
          \n
          \n

          \n As you type, the output appears in the grey coloured area next to the text entry\n box. We want to type mathematics and text, so to indicate mathematics we enclose\n it between left-quotes, like this: \\`E=mc^2\\`. Because you type the mathematics\n directly, it is quick and easy to include a lot of mathematics in your text.\n

          \n

          \n It is easier to read longer formulae if you put them on a separate line, as you\n can see in the text box below (and the output to the right). Take a look at any\n standard mathematics book to see the use of mathematics in the text and on separate\n lines.\n

          \n
          \n
          \n Einstein's famous formula is\n

          \n

          \n `E=mc^2`,\n

          \n

          \n where `E` is energy, `m` is mass and `c` is the speed of light.\n
          \n \n
          \n \n
          \n

          \n Try removing the blank lines above and below the equation in the text box above.\n After doing this, the equation will no longer appear on a separate line in the output.\n This is intentional, as sometimes you will want to type an equation on a separate\n line (for easy editing) without that occurring in the output.\n

          \n
          \n

          \n 2. Symbols

          \n
          \n

          \n If you need to use a mathematical symbol, look it up in the \n symbol list. ASCIIMath has standard functions predefined, so to get `sin\n x` just type \\`sin x\\` and `ln x` type \\`ln x\\`.

          \n
          \n
          \n Remember left-quotes (i.e. \\`) are used to indicate mathematics.
          \n
          \n

          \n Greek letters are produced by typing the name of the letter, e.g. \\`alpha\\` gives\n `alpha` and \\`beta\\` gives `beta`. To get capital Greek letters, capitalise the\n first letter of the name, e.g. \\`Sigma\\` gives `Sigma`, whereas \\`sigma\\` gives\n `sigma`.

          \n

          \n For addition and subtraction, just use the symbols on the keyboard. For division,\n type \\`3 -: 4\\` to get `3-: 4` or \\`3//4\\` to get `3//4`. There are several symbols\n for multiplication and these are shown in the box below.

          \n
          \n
          \n Typing `2xx7 = 14` and `2 times 7 =14` gives the same output.\n

          \n You might also want\n to write this as `2*7=14` or even `2**7=14`.
          \n \n
          \n
          \n

          \n Type the following expressions, referring to the symbol list\n if necessary.\n

          \n

          \n `\\ \\ \\ \\ \\ ` `int cos x dx` `\\ \\ \\ \\ \\ \\ \\ \\ ` `f @ g (x)` `\\ \\ \\ \\ \\ \\ \\ \\ ` `x in RR` `\\ \\\n \\ \\ \\ \\ \\ \\ ` `phi: A -> B`\n

          \n
          \n
          \n
          \n \n
          \n
          \n To check your answers, hang the mouse pointer over one of the expressions above.\n After a couple of seconds a box will appear showing the ASCIIMath used to type the\n expression. You can always use this to see the ASCIIMath.
          \n

          \n 3. Indices, subscripts, fractions and brackets

          \n
          \n Notice the brackets in \\`e^(2x)\\` don't appear in the output `e^(2x)`. In the expression\n `f^((3)) (x)` for the third derivative of `f`, we want the brackets to appear so\n we type \\`f^((3))(x)\\`.
          \n
          \n

          \n To get an index we use the symbol ^, so for example \\`x^2\\` gives `x^2`. An index\n that is anything other than a number or a single letter requires brackets. So to\n get `e^(2x)` we type \\`e^(2x)\\`, because \\`e^2x\\` gives `e^2x`. However \\`p^32\\`\n gives `p^32` and \\`x^alpha\\` gives `x^alpha`.\n

          \n

          \n The symbol _ is used for subscripts and they work in the same way as indices. So\n \\`x_10\\` gives `x_10` and it is necessary to use brackets in \\`x_(ij)\\` to get `x_(ij)`.\n

          \n
          \n\t
          \n
          \n Remember you can check your answers by hanging the mouse over the expression.
          \n
          \n

          \n Use the text box to type the expressions below.\n

          \n

          \n `\\ \\ \\ \\ ` `e^x` `\\ \\ \\ \\ ` `pi^2` `\\ \\ \\ \\ ` `(x + 1)^2` `\\ \\ \\ \\ ` `x^3 + 4x^2\n - 5` `\\ \\ \\ \\ ` `a_(nm)` `\\ \\ \\ \\ ` `x_2^3`\n

          \n
          \n\t
          \n
          \n
          \n \n
          \n

          \n The index and subscript notation is used to put the upper and lower limits on integrals\n and sums, as in the examples below.

          \n
          \n
          \n `sum_(k=1)^n k = 1+2+ cdots +n=(n(n+1))/2`\n

          \n

          \n `int_0^1 x^2 dx`
          \n \n
          \n
          \n

          \n As you can see above, the symbol \\`/\\` is used for fractions. Unless they are very\n simple expressions, the denominator and numerator must be enclosed in brackets (which\n don't appear in the output). So, for example\n

          \n

          \n `\\ \\ \\ \\ ` `1/(x+1)`\n

          \n

          \n is achieved by typing \\`1/(x+1)\\`. What do you think would be produced by typing\n \\`1/x+1\\`?\n

          \n

          \n Both \\`x_n/10\\` and \\`(x_n)/(10)\\` give the same output, so sometimes it is not\n necessary to use brackets. Try typing the following expressions and experiment with\n using/missing out brackets to produce the same output.\n

          \n

          \n `\\ \\ \\ \\ ` `(x+1)/(x+1)` `\\ \\ \\ \\ ` `(x+1)/x^2` `\\ \\ \\ \\ ` `1/3245` `\\ \\ \\ \\ ` `dy/dx`\n `\\ \\ \\ \\ ` `(ab)/(cd)`\n

          \n
          \n
          \n
          \n \n
          \n
          \n

          \n Remember that we can get a one line fraction by using //.

          \n
          \n
          \n You may wish to use this for fractions that appear as indices, because it is easier\n to read `e^(x//2)` than `e^(x/2)`.
          \n \n
          \n
          \n

          \n Finally, use \\`sqrt(x)\\` for `\\sqrt(x)` and \\`root(x)(y)\\` for `root(x)(y)`. Use\n the box below to type the formula for the solutions of the equation `ax^2+bx+c=0`,\n where `a !=0`.

          \n
          \n
          \n
          \n \n
          \n
          \n

          \n [Hint: the formula appears at the top of this page and you may need to use the symbol\n list.]

          \n
          \n

          \n 4. Spaces, multiple lines and text

          \n
          \n In some browsers, the words quad and qquad will produce longer spaces than a backslash\n and a space.
          \n
          \n

          \n ASCIIMath should generate spaces that are about right in the output, but if you\n want to get an extra space in the mathematics you can use a backslash and a space\n i.e. \\`\\ \\`. Extra spaces are especially useful when you want to put more than one\n expression on a line, as in the example below.\n

          \n
          \n
          \n We set\n

          \n

          \n `a=3, \\ \\ \\ b=-3,\\ \\ ` and `\\ \\ c=2`.\n

          \n

          \n Thus `(a+b)(c+b)=0`.
          \n \n
          \n
          \n

          \n Notice that the punctuation of the sentence appears in the middle line even though\n it is mainly mathematical formulae. When beginning to type mathematics it might\n feel strange to include punctuation, but it is important to do so.\n

          \n

          \n When answering questions that require several lines of working you may like to follow\n the format of the example below. Because the second, third and fourth lines have been indented\n it makes it clear that all lines are equal to `x`.\n

          \n
          \n
          \n Using the quadratic formula, the roots of `x^2-6x+4=0` are\n

          \n `x = (-6 +- sqrt((-6)^2 - 4 (1)(4)))/(2 xx 1)`\n

          \n `\\ \\ = (-6 +- sqrt(36 - 16))/2`\n

          \n `\\ \\ =(-6 +- sqrt(20))/2`\n

          \n `\\ \\ = -0.8 or 2.2 \\ \\ \\ `to 1 decimal place.
          \n \n
          \n
          \n There is a full stop at the end of the last line in this example because\n it is at the end of a sentence, albeit a sentence with a lot of mathematics in it.\n
          \n
          \n

          \n On the last line in the example above we have used the word \"or\". ASCIIMath recognises the words\n \"or\", \"and\" and \"if\". Any other words need to be enclosed in inverted commas or using \\`text(some words)\\`.\n Try removing the inverted commas in the example below to see their effect.

          \n
          \n\t
          `sin = \"opp\"/\"hyp\" \\ \\ \\ and \\ \\ \\ cos = text(adj)/text(hyp)`.
          \n \n\t
          \n

          \n 5. Matrices and advanced alignment

          \n
          \n

          \n The ASCIIMath notation for matrices is demonstrated below.\n

          \n
          \n
          \n A `3xx3` matrix,`((1,2,3),(4,5,6),(7,8,9))`, and a `2xx1` matrix, or vector, `((1),(0))`.\n

          \n

          \n The outer brackets determine the delimiters e.g. `|(a,b),(c,d)|=ad-bc`.\n

          \n

          \n A general `m xx n` matrix `((a_(11), cdots , a_(1n)),(vdots, ddots, vdots),(a_(m1),\n cdots , a_(mn)))`\n
          \n \n
          \n
          \n

          \n Alter the text in the box above so that it starts with\n

          \n

          \n `\\ \\ \\ \\ \\ `A `3 xx 2` matrix ,`((1,2),(3,4),(5,6))`,...\n

          \n

          \n In the general `m xx n` matrix, we used \\`cdots\\` for centred dots. This can be\n useful when writing infinite series, for example\n

          \n
          \n
          \n `e^x = 1+x+1/(2!)x^2 + 1/(3!)x^3 + cdots `.
          \n \n
          \n

          \n Similarly, for low dots, as in `1, ldots, n` use \\`...\\` or \\`ldots\\`.\n

          \n

          \n The matrix notation can be used for aligning material. When doing this, we will\n want to draw matrices without delimiters. For this purpose, we can type \\`{:\\` and\n \\`:}\\` to get invisible brackets. This is necessary when defining a function by\n cases.\n

          \n
          \n
          \n `|x|= {(x , if x ge 0 text(,)),(-x , if x <0.):}`
          \n \n
          \n
          \n

          \n Notice the use of \\`text( )\\` round\n the comma after `x ge 0` to indicate that it really is a comma and not part of the\n matrix syntax. Try to write the matrix below and then try to write the function\n definition using a matrix with two invisible brackets.\n

          \n
          \n
          \n You can look up symbols in the symbol list.
          \n
          \n

          \n `((1,2,3,4),(a,b,c,d))` `\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ` `{:(f:,[0,6],\n ->, RR),( ,x ,|->, x^2+1):}`\n

          \n
          \n
          \n
          \n
          \n \n
          \n
          \n

          \n Acknowledgements

          \n

          \n The ASCIIMath syntax and javascripts were developed by Peter Jipsen (Chapman University).\n Further information can be found at the \n ASCIIMath Homepage.\n

          \n

          \n The javascripts for this page were adapted from Peter Jipsen's \n ASCIIMath email editor by Keith Brunton at Edinburgh University.\n

          \n
          \n
          \n
          \n\n\n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_1.jsonl b/bench/data/groundtruth/math_mathjax_latex_1.jsonl index 3471ae7c..b93fdb78 100644 --- a/bench/data/groundtruth/math_mathjax_latex_1.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

          MathJax v3 beta: TeX input, HTML output test

          ", "content": {"title_content": "MathJax v3 beta: TeX input, HTML output test", "level": "1"}}, {"type": "paragraph", "raw_content": "

          \n When $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n

          ", "content": [{"c": "When $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", "t": "text"}]}, {"type": "title", "raw_content": "

          The Lorenz Equations

          ", "content": {"title_content": "The Lorenz Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \n \\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n

          ", "content": {"math_content": "\\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          The Cauchy-Schwarz Inequality

          ", "content": {"title_content": "The Cauchy-Schwarz Inequality", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \\[\n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n \\]

          ", "content": {"math_content": "\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          A Cross Product Formula

          ", "content": {"title_content": "A Cross Product Formula", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \\[\n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n \\]

          ", "content": {"math_content": "\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          ", "content": {"title_content": "The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \\[P(E) = {n \\choose k} p^k (1-p)^{ n-k} \\]

          ", "content": {"math_content": "P(E) = {n \\choose k} p^k (1-p)^{ n-k}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          An Identity of Ramanujan

          ", "content": {"title_content": "An Identity of Ramanujan", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \\[\n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n \\]

          ", "content": {"math_content": "\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          A Rogers-Ramanujan Identity

          ", "content": {"title_content": "A Rogers-Ramanujan Identity", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \\[\n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n \\]

          ", "content": {"math_content": "1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          Maxwell's Equations

          ", "content": {"title_content": "Maxwell's Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "

          \n \\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n

          ", "content": {"math_content": "\\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          In-line Mathematics

          ", "content": {"title_content": "In-line Mathematics", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          ", "content": [{"c": "Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.", "t": "text"}]}]], "main_html": "

          MathJax v3 beta: TeX input, HTML output test

          \n When $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n

          The Lorenz Equations

          \n \\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n

          The Cauchy-Schwarz Inequality

          \\[\n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n \\]

          A Cross Product Formula

          \\[\n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n \\]

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          \\[P(E) = {n \\choose k} p^k (1-p)^{ n-k} \\]

          An Identity of Ramanujan

          \\[\n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n \\]

          A Rogers-Ramanujan Identity

          \\[\n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n \\]

          Maxwell's Equations

          \n \\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n

          In-line Mathematics

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          ", "statics": {"title": 9, "paragraph": 2, "paragraph.text": 2, "equation-interline": 7}, "url": "https://mathjax.github.io/MathJax-demos-web/tex-chtml.html", "content": "# MathJax v3 beta: TeX input, HTML output test\n\nWhen $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n\n## The Lorenz Equations\n\n$$\n\\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n$$\n\n## The Cauchy-Schwarz Inequality\n\n$$\n\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n$$\n\n## A Cross Product Formula\n\n$$\n\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n$$\n\n## The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:\n\n$$\nP(E) = {n \\choose k} p^k (1-p)^{ n-k}\n$$\n\n## An Identity of Ramanujan\n\n$$\n\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n$$\n\n## A Rogers-Ramanujan Identity\n\n$$\n1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n$$\n\n## Maxwell's Equations\n\n$$\n\\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n$$\n\n## In-line Mathematics\n\nFinally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.\n", "html": "\n\n\n\n \n \n \n MathJax v3 with TeX input and HTML output\n \n \n\n\n

          MathJax v3 beta: TeX input, HTML output test

          \n\n

          \n When $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n

          \n\n

          The Lorenz Equations

          \n\n

          \n \\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n

          \n\n

          The Cauchy-Schwarz Inequality

          \n\n

          \\[\n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n \\]

          \n\n

          A Cross Product Formula

          \n\n

          \\[\n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n \\]

          \n\n

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          \n\n

          \\[P(E) = {n \\choose k} p^k (1-p)^{ n-k} \\]

          \n\n

          An Identity of Ramanujan

          \n\n

          \\[\n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n \\]

          \n\n

          A Rogers-Ramanujan Identity

          \n\n

          \\[\n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n \\]

          \n\n

          Maxwell's Equations

          \n\n

          \n \\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n

          \n\n

          In-line Mathematics

          \n\n

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          \n\n\n\n"} +{"content_list": [[{"type": "title", "raw_content": "

          MathJax v3 beta: TeX input, HTML output test

          ", "content": {"title_content": "MathJax v3 beta: TeX input, HTML output test", "level": "1"}}, {"type": "paragraph", "raw_content": "

          \n When a \\ne 0, there are two solutions to ax^2 + bx + c = 0 and they are\n

          ", "content": [{"c": "When", "t": "text"}, {"c": "a \\ne 0", "t": "equation-inline"}, {"c": ", there are two solutions to", "t": "text"}, {"c": "ax^2 + bx + c = 0", "t": "equation-inline"}, {"c": "and they are", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.", "content": {"math_content": "x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          The Lorenz Equations

          ", "content": {"title_content": "The Lorenz Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "\\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}", "content": {"math_content": "\\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          The Cauchy-Schwarz Inequality

          ", "content": {"title_content": "The Cauchy-Schwarz Inequality", "level": "2"}}, {"type": "equation-interline", "raw_content": "\n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n ", "content": {"math_content": "\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          A Cross Product Formula

          ", "content": {"title_content": "A Cross Product Formula", "level": "2"}}, {"type": "equation-interline", "raw_content": "\n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n ", "content": {"math_content": "\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          ", "content": {"title_content": "The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:", "level": "2"}}, {"type": "equation-interline", "raw_content": "P(E) = {n \\choose k} p^k (1-p)^{ n-k} ", "content": {"math_content": "P(E) = {n \\choose k} p^k (1-p)^{ n-k}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          An Identity of Ramanujan

          ", "content": {"title_content": "An Identity of Ramanujan", "level": "2"}}, {"type": "equation-interline", "raw_content": "\n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n ", "content": {"math_content": "\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          A Rogers-Ramanujan Identity

          ", "content": {"title_content": "A Rogers-Ramanujan Identity", "level": "2"}}, {"type": "equation-interline", "raw_content": "\n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n ", "content": {"math_content": "1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          Maxwell's Equations

          ", "content": {"title_content": "Maxwell's Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "\\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}", "content": {"math_content": "\\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "

          In-line Mathematics

          ", "content": {"title_content": "In-line Mathematics", "level": "2"}}, {"type": "paragraph", "raw_content": "

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+(1+x)^2 is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          ", "content": [{"c": "Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression", "t": "text"}, {"c": "\\sqrt{3x-1}+(1+x)^2", "t": "equation-inline"}, {"c": "is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.", "t": "text"}]}]], "main_html": "

          MathJax v3 beta: TeX input, HTML output test

          \n When a \\ne 0, there are two solutions to ax^2 + bx + c = 0 and they are\n

          x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.

          The Lorenz Equations

          \\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}

          The Cauchy-Schwarz Inequality

          \n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n

          A Cross Product Formula

          \n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          P(E) = {n \\choose k} p^k (1-p)^{ n-k}

          An Identity of Ramanujan

          \n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n

          A Rogers-Ramanujan Identity

          \n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n

          Maxwell's Equations

          \\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}

          In-line Mathematics

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+(1+x)^2 is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          ", "statics": {"title": 9, "paragraph": 2, "paragraph.text": 5, "paragraph.equation-inline": 3, "equation-interline": 8}, "url": "https://mathjax.github.io/MathJax-demos-web/tex-chtml.html", "content": "# MathJax v3 beta: TeX input, HTML output test\n\nWhen $a \\ne 0$ , there are two solutions to $ax^2 + bx + c = 0$ and they are\n\n$$\nx = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\n$$\n\n## The Lorenz Equations\n\n$$\n\\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n$$\n\n## The Cauchy-Schwarz Inequality\n\n$$\n\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n$$\n\n## A Cross Product Formula\n\n$$\n\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n$$\n\n## The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:\n\n$$\nP(E) = {n \\choose k} p^k (1-p)^{ n-k}\n$$\n\n## An Identity of Ramanujan\n\n$$\n\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n$$\n\n## A Rogers-Ramanujan Identity\n\n$$\n1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n$$\n\n## Maxwell's Equations\n\n$$\n\\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n$$\n\n## In-line Mathematics\n\nFinally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.\n", "html": "\n\n\n\n \n \n \n MathJax v3 with TeX input and HTML output\n \n \n\n\n

          MathJax v3 beta: TeX input, HTML output test

          \n\n

          \n When $a \\ne 0$, there are two solutions to \\(ax^2 + bx + c = 0\\) and they are\n $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n

          \n\n

          The Lorenz Equations

          \n\n

          \n \\begin{align}\n \\dot{x} & = \\sigma(y-x) \\\\\n \\dot{y} & = \\rho x - y - xz \\\\\n \\dot{z} & = -\\beta z + xy\n \\end{align}\n

          \n\n

          The Cauchy-Schwarz Inequality

          \n\n

          \\[\n \\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq\n \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n \\]

          \n\n

          A Cross Product Formula

          \n\n

          \\[\n \\mathbf{V}_1 \\times \\mathbf{V}_2 =\n \\begin{vmatrix}\n \\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\\\n \\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\\\n \\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\\\n \\end{vmatrix}\n \\]

          \n\n

          The probability of getting \\(k\\) heads when flipping \\(n\\) coins is:

          \n\n

          \\[P(E) = {n \\choose k} p^k (1-p)^{ n-k} \\]

          \n\n

          An Identity of Ramanujan

          \n\n

          \\[\n \\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n {1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n \\]

          \n\n

          A Rogers-Ramanujan Identity

          \n\n

          \\[\n 1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n \\quad\\quad \\text{for $|q| < 1$}.\n \\]

          \n\n

          Maxwell's Equations

          \n\n

          \n \\begin{align}\n \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n \\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n \\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n \\end{align}\n

          \n\n

          In-line Mathematics

          \n\n

          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

          \n\n\n\n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_3.jsonl b/bench/data/groundtruth/math_mathjax_latex_3.jsonl index c8eb9204..cb6376dd 100644 --- a/bench/data/groundtruth/math_mathjax_latex_3.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_3.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

          For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

          ", "content": [{"c": "For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          Maxwell's equation in the conducting material (assuming linear media) take the form,\n

          ", "content": [{"c": "Maxwell's equation in the conducting material (assuming linear media) take the form,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          Taking the divergence of the \\vec{\\nabla} \\times \\textbf{B}equation and substituting divergence of the electric field with charge density gives,

          ", "content": [{"c": "Taking the divergence of the", "t": "text"}, {"c": "\\vec{\\nabla} \\times \\textbf{B}", "t": "equation-inline"}, {"c": "equation and substituting divergence of the electric field with charge density gives,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can \\rho_fbe an exponentially decreasing function of time?

          ", "content": [{"c": "I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can", "t": "text"}, {"c": "\\rho_f", "t": "equation-inline"}, {"c": "be an exponentially decreasing function of time?", "t": "text"}]}]], "main_html": "

          For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

          \\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}

          Maxwell's equation in the conducting material (assuming linear media) take the form,\n

          \\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}

          Taking the divergence of the \\vec{\\nabla} \\times \\textbf{B}equation and substituting divergence of the electric field with charge density gives,

          \\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}

          I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can \\rho_fbe an exponentially decreasing function of time?

          ", "statics": {"paragraph": 4, "paragraph.text": 6, "equation-interline": 4, "paragraph.equation-inline": 2}, "url": "https://physics.stackexchange.com/questions/621479/how-to-interpret-charge-continuity-equation-for-conductors-that-obey-ohms-law", "content": "For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.\n\n$$\n\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}\n$$\n\nMaxwell's equation in the conducting material (assuming linear media) take the form,\n\n$$\n\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}\n$$\n\n$$\n\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}\n$$\n\nTaking the divergence of the $\\vec{\\nabla} \\times \\textbf{B}$ equation and substituting divergence of the electric field with charge density gives,\n\n$$\n\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}\n$$\n\nI don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can $\\rho_f$ be an exponentially decreasing function of time?\n", "html": "\n\n\n\n\n \n\n \n\n electromagnetism - How to interpret charge continuity equation for conductors that obey Ohm's law? - Physics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n\n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
          \n\n\n\n\n\n
          \n
          \n
          \n\n\n
          \n Skip to main content\n\t
          \n\t\t\t\n\t\t\t
          \n\t\t\t\t
          \n\t\t\t
          \n\t\t\t\n\t\t\t
          \n\t\t\t\t
          \n\t\t\t\t\t

          Stack Exchange Network

          \n\t\t\t\t\t

          \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

          \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
          \n\t\t\t
          \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
          \n
          \n\n\t\n\n\n\n\n
          \n
          \n \n \"Physics\"\n \n\n
          \n
          \n\n
          \n\n\n\n\n
          \n
          \n \n
          \n\n\n\n
          \n
          \n\n
          \n

          Teams

          \n

          Q&A for work

          \n

          Connect and share knowledge within a single location that is structured and easy to search.

          \n \n Learn more about Teams\n \n
          \n\n
          \n \n
          \n
          \n\n\n\n\n
          \n\n\n\n
          \n\n\n\n
          \n \n\n
          \n\n\n \n
          \n
          \n Asked\n \n
          \n
          \n Modified\n 3 years, 10 months ago\n
          \n
          \n Viewed\n 614 times\n
          \n
          \n\n\n\n
          \n\n
          \n \n
          \n
          \n\t\t
          \n
          \n\n
          \n
          \n\n
          \n \n \n
          \n1
          \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
          \n\n
          \n\n\n\n
          \n $\\begingroup$\n
          \n\n

          For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

          \n

          \\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}

          \n

          Maxwell's equation in the conducting material (assuming linear media) take the form,\n\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}

          \n

          \\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}

          \n

          Taking the divergence of the $\\vec{\\nabla} \\times \\textbf{B}$ equation and substituting divergence of the electric field with charge density gives,

          \n

          \\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}

          \n

          I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can $\\rho_f$ be an exponentially decreasing function of time?

          \n
          \n\n \n\n
          \n
          \n
          \n\n\n\n
          \n\n
          \n\n
          \n Share\n
          \n\n
          \n \n
          \n\n \n\n
          \n \n
          \n\n\n\n\n\n\n
          \n
          \n
          \n
          \n\n
          \n
          \n
          \n
          \n asked Mar 16, 2021 at 8:42\n
          \n\n
          \n
          \n
          \"a_point_particle's
          \n
          \n
          \n a_point_particlea_point_particle\n
          \n 11588 bronze badges\n
          \n
          \n
          \n\n\n
          \n
          \n
          \n $\\endgroup$\n
          \n\n\n\n\n \n
          \n
          \n
            \n\n
          \n\t
          \n\n \n
          \n
          \n\n
          \n\n\n\n\n
          \n \n
          \n
          \n
          \n

          \n 1 Answer\n 1\n

          \n
          \n
          \n\n\n
          \n
          \n \n \n Reset to default\n \n
          \n
          \n \n
          \n
          \n\n\n
          \n
          \n
          \n\n\n\n\n
          \n
          \n
          \n\n
          \n \n \n
          \n1
          \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
          \n
          \n \n
          \n
          \n\n\n \n\n
          \n\n
          \n\n\n\n
          \n $\\begingroup$\n
          \n

          You are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:\n$$\\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}$$\nLet me also point out that $\\rho_f$ in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.

          \n

          Now, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.

          \n

          A more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit "battery+wire" does not really sustain charge oscillations.

          \n
          \n
          \n
          \n \n
          \n\n\n\n
          \n\n
          \n\n
          \n Share\n
          \n\n
          \n \n
          \n\n \n\n
          \n \n
          \n\n\n\n\n\n\n
          \n
          \n
          \n
          \n\n\n
          \n
          \n
          \n
          \n answered Mar 16, 2021 at 9:07\n
          \n\n
          \n
          \n
          \"Roger
          \n
          \n
          \n Roger V.Roger V.\n
          \n 65.7k77 gold badges6969 silver badges217217 bronze badges\n
          \n
          \n
          \n\n\n
          \n
          \n\n\n
          \n $\\endgroup$\n
          \n\n\n\n\n 2\n
          \n
          \n
            \n\n
          • \n
            \n
            \n
            \n
            \n
            \n
            \n $\\begingroup$\n Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average?\n $\\endgroup$\n \n \n Commented\n Mar 16, 2021 at 9:27\n \n
            \n
            \n
          • \n
          • \n
            \n
            \n 1\n
            \n
            \n
            \n
            \n $\\begingroup$\n @a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it.\n $\\endgroup$\n
            \n– Roger V.\n
            \n \n Commented\n Mar 16, 2021 at 10:00\n \n
            \n
            \n
          • \n\n
          \n\t
          \n\n \n
          \n
          \n
          \n\n \n
          \n \n \n \n

          \n Your Answer\n

          \n\n\n\n\n\n
          \n\n\n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n
          \n
          \n\n \n\n\n\n
          \n
          Draft saved
          \n
          Draft discarded
          \n
          \n\n\n
          \n
          \n\n
          \n \n \n
          \n\n
          \n\n\n
          \n
          \n
          \n
          \n

          Sign up or log in

          \n \n
          \n Sign up using Google\n
          \n
          \n Sign up using Email and Password\n
          \n
          \n \n \n \n
          \n

          Post as a guest

          \n
          \n
          \n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n

          Required, but never shown

          \n
          \n
          \n
          \n \n
          \n
          \n
          \n\n
          \n
          \n
          \n \n \n\n
          \n\n
          \n \n \n

          \n By clicking \u201cPost Your Answer\u201d, you agree to our terms of service and acknowledge you have read our privacy policy.\n

          \n
          \n
          \n
          \n\n\n

          \n
          \nNot the answer you're looking for? Browse other questions tagged or ask your own question.
          \n

          \n
          \n
          \n\n\n
          \n\n\n\n
          \n
          \n\t\t
          \n
          \n\n\n\n\n\n \n \n\n\n\n\n\n
          \n

          \n \n Hot Network Questions\n \n

          \n \n\n \n more hot questions\n \n
          \n\n \n \n\n
          \n\n
          \n\n
          \n\n\n\n\n\n\n\n
          \n
          \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

          For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

          ", "content": [{"c": "For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          Maxwell's equation in the conducting material (assuming linear media) take the form,\n

          ", "content": [{"c": "Maxwell's equation in the conducting material (assuming linear media) take the form,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          Taking the divergence of the \\vec{\\nabla} \\times \\textbf{B} equation and substituting divergence of the electric field with charge density gives,

          ", "content": [{"c": "Taking the divergence of the", "t": "text"}, {"c": "\\vec{\\nabla} \\times \\textbf{B}", "t": "equation-inline"}, {"c": "equation and substituting divergence of the electric field with charge density gives,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}", "content": {"math_content": "\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

          I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can \\rho_f be an exponentially decreasing function of time?

          ", "content": [{"c": "I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can", "t": "text"}, {"c": "\\rho_f", "t": "equation-inline"}, {"c": "be an exponentially decreasing function of time?", "t": "text"}]}, {"type": "list", "raw_content": "
            ", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "
              ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

              \n 1 Answer\n \n

              ", "content": {"title_content": "1 Answer", "level": "2"}}, {"type": "paragraph", "raw_content": "
              \n1
              ", "content": [{"c": "1", "t": "text"}]}, {"type": "paragraph", "raw_content": "

              You are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:\n

              ", "content": [{"c": "You are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}", "content": {"math_content": "\\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

              \nLet me also point out that \\rho_f in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.

              ", "content": [{"c": "Let me also point out that", "t": "text"}, {"c": "\\rho_f", "t": "equation-inline"}, {"c": "in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

              Now, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.

              ", "content": [{"c": "Now, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

              A more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit \"battery+wire\" does not really sustain charge oscillations.

              ", "content": [{"c": "A more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit \"battery+wire\" does not really sustain charge oscillations.", "t": "text"}]}, {"type": "list", "raw_content": "
              • Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average?
                \n\u2013\u00a0a_point_particle
                CommentedMar 16, 2021 at 9:27
              • 1
                @a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it.
                \n\u2013\u00a0Roger V.
                CommentedMar 16, 2021 at 10:00
              ", "content": {"items": [[[{"c": "Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average?", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "a_point_particle", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 16, 2021 at 9:27", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "@a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Roger V.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 16, 2021 at 10:00", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

              \nNot the answer you're looking for? Browse other questions tagged

              ", "content": {"title_content": "Not the answer you're looking for? Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": "
                or ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                ", "content": {"title_content": "or ask your own question .", "level": "2"}}]], "main_html": "

                For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

                \\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}

                Maxwell's equation in the conducting material (assuming linear media) take the form,\n

                \\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}

                Taking the divergence of the \\vec{\\nabla} \\times \\textbf{B} equation and substituting divergence of the electric field with charge density gives,

                \\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}

                I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can \\rho_f be an exponentially decreasing function of time?

                    \n 1 Answer\n \n

                    \n1

                    You are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:\n

                    \\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}

                    \nLet me also point out that \\rho_f in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.

                    Now, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.

                    A more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit \"battery+wire\" does not really sustain charge oscillations.

                    • Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average?
                      \n\u2013\u00a0a_point_particle
                      CommentedMar 16, 2021 at 9:27
                    • 1
                      @a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it.
                      \n\u2013\u00a0Roger V.
                      CommentedMar 16, 2021 at 10:00

                    \nNot the answer you're looking for? Browse other questions tagged

                      or

                      ", "statics": {"paragraph": 9, "paragraph.text": 12, "equation-interline": 5, "paragraph.equation-inline": 3, "list": 4, "title": 3, "list.text": 11}, "url": "https://physics.stackexchange.com/questions/621479/how-to-interpret-charge-continuity-equation-for-conductors-that-obey-ohms-law", "content": "For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.\n\n$$\n\\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}\n$$\n\nMaxwell's equation in the conducting material (assuming linear media) take the form,\n\n$$\n\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}\n$$\n\n$$\n\\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}\n$$\n\nTaking the divergence of the $\\vec{\\nabla} \\times \\textbf{B}$ equation and substituting divergence of the electric field with charge density gives,\n\n$$\n\\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}\n$$\n\nI don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can $\\rho_f$ be an exponentially decreasing function of time?\n\n## 1 Answer\n\n1\n\nYou are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:\n\n$$\n\\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}\n$$\n\nLet me also point out that $\\rho_f$ in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.\n\nNow, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.\n\nA more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit \"battery+wire\" does not really sustain charge oscillations.\n\n- Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average? \u2013 a_point_particle Commented Mar 16, 2021 at 9:27\n- 1 @a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it. \u2013 Roger V. Commented Mar 16, 2021 at 10:00\n\n## Not the answer you're looking for? Browse other questions tagged\n\n## or ask your own question .\n", "html": "\n\n\n\n\n \n\n \n\n electromagnetism - How to interpret charge continuity equation for conductors that obey Ohm's law? - Physics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n\n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                      \n\n\n\n\n\n
                      \n
                      \n
                      \n\n\n
                      \n Skip to main content\n\t
                      \n\t\t\t\n\t\t\t
                      \n\t\t\t\t
                      \n\t\t\t
                      \n\t\t\t\n\t\t\t
                      \n\t\t\t\t
                      \n\t\t\t\t\t

                      Stack Exchange Network

                      \n\t\t\t\t\t

                      \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                      \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                      \n\t\t\t
                      \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                      \n
                      \n\n\t\n\n\n\n\n
                      \n
                      \n \n \"Physics\"\n \n\n
                      \n
                      \n\n
                      \n\n\n\n\n
                      \n
                      \n \n
                      \n\n\n\n
                      \n
                      \n\n
                      \n

                      Teams

                      \n

                      Q&A for work

                      \n

                      Connect and share knowledge within a single location that is structured and easy to search.

                      \n \n Learn more about Teams\n \n
                      \n\n
                      \n \n
                      \n
                      \n\n\n\n\n
                      \n\n\n\n
                      \n\n\n\n
                      \n \n\n
                      \n\n\n \n
                      \n
                      \n Asked\n \n
                      \n
                      \n Modified\n 3 years, 10 months ago\n
                      \n
                      \n Viewed\n 614 times\n
                      \n
                      \n\n\n\n
                      \n\n
                      \n \n
                      \n
                      \n\t\t
                      \n
                      \n\n
                      \n
                      \n\n
                      \n \n \n
                      \n1
                      \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                      \n\n
                      \n\n\n\n
                      \n $\\begingroup$\n
                      \n\n

                      For conductors, we propose that the free current density is proportional to the applied Electric field and the constant of proportionality is defined as conductivity.

                      \n

                      \\begin{equation}\n\\textbf{J}_\\textbf{f} = \\sigma\\,\\textbf{E}\n\\end{equation}

                      \n

                      Maxwell's equation in the conducting material (assuming linear media) take the form,\n\\begin{equation}\n\\vec{\\nabla} \\cdot \\textbf{E} = \\frac{\\rho_{f}}{\\epsilon} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\vec{\\nabla} \\cdot \\textbf{B} = 0\n\\end{equation}

                      \n

                      \\begin{equation}\n\\vec{\\nabla} \\times \\textbf{E} = -\\partial_t \\,\\textbf{B} \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\ \\vec{\\nabla} \\times \\textbf{B} = \\mu\\sigma \\,\\textbf{E} \\,+ \\mu\\epsilon \\, \\partial_t \\,\\textbf{E}\n\\end{equation}

                      \n

                      Taking the divergence of the $\\vec{\\nabla} \\times \\textbf{B}$ equation and substituting divergence of the electric field with charge density gives,

                      \n

                      \\begin{equation}\n\\frac{\\partial\\rho_f}{\\partial t} = - \\frac{\\sigma}{\\epsilon}\\rho_f \\implies \\rho_f =\\rho_f(0) \\exp(-\\frac{\\sigma}{\\epsilon} \\;t)\n\\end{equation}

                      \n

                      I don't understand what this equation is supposed to mean. If I take some conducting wire and connect it to two ends of a battery the wire still retains its free charges. So how can $\\rho_f$ be an exponentially decreasing function of time?

                      \n
                      \n\n \n\n
                      \n
                      \n
                      \n\n\n\n
                      \n\n
                      \n\n
                      \n Share\n
                      \n\n
                      \n \n
                      \n\n \n\n
                      \n \n
                      \n\n\n\n\n\n\n
                      \n
                      \n
                      \n
                      \n\n
                      \n
                      \n
                      \n
                      \n asked Mar 16, 2021 at 8:42\n
                      \n\n
                      \n
                      \n
                      \"a_point_particle's
                      \n
                      \n
                      \n a_point_particlea_point_particle\n
                      \n 11588 bronze badges\n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n $\\endgroup$\n
                      \n\n\n\n\n \n
                      \n
                      \n
                        \n\n
                      \n\t
                      \n\n \n
                      \n
                      \n\n
                      \n\n\n\n\n
                      \n \n
                      \n
                      \n
                      \n

                      \n 1 Answer\n 1\n

                      \n
                      \n
                      \n\n\n
                      \n
                      \n \n \n Reset to default\n \n
                      \n
                      \n \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n\n\n\n\n
                      \n
                      \n
                      \n\n
                      \n \n \n
                      \n1
                      \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                      \n
                      \n \n
                      \n
                      \n\n\n \n\n
                      \n\n
                      \n\n\n\n
                      \n $\\begingroup$\n
                      \n

                      You are considering differential, i.e., local form of the Maxwell equations, and all your quantities are local, i.e., referring to a specific point in space. There is nothing wrong with the charge at a certain point decreasing - it flows away from this point, as the continuity equation tells us:\n$$\\frac{\\partial \\rho}{\\partial t}=-\\nabla\\cdot\\mathbf{J}$$\nLet me also point out that $\\rho_f$ in your equations is not the total charge, but the net charge at this point, i.e., the difference between the amounts of positive and negative charge.

                      \n

                      Now, if we take a wire or a whole circuit, we are assuming a global picture, which is better described by the integral form of the Maxwell equations. Thus, if we consider a surface enclosing the circuit, the amount of charge inside this surface is not going to change, even though the shape of the distribution of the charge may vary.

                      \n

                      A more subtle point is that talking about circuits one implies lumped element model, where all the electromagnetic phenomena a reduced to basic parameters, such as resistance, current, voltage bias and capacitor's charge. Note also that simple circuit "battery+wire" does not really sustain charge oscillations.

                      \n
                      \n
                      \n
                      \n \n
                      \n\n\n\n
                      \n\n
                      \n\n
                      \n Share\n
                      \n\n
                      \n \n
                      \n\n \n\n
                      \n \n
                      \n\n\n\n\n\n\n
                      \n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n
                      \n answered Mar 16, 2021 at 9:07\n
                      \n\n
                      \n
                      \n
                      \"Roger
                      \n
                      \n
                      \n Roger V.Roger V.\n
                      \n 65.7k77 gold badges6969 silver badges217217 bronze badges\n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n\n\n
                      \n $\\endgroup$\n
                      \n\n\n\n\n 2\n
                      \n
                      \n
                        \n\n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n Thank you, this sort of clears some doubts I had. However, I don't really get how the net charge at a point flows from one point to another when $\\rho_f$ decreases everywhere. Does it get distributed in all directions on average?\n $\\endgroup$\n \n \n Commented\n Mar 16, 2021 at 9:27\n \n
                        \n
                        \n
                      • \n
                      • \n
                        \n
                        \n 1\n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n @a_point_particle your material equation (Ohms law) is valid only within the wire. The solution says that, if the wire were not electrically neutral, the extra charge will flow away from it.\n $\\endgroup$\n
                        \n– Roger V.\n
                        \n \n Commented\n Mar 16, 2021 at 10:00\n \n
                        \n
                        \n
                      • \n\n
                      \n\t
                      \n\n \n
                      \n
                      \n
                      \n\n \n
                      \n \n \n \n

                      \n Your Answer\n

                      \n\n\n\n\n\n
                      \n\n\n
                      \n
                      \n
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n
                      \n
                      \n\n \n\n\n\n
                      \n
                      Draft saved
                      \n
                      Draft discarded
                      \n
                      \n\n\n
                      \n
                      \n\n
                      \n \n \n
                      \n\n
                      \n\n\n
                      \n
                      \n
                      \n
                      \n

                      Sign up or log in

                      \n \n
                      \n Sign up using Google\n
                      \n
                      \n Sign up using Email and Password\n
                      \n
                      \n \n \n \n
                      \n

                      Post as a guest

                      \n
                      \n
                      \n \n
                      \n \n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n \n

                      Required, but never shown

                      \n
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n\n
                      \n
                      \n
                      \n \n \n\n
                      \n\n
                      \n \n \n

                      \n By clicking \u201cPost Your Answer\u201d, you agree to our terms of service and acknowledge you have read our privacy policy.\n

                      \n
                      \n
                      \n
                      \n\n\n

                      \n
                      \nNot the answer you're looking for? Browse other questions tagged or ask your own question.
                      \n

                      \n
                      \n
                      \n\n\n
                      \n\n\n\n
                      \n
                      \n\t\t
                      \n
                      \n\n\n\n\n\n \n \n\n\n\n\n\n
                      \n

                      \n \n Hot Network Questions\n \n

                      \n \n\n \n more hot questions\n \n
                      \n\n \n \n\n
                      \n\n
                      \n\n
                      \n\n\n\n\n\n\n\n
                      \n
                      \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_4.jsonl b/bench/data/groundtruth/math_mathjax_latex_4.jsonl index eb4beebc..ddf6d88c 100644 --- a/bench/data/groundtruth/math_mathjax_latex_4.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_4.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

                      Consider the following system of equations:

                      ", "content": [{"c": "Consider the following system of equations:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{x},\\mathbf{y},\\mathbf{z}, and\\mathbf{u}are1\\times nvectors andD_{\\mathbf{x}},D_{\\mathbf{y}}, andD_{\\mathbf{z}}are diagonaln\\times nmatrices with\\mathbf{x},\\mathbf{y}, and\\mathbf{z}, respectively, along their diagonals (i.e.,D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})).

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{x}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{z}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "\\mathbf{u}", "t": "equation-inline"}, {"c": "are", "t": "text"}, {"c": "1\\times n", "t": "equation-inline"}, {"c": "vectors and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "D_{\\mathbf{z}}", "t": "equation-inline"}, {"c": "are diagonal", "t": "text"}, {"c": "n\\times n", "t": "equation-inline"}, {"c": "matrices with", "t": "text"}, {"c": "\\mathbf{x}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "\\mathbf{z}", "t": "equation-inline"}, {"c": ", respectively, along their diagonals (i.e.,", "t": "text"}, {"c": "D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})", "t": "equation-inline"}, {"c": ").", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      My question is whether it is possible to solve for \\mathbf{y}here \u2013 both the\\mathbf{y}as a vector and the\\mathbf{y}along the diagonal ofD_{\\mathbf{y}}. The problem is that I do not know of operations to pull\\mathbf{y}out ofD_{\\mathbf{y}}. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussedhere. But I am not sure how this would work in this case, as it would be necessary to distribute \\mathbf{y}out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                      ", "content": [{"c": "My question is whether it is possible to solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "here \u2013 both the", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as a vector and the", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "along the diagonal of", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". The problem is that I do not know of operations to pull", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "out of", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}$$", "content": {"math_content": "(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\odotis the Hadamard product ande^T = (1,1,\\ldots)\\in\\mathbb R^n. So, would it be possible to distribute out\\mathbf{y}and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to\\mathbf{y}, notD_{\\mathbf{y}}:

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\odot", "t": "equation-inline"}, {"c": "is the Hadamard product and", "t": "text"}, {"c": "e^T = (1,1,\\ldots)\\in\\mathbb R^n", "t": "equation-inline"}, {"c": ". So, would it be possible to distribute out", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ", not", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}$$", "content": {"math_content": "\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      Edit: Oh, it seems that extracting \\mathbf{y}in this case would be a simple as rewriting the equation above as

                      ", "content": [{"c": "Edit: Oh, it seems that extracting", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "in this case would be a simple as rewriting the equation above as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}$$", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      because rewriting the equation this way would not change the terms along the diagonal of \\mathbf{z}D_{\\mathbf{y}}. Then we can write

                      ", "content": [{"c": "because rewriting the equation this way would not change the terms along the diagonal of", "t": "text"}, {"c": "\\mathbf{z}D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". Then we can write", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}$$", "content": {"math_content": "\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      But then how would solve for \\mathbf{y}in the following?

                      ", "content": [{"c": "But then how would solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "in the following?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      I think that in this case, it would not be possible to solve for a single vector \\mathbf{y}as in the previous case. Instead, we would have a system of polynomials:

                      ", "content": [{"c": "I think that in this case, it would not be possible to solve for a single vector", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as in the previous case. Instead, we would have a system of polynomials:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}$$", "content": {"math_content": "\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{y^2}is a vector where the elements are the squares of the corresponding elements of\\mathbf{y}\u2013 that is,\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}.

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{y^2}", "t": "equation-inline"}, {"c": "is a vector where the elements are the squares of the corresponding elements of", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "\u2013 that is,", "t": "text"}, {"c": "\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      Next, what if we had an equation as follows?

                      ", "content": [{"c": "Next, what if we had an equation as follows?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}$$", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{M}is ann \\times nmatrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal ofD_{\\mathbf{yM}}, we have some linear combination.

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "is an", "t": "text"}, {"c": "n \\times n", "t": "equation-inline"}, {"c": "matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of", "t": "text"}, {"c": "D_{\\mathbf{yM}}", "t": "equation-inline"}, {"c": ", we have some linear combination.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      I think in this case, the polynomial system of equations would be rather complicated. We would have the vector \\mathbf{y^2}again, but this time multiplied by some diagonal matrix based on the elements of\\mathbf{M}andD_{\\mathbf{x}}that is multiplied by a scalar (n, I believe). Then, we would have a set of vectors (n-1, I believe) that each have as elements different products of the elements in\\mathbf{y}(e.g.,y_1 y_3) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in\\mathbf{M}andD_{\\mathbf{x}}.

                      ", "content": [{"c": "I think in this case, the polynomial system of equations would be rather complicated. We would have the vector", "t": "text"}, {"c": "\\mathbf{y^2}", "t": "equation-inline"}, {"c": "again, but this time multiplied by some diagonal matrix based on the elements of", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": "that is multiplied by a scalar (", "t": "text"}, {"c": "n", "t": "equation-inline"}, {"c": ", I believe). Then, we would have a set of vectors (", "t": "text"}, {"c": "n-1", "t": "equation-inline"}, {"c": ", I believe) that each have as elements different products of the elements in", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "(e.g.,", "t": "text"}, {"c": "y_1 y_3", "t": "equation-inline"}, {"c": ") and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      So, I have two questions here:

                      ", "content": [{"c": "So, I have two questions here:", "t": "text"}]}, {"type": "list", "raw_content": "
                      1. Is my general intuition about what this equation would look like correct?
                      2. Are there techniques to solve for the elements of \\mathbf{y}in this system?
                      ", "content": {"items": [[[{"c": "Is my general intuition about what this equation would look like correct?", "t": "text"}]], [[{"c": "Are there techniques to solve for the elements of ", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "in this system?", "t": "text"}]]], "ordered": true}}]], "main_html": "

                      Consider the following system of equations:

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      where \\mathbf{x},\\mathbf{y},\\mathbf{z}, and\\mathbf{u}are1\\times nvectors andD_{\\mathbf{x}},D_{\\mathbf{y}}, andD_{\\mathbf{z}}are diagonaln\\times nmatrices with\\mathbf{x},\\mathbf{y}, and\\mathbf{z}, respectively, along their diagonals (i.e.,D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})).

                      My question is whether it is possible to solve for \\mathbf{y}here \u2013 both the\\mathbf{y}as a vector and the\\mathbf{y}along the diagonal ofD_{\\mathbf{y}}. The problem is that I do not know of operations to pull\\mathbf{y}out ofD_{\\mathbf{y}}. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussedhere. But I am not sure how this would work in this case, as it would be necessary to distribute \\mathbf{y}out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                      $$(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}$$

                      where \\odotis the Hadamard product ande^T = (1,1,\\ldots)\\in\\mathbb R^n. So, would it be possible to distribute out\\mathbf{y}and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to\\mathbf{y}, notD_{\\mathbf{y}}:

                      $$\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}$$

                      Edit: Oh, it seems that extracting \\mathbf{y}in this case would be a simple as rewriting the equation above as

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      because rewriting the equation this way would not change the terms along the diagonal of \\mathbf{z}D_{\\mathbf{y}}. Then we can write

                      $$\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}$$

                      But then how would solve for \\mathbf{y}in the following?

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      I think that in this case, it would not be possible to solve for a single vector \\mathbf{y}as in the previous case. Instead, we would have a system of polynomials:

                      $$\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}$$

                      where \\mathbf{y^2}is a vector where the elements are the squares of the corresponding elements of\\mathbf{y}\u2013 that is,\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}.

                      Next, what if we had an equation as follows?

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      where \\mathbf{M}is ann \\times nmatrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal ofD_{\\mathbf{yM}}, we have some linear combination.

                      I think in this case, the polynomial system of equations would be rather complicated. We would have the vector \\mathbf{y^2}again, but this time multiplied by some diagonal matrix based on the elements of\\mathbf{M}andD_{\\mathbf{x}}that is multiplied by a scalar (n, I believe). Then, we would have a set of vectors (n-1, I believe) that each have as elements different products of the elements in\\mathbf{y}(e.g.,y_1 y_3) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in\\mathbf{M}andD_{\\mathbf{x}}.

                      So, I have two questions here:

                      1. Is my general intuition about what this equation would look like correct?
                      2. Are there techniques to solve for the elements of \\mathbf{y}in this system?
                      ", "statics": {"paragraph": 13, "paragraph.text": 57, "equation-interline": 8, "paragraph.equation-inline": 44, "list": 1, "list.text": 3, "list.equation-inline": 1}, "url": "https://math.stackexchange.com/questions/4082284/solving-for-vector-contained-in-a-diagonal-matrix", "content": "Consider the following system of equations:\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{x}$ , $\\mathbf{y}$ , $\\mathbf{z}$ , and $\\mathbf{u}$ are $1\\times n$ vectors and $D_{\\mathbf{x}}$ , $D_{\\mathbf{y}}$ , and $D_{\\mathbf{z}}$ are diagonal $n\\times n$ matrices with $\\mathbf{x}$ , $\\mathbf{y}$ , and $\\mathbf{z}$ , respectively, along their diagonals (i.e., $D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})$ ).\n\nMy question is whether it is possible to solve for $\\mathbf{y}$ here \u2013 both the $\\mathbf{y}$ as a vector and the $\\mathbf{y}$ along the diagonal of $D_{\\mathbf{y}}$ . The problem is that I do not know of operations to pull $\\mathbf{y}$ out of $D_{\\mathbf{y}}$ . The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute $\\mathbf{y}$ out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write\n\n$$\n(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}\n$$\n\nwhere $\\odot$ is the Hadamard product and $e^T = (1,1,\\ldots)\\in\\mathbb R^n$ . So, would it be possible to distribute out $\\mathbf{y}$ and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to $\\mathbf{y}$ , not $D_{\\mathbf{y}}$ :\n\n$$\n\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}\n$$\n\nEdit: Oh, it seems that extracting $\\mathbf{y}$ in this case would be a simple as rewriting the equation above as\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nbecause rewriting the equation this way would not change the terms along the diagonal of $\\mathbf{z}D_{\\mathbf{y}}$ . Then we can write\n\n$$\n\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}\n$$\n\nBut then how would solve for $\\mathbf{y}$ in the following?\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nI think that in this case, it would not be possible to solve for a single vector $\\mathbf{y}$ as in the previous case. Instead, we would have a system of polynomials:\n\n$$\n\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{y^2}$ is a vector where the elements are the squares of the corresponding elements of $\\mathbf{y}$ \u2013 that is, $\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}$ .\n\nNext, what if we had an equation as follows?\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{M}$ is an $n \\times n$ matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of $D_{\\mathbf{yM}}$ , we have some linear combination.\n\nI think in this case, the polynomial system of equations would be rather complicated. We would have the vector $\\mathbf{y^2}$ again, but this time multiplied by some diagonal matrix based on the elements of $\\mathbf{M}$ and $D_{\\mathbf{x}}$ that is multiplied by a scalar ( $n$ , I believe). Then, we would have a set of vectors ( $n-1$ , I believe) that each have as elements different products of the elements in $\\mathbf{y}$ (e.g., $y_1 y_3$ ) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in $\\mathbf{M}$ and $D_{\\mathbf{x}}$ .\n\nSo, I have two questions here:\n\n1. Is my general intuition about what this equation would look like correct?\n2. Are there techniques to solve for the elements of $\\mathbf{y}$ in this system?\n", "html": "\n\n\n\n\n \n\n \n\n linear algebra - Solving for vector contained in a diagonal matrix - Mathematics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                      \n\n\n\n\n\n
                      \n
                      \n
                      \n\n\n
                      \n Skip to main content\n\t
                      \n\t\t\t\n\t\t\t
                      \n\t\t\t\t
                      \n\t\t\t
                      \n\t\t\t\n\t\t\t
                      \n\t\t\t\t
                      \n\t\t\t\t\t

                      Stack Exchange Network

                      \n\t\t\t\t\t

                      \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                      \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                      \n\t\t\t
                      \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                      \n
                      \n\n\t\n\n\n\n\n
                      \n
                      \n \n \"Mathematics\"\n \n\n
                      \n
                      \n\n
                      \n\n\n\n\n
                      \n
                      \n \n
                      \n\n\n\n
                      \n
                      \n\n
                      \n

                      Teams

                      \n

                      Q&A for work

                      \n

                      Connect and share knowledge within a single location that is structured and easy to search.

                      \n \n Learn more about Teams\n \n
                      \n\n
                      \n \n
                      \n
                      \n\n\n\n\n
                      \n\n\n\n
                      \n\n\n\n
                      \n \n\n
                      \n\n\n \n
                      \n
                      \n Asked\n \n
                      \n
                      \n Modified\n 3 years, 9 months ago\n
                      \n
                      \n Viewed\n 234 times\n
                      \n
                      \n\n\n\n
                      \n\n
                      \n \n
                      \n
                      \n\t\t
                      \n
                      \n\n
                      \n
                      \n\n
                      \n \n \n
                      \n2
                      \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                      \n\n
                      \n\n\n\n
                      \n $\\begingroup$\n
                      \n\n

                      Consider the following system of equations:

                      \n

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      \n

                      where $\\mathbf{x}$, $\\mathbf{y}$, $\\mathbf{z}$, and $\\mathbf{u}$ are $1\\times n$ vectors and $D_{\\mathbf{x}}$, $D_{\\mathbf{y}}$, and $D_{\\mathbf{z}}$ are diagonal $n\\times n$ matrices with $\\mathbf{x}$, $\\mathbf{y}$, and $\\mathbf{z}$, respectively, along their diagonals (i.e., $D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})$).

                      \n

                      My question is whether it is possible to solve for $\\mathbf{y}$ here \u2013 both the $\\mathbf{y}$ as a vector and the $\\mathbf{y}$ along the diagonal of $D_{\\mathbf{y}}$. The problem is that I do not know of operations to pull $\\mathbf{y}$ out of $D_{\\mathbf{y}}$. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute $\\mathbf{y}$ out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                      \n

                      $$(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}$$

                      \n

                      where $\\odot$ is the Hadamard product and $e^T = (1,1,\\ldots)\\in\\mathbb R^n$. So, would it be possible to distribute out $\\mathbf{y}$ and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to $\\mathbf{y}$, not $D_{\\mathbf{y}}$:

                      \n

                      $$\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}$$

                      \n

                      Edit: Oh, it seems that extracting $\\mathbf{y}$ in this case would be a simple as rewriting the equation above as

                      \n

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      \n

                      because rewriting the equation this way would not change the terms along the diagonal of $\\mathbf{z}D_{\\mathbf{y}}$. Then we can write

                      \n

                      $$\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}$$

                      \n

                      But then how would solve for $\\mathbf{y}$ in the following?

                      \n

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      \n

                      I think that in this case, it would not be possible to solve for a single vector $\\mathbf{y}$ as in the previous case. Instead, we would have a system of polynomials:

                      \n

                      $$\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}$$

                      \n

                      where $\\mathbf{y^2}$ is a vector where the elements are the squares of the corresponding elements of $\\mathbf{y}$ \u2013 that is, $\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}$.

                      \n

                      Next, what if we had an equation as follows?

                      \n

                      $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}$$

                      \n

                      where $\\mathbf{M}$ is an $n \\times n$ matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of $D_{\\mathbf{yM}}$, we have some linear combination.

                      \n

                      I think in this case, the polynomial system of equations would be rather complicated. We would have the vector $\\mathbf{y^2}$ again, but this time multiplied by some diagonal matrix based on the elements of $\\mathbf{M}$ and $D_{\\mathbf{x}}$ that is multiplied by a scalar ($n$, I believe). Then, we would have a set of vectors ($n-1$, I believe) that each have as elements different products of the elements in $\\mathbf{y}$ (e.g., $y_1 y_3$) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in $\\mathbf{M}$ and $D_{\\mathbf{x}}$.

                      \n

                      So, I have two questions here:

                      \n
                        \n
                      1. Is my general intuition about what this equation would look like correct?
                      2. \n
                      3. Are there techniques to solve for the elements of $\\mathbf{y}$ in this system?
                      4. \n
                      \n
                      \n\n
                      \n
                      \n \n
                      \n
                      \n\n
                      \n
                      \n
                      \n\n\n\n
                      \n\n
                      \n\n
                      \n Share\n
                      \n\n
                      \n \n
                      \n\n\n
                      \n \n
                      \n\n\n\n\n\n\n
                      \n
                      \n
                      \n
                      \n\n
                      \n
                      \n \n
                      \n\n
                      \n
                      \n Ryan da Silva\n
                      \n\n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n asked Mar 29, 2021 at 23:19\n
                      \n\n
                      \n
                      \n
                      \"Ryan
                      \n
                      \n
                      \n Ryan da SilvaRyan da Silva\n
                      \n 6511 silver badge77 bronze badges\n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n $\\endgroup$\n
                      \n\n\n\n\n \n
                      \n
                      \n
                        \n\n
                      \n\t
                      \n\n \n
                      \n
                      \n\n
                      \n\n\n\n\n
                      \n \n
                      \n
                      \n
                      \n

                      \n 1 Answer\n 1\n

                      \n
                      \n
                      \n\n\n
                      \n
                      \n \n \n Reset to default\n \n
                      \n
                      \n \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n\n\n\n\n
                      \n
                      \n
                      \n\n
                      \n \n \n
                      \n1
                      \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                      \n
                      \n \n
                      \n
                      \n\n\n \n\n
                      \n\n
                      \n\n\n\n
                      \n $\\begingroup$\n
                      \n

                      I am not sure what the notation $D_\\mathbf{x}$, $D_\\mathbf{y}$, and $D_\\mathbf{z}$ represent and if the importance is significant, but assuming $D_{\\mathbf{x}}$ is invertible, you may solve for $\\mathbf{y}$ as follows given the original equation:

                      \n

                      $$ \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}} $$\n$$ \\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} $$\n$$ \\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1} $$

                      \n

                      Note: I can't verify that your edit is correct because I don't understand what $D_{\\mathbf{x} + \\mathbf{z}}$ represents.

                      \n

                      Edit 1:

                      \n

                      Thank you for the response as I didn't realize the meaning of the matrices $D_{\\mathbf{x}}$, $D_{\\mathbf{y}}$, and $D_{\\mathbf{z}}$. Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.

                      \n

                      Since $D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x})$ and similarly for the other matrices, we have

                      \n

                      $$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                      \n

                      and multiplying through we have

                      \n

                      $$\n\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}\n$$

                      \n

                      Therefore, this can be written in matrix form as

                      \n

                      $$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                      \n

                      or more concisely as

                      \n

                      $$ \\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}} $$

                      \n

                      which is exactly what is given in your edit:

                      \n

                      $$ \\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}$$

                      \n

                      Edit 2:

                      \n

                      As for the case where you have $\\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}}$ where $\\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}$, you would not be able to solve for $\\mathbf{y}$ as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):

                      \n

                      $$\n\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                      \n

                      where we cannot solve for the matrix containing the $y$ variables because we cannot eliminate $\\mathbf{x}$ from the left side of the equation.

                      \n
                      \n
                      \n
                      \n \n
                      \n\n\n\n
                      \n\n
                      \n\n
                      \n Share\n
                      \n\n
                      \n \n
                      \n\n\n
                      \n \n
                      \n\n\n\n\n\n\n
                      \n
                      \n
                      \n
                      \n
                      \n
                      \n \n
                      \n\n
                      \n
                      \n\n
                      \n\n
                      \n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n
                      \n
                      \n answered Mar 30, 2021 at 8:19\n
                      \n\n
                      \n
                      \n
                      \"Ralff's
                      \n
                      \n
                      \n RalffRalff\n
                      \n 1,55199 silver badges2424 bronze badges\n
                      \n
                      \n
                      \n\n\n
                      \n
                      \n\n\n
                      \n $\\endgroup$\n
                      \n\n\n\n\n 4\n
                      \n
                      \n
                        \n\n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$.\n $\\endgroup$\n
                        \n– Ryan da Silva\n
                        \n \n Commented\n Mar 31, 2021 at 5:45\n \n \n \n \n
                        \n
                        \n
                      • \n
                      • \n
                        \n
                        \n 1\n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck!\n $\\endgroup$\n
                        \n– Ralff\n
                        \n \n Commented\n Mar 31, 2021 at 6:15\n \n \n \n \n
                        \n
                        \n
                      • \n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on.\n $\\endgroup$\n
                        \n– Ryan da Silva\n
                        \n \n Commented\n Mar 31, 2021 at 17:38\n \n
                        \n
                        \n
                      • \n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n
                        \n $\\begingroup$\n @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result.\n $\\endgroup$\n
                        \n– Ralff\n
                        \n \n Commented\n Mar 31, 2021 at 18:47\n \n
                        \n
                        \n
                      • \n\n
                      \n\t
                      \n\n \n
                      \n
                      \n
                      \n

                      \n You must log in to answer this question.\n

                      \n\n\n\n

                      \n
                      \nNot the answer you're looking for? Browse other questions tagged .
                      \n

                      \n
                      \n
                      \n\n\n
                      \n\n\n\n
                      \n
                      \n\t\t
                      \n
                      \n
                      \n\t

                      Linked

                      \n\t \n
                      \n\n\n\n\n\n \n \n\n\n\n\n\n
                      \n

                      \n \n Hot Network Questions\n \n

                      \n \n\n \n more hot questions\n \n
                      \n\n \n \n\n
                      \n\n
                      \n\n
                      \n\n\n\n\n\n\n\n
                      \n
                      \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

                      Consider the following system of equations:

                      ", "content": [{"c": "Consider the following system of equations:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{x}, \\mathbf{y}, \\mathbf{z}, and \\mathbf{u} are 1\\times n vectors and D_{\\mathbf{x}}, D_{\\mathbf{y}}, and D_{\\mathbf{z}} are diagonal n\\times n matrices with \\mathbf{x}, \\mathbf{y}, and \\mathbf{z}, respectively, along their diagonals (i.e., D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})).

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{x}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{z}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "\\mathbf{u}", "t": "equation-inline"}, {"c": "are", "t": "text"}, {"c": "1\\times n", "t": "equation-inline"}, {"c": "vectors and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "D_{\\mathbf{z}}", "t": "equation-inline"}, {"c": "are diagonal", "t": "text"}, {"c": "n\\times n", "t": "equation-inline"}, {"c": "matrices with", "t": "text"}, {"c": "\\mathbf{x}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "\\mathbf{z}", "t": "equation-inline"}, {"c": ", respectively, along their diagonals (i.e.,", "t": "text"}, {"c": "D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})", "t": "equation-inline"}, {"c": ").", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      My question is whether it is possible to solve for \\mathbf{y} here \u2013 both the \\mathbf{y} as a vector and the \\mathbf{y} along the diagonal of D_{\\mathbf{y}}. The problem is that I do not know of operations to pull \\mathbf{y} out of D_{\\mathbf{y}}. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute \\mathbf{y} out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                      ", "content": [{"c": "My question is whether it is possible to solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "here \u2013 both the", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as a vector and the", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "along the diagonal of", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". The problem is that I do not know of operations to pull", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "out of", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write", "t": "text"}]}, {"type": "equation-interline", "raw_content": "(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}", "content": {"math_content": "(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\odot is the Hadamard product and e^T = (1,1,\\ldots)\\in\\mathbb R^n. So, would it be possible to distribute out \\mathbf{y} and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to \\mathbf{y}, not D_{\\mathbf{y}}:

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\odot", "t": "equation-inline"}, {"c": "is the Hadamard product and", "t": "text"}, {"c": "e^T = (1,1,\\ldots)\\in\\mathbb R^n", "t": "equation-inline"}, {"c": ". So, would it be possible to distribute out", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": ", not", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}", "content": {"math_content": "\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      Edit: Oh, it seems that extracting \\mathbf{y} in this case would be a simple as rewriting the equation above as

                      ", "content": [{"c": "Edit: Oh, it seems that extracting", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "in this case would be a simple as rewriting the equation above as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      because rewriting the equation this way would not change the terms along the diagonal of \\mathbf{z}D_{\\mathbf{y}}. Then we can write

                      ", "content": [{"c": "because rewriting the equation this way would not change the terms along the diagonal of", "t": "text"}, {"c": "\\mathbf{z}D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ". Then we can write", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}", "content": {"math_content": "\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      But then how would solve for \\mathbf{y} in the following?

                      ", "content": [{"c": "But then how would solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "in the following?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      I think that in this case, it would not be possible to solve for a single vector \\mathbf{y} as in the previous case. Instead, we would have a system of polynomials:

                      ", "content": [{"c": "I think that in this case, it would not be possible to solve for a single vector", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as in the previous case. Instead, we would have a system of polynomials:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}", "content": {"math_content": "\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{y^2} is a vector where the elements are the squares of the corresponding elements of \\mathbf{y} \u2013 that is, \\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}.

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{y^2}", "t": "equation-inline"}, {"c": "is a vector where the elements are the squares of the corresponding elements of", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "\u2013 that is,", "t": "text"}, {"c": "\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      Next, what if we had an equation as follows?

                      ", "content": [{"c": "Next, what if we had an equation as follows?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                      where \\mathbf{M} is an n \\times n matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of D_{\\mathbf{yM}}, we have some linear combination.

                      ", "content": [{"c": "where", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "is an", "t": "text"}, {"c": "n \\times n", "t": "equation-inline"}, {"c": "matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of", "t": "text"}, {"c": "D_{\\mathbf{yM}}", "t": "equation-inline"}, {"c": ", we have some linear combination.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      I think in this case, the polynomial system of equations would be rather complicated. We would have the vector \\mathbf{y^2} again, but this time multiplied by some diagonal matrix based on the elements of \\mathbf{M} and D_{\\mathbf{x}} that is multiplied by a scalar (n, I believe). Then, we would have a set of vectors (n-1, I believe) that each have as elements different products of the elements in \\mathbf{y} (e.g., y_1 y_3) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in \\mathbf{M} and D_{\\mathbf{x}}.

                      ", "content": [{"c": "I think in this case, the polynomial system of equations would be rather complicated. We would have the vector", "t": "text"}, {"c": "\\mathbf{y^2}", "t": "equation-inline"}, {"c": "again, but this time multiplied by some diagonal matrix based on the elements of", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": "that is multiplied by a scalar (", "t": "text"}, {"c": "n", "t": "equation-inline"}, {"c": ", I believe). Then, we would have a set of vectors (", "t": "text"}, {"c": "n-1", "t": "equation-inline"}, {"c": ", I believe) that each have as elements different products of the elements in", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "(e.g.,", "t": "text"}, {"c": "y_1 y_3", "t": "equation-inline"}, {"c": ") and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in", "t": "text"}, {"c": "\\mathbf{M}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                      So, I have two questions here:

                      ", "content": [{"c": "So, I have two questions here:", "t": "text"}]}, {"type": "list", "raw_content": "
                      1. Is my general intuition about what this equation would look like correct?
                      2. Are there techniques to solve for the elements of \\mathbf{y} in this system?
                      ", "content": {"items": [[[{"c": "Is my general intuition about what this equation would look like correct?", "t": "text"}]], [[{"c": "Are there techniques to solve for the elements of ", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": " in this system?", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                        ", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "
                          ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                          \n 1 Answer\n \n

                          ", "content": {"title_content": "1 Answer", "level": "2"}}, {"type": "paragraph", "raw_content": "
                          \n1
                          ", "content": [{"c": "1", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                          I am not sure what the notation D_\\mathbf{x}, D_\\mathbf{y}, and D_\\mathbf{z} represent and if the importance is significant, but assuming D_{\\mathbf{x}} is invertible, you may solve for \\mathbf{y} as follows given the original equation:

                          ", "content": [{"c": "I am not sure what the notation", "t": "text"}, {"c": "D_\\mathbf{x}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "D_\\mathbf{y}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "D_\\mathbf{z}", "t": "equation-inline"}, {"c": "represent and if the importance is significant, but assuming", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": "is invertible, you may solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as follows given the original equation:", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}} ", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": " \\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} ", "content": {"math_content": "\\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": " \\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1} ", "content": {"math_content": "\\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          Note: I can't verify that your edit is correct because I don't understand what D_{\\mathbf{x} + \\mathbf{z}} represents.

                          ", "content": [{"c": "Note: I can't verify that your edit is correct because I don't understand what", "t": "text"}, {"c": "D_{\\mathbf{x} + \\mathbf{z}}", "t": "equation-inline"}, {"c": "represents.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                          Edit 1:

                          ", "content": [{"c": "Edit 1:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                          Thank you for the response as I didn't realize the meaning of the matrices D_{\\mathbf{x}}, D_{\\mathbf{y}}, and D_{\\mathbf{z}}. Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.

                          ", "content": [{"c": "Thank you for the response as I didn't realize the meaning of the matrices", "t": "text"}, {"c": "D_{\\mathbf{x}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "D_{\\mathbf{y}}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "D_{\\mathbf{z}}", "t": "equation-inline"}, {"c": ". Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                          Since D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x}) and similarly for the other matrices, we have

                          ", "content": [{"c": "Since", "t": "text"}, {"c": "D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x})", "t": "equation-inline"}, {"c": "and similarly for the other matrices, we have", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n", "content": {"math_content": "\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          and multiplying through we have

                          ", "content": [{"c": "and multiplying through we have", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}\n", "content": {"math_content": "\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          Therefore, this can be written in matrix form as

                          ", "content": [{"c": "Therefore, this can be written in matrix form as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n", "content": {"math_content": "\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          or more concisely as

                          ", "content": [{"c": "or more concisely as", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}} ", "content": {"math_content": "\\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          which is exactly what is given in your edit:

                          ", "content": [{"c": "which is exactly what is given in your edit:", "t": "text"}]}, {"type": "equation-interline", "raw_content": " \\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}", "content": {"math_content": "\\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          Edit 2:

                          ", "content": [{"c": "Edit 2:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                          As for the case where you have \\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}} where \\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}, you would not be able to solve for \\mathbf{y} as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):

                          ", "content": [{"c": "As for the case where you have", "t": "text"}, {"c": "\\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "\\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}", "t": "equation-inline"}, {"c": ", you would not be able to solve for", "t": "text"}, {"c": "\\mathbf{y}", "t": "equation-inline"}, {"c": "as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n", "content": {"math_content": "\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                          where we cannot solve for the matrix containing the y variables because we cannot eliminate \\mathbf{x} from the left side of the equation.

                          ", "content": [{"c": "where we cannot solve for the matrix containing the", "t": "text"}, {"c": "y", "t": "equation-inline"}, {"c": "variables because we cannot eliminate", "t": "text"}, {"c": "\\mathbf{x}", "t": "equation-inline"}, {"c": "from the left side of the equation.", "t": "text"}]}, {"type": "list", "raw_content": "
                          • My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$.CommentedMar 31, 2021 at 5:45
                          • 1
                            @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck!
                            \n\u2013\u00a0Ralff
                            CommentedMar 31, 2021 at 6:15
                          • Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on.CommentedMar 31, 2021 at 17:38
                          • @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result.
                            \n\u2013\u00a0Ralff
                            CommentedMar 31, 2021 at 18:47
                          ", "content": {"items": [[[{"c": "My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 31, 2021 at 5:45", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "@RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck!", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Ralff", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 31, 2021 at 6:15", "t": "text"}]], [[{"c": "Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 31, 2021 at 17:38", "t": "text"}]], [[{"c": "@RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "Ralff", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Mar 31, 2021 at 18:47", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

                          \n You must log in to answer this question.\n

                          ", "content": {"title_content": "You must log in to answer this question.", "level": "2"}}, {"type": "title", "raw_content": "

                          \nNot the answer you're looking for? Browse other questions tagged

                          ", "content": {"title_content": "Not the answer you're looking for? Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": "
                            . ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                            .

                            ", "content": {"title_content": ".", "level": "2"}}]], "main_html": "

                            Consider the following system of equations:

                            \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}

                            where \\mathbf{x}, \\mathbf{y}, \\mathbf{z}, and \\mathbf{u} are 1\\times n vectors and D_{\\mathbf{x}}, D_{\\mathbf{y}}, and D_{\\mathbf{z}} are diagonal n\\times n matrices with \\mathbf{x}, \\mathbf{y}, and \\mathbf{z}, respectively, along their diagonals (i.e., D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})).

                            My question is whether it is possible to solve for \\mathbf{y} here \u2013 both the \\mathbf{y} as a vector and the \\mathbf{y} along the diagonal of D_{\\mathbf{y}}. The problem is that I do not know of operations to pull \\mathbf{y} out of D_{\\mathbf{y}}. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute \\mathbf{y} out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                            (\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}

                            where \\odot is the Hadamard product and e^T = (1,1,\\ldots)\\in\\mathbb R^n. So, would it be possible to distribute out \\mathbf{y} and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to \\mathbf{y}, not D_{\\mathbf{y}}:

                            \\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}

                            Edit: Oh, it seems that extracting \\mathbf{y} in this case would be a simple as rewriting the equation above as

                            \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}

                            because rewriting the equation this way would not change the terms along the diagonal of \\mathbf{z}D_{\\mathbf{y}}. Then we can write

                            \\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}

                            But then how would solve for \\mathbf{y} in the following?

                            \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}

                            I think that in this case, it would not be possible to solve for a single vector \\mathbf{y} as in the previous case. Instead, we would have a system of polynomials:

                            \\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}

                            where \\mathbf{y^2} is a vector where the elements are the squares of the corresponding elements of \\mathbf{y} \u2013 that is, \\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}.

                            Next, what if we had an equation as follows?

                            \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}

                            where \\mathbf{M} is an n \\times n matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of D_{\\mathbf{yM}}, we have some linear combination.

                            I think in this case, the polynomial system of equations would be rather complicated. We would have the vector \\mathbf{y^2} again, but this time multiplied by some diagonal matrix based on the elements of \\mathbf{M} and D_{\\mathbf{x}} that is multiplied by a scalar (n, I believe). Then, we would have a set of vectors (n-1, I believe) that each have as elements different products of the elements in \\mathbf{y} (e.g., y_1 y_3) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in \\mathbf{M} and D_{\\mathbf{x}}.

                            So, I have two questions here:

                            1. Is my general intuition about what this equation would look like correct?
                            2. Are there techniques to solve for the elements of \\mathbf{y} in this system?

                                \n 1 Answer\n \n

                                \n1

                                I am not sure what the notation D_\\mathbf{x}, D_\\mathbf{y}, and D_\\mathbf{z} represent and if the importance is significant, but assuming D_{\\mathbf{x}} is invertible, you may solve for \\mathbf{y} as follows given the original equation:

                                \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}} \\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1}

                                Note: I can't verify that your edit is correct because I don't understand what D_{\\mathbf{x} + \\mathbf{z}} represents.

                                Edit 1:

                                Thank you for the response as I didn't realize the meaning of the matrices D_{\\mathbf{x}}, D_{\\mathbf{y}}, and D_{\\mathbf{z}}. Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.

                                Since D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x}) and similarly for the other matrices, we have

                                \n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n

                                and multiplying through we have

                                \n\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}\n

                                Therefore, this can be written in matrix form as

                                \n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n

                                or more concisely as

                                \\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}}

                                which is exactly what is given in your edit:

                                \\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}

                                Edit 2:

                                As for the case where you have \\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}} where \\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}, you would not be able to solve for \\mathbf{y} as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):

                                \n\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n

                                where we cannot solve for the matrix containing the y variables because we cannot eliminate \\mathbf{x} from the left side of the equation.

                                • My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$.CommentedMar 31, 2021 at 5:45
                                • 1
                                  @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck!
                                  \n\u2013\u00a0Ralff
                                  CommentedMar 31, 2021 at 6:15
                                • Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on.CommentedMar 31, 2021 at 17:38
                                • @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result.
                                  \n\u2013\u00a0Ralff
                                  CommentedMar 31, 2021 at 18:47

                                \n You must log in to answer this question.\n

                                \nNot the answer you're looking for? Browse other questions tagged

                                  .

                                  .

                                  ", "statics": {"paragraph": 26, "paragraph.text": 85, "equation-interline": 17, "paragraph.equation-inline": 59, "list": 5, "list.text": 20, "list.equation-inline": 1, "title": 4}, "url": "https://math.stackexchange.com/questions/4082284/solving-for-vector-contained-in-a-diagonal-matrix", "content": "Consider the following system of equations:\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{x}$ , $\\mathbf{y}$ , $\\mathbf{z}$ , and $\\mathbf{u}$ are $1\\times n$ vectors and $D_{\\mathbf{x}}$ , $D_{\\mathbf{y}}$ , and $D_{\\mathbf{z}}$ are diagonal $n\\times n$ matrices with $\\mathbf{x}$ , $\\mathbf{y}$ , and $\\mathbf{z}$ , respectively, along their diagonals (i.e., $D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})$ ).\n\nMy question is whether it is possible to solve for $\\mathbf{y}$ here \u2013 both the $\\mathbf{y}$ as a vector and the $\\mathbf{y}$ along the diagonal of $D_{\\mathbf{y}}$ . The problem is that I do not know of operations to pull $\\mathbf{y}$ out of $D_{\\mathbf{y}}$ . The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute $\\mathbf{y}$ out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write\n\n$$\n(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}\n$$\n\nwhere $\\odot$ is the Hadamard product and $e^T = (1,1,\\ldots)\\in\\mathbb R^n$ . So, would it be possible to distribute out $\\mathbf{y}$ and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to $\\mathbf{y}$ , not $D_{\\mathbf{y}}$ :\n\n$$\n\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}\n$$\n\nEdit: Oh, it seems that extracting $\\mathbf{y}$ in this case would be a simple as rewriting the equation above as\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nbecause rewriting the equation this way would not change the terms along the diagonal of $\\mathbf{z}D_{\\mathbf{y}}$ . Then we can write\n\n$$\n\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}\n$$\n\nBut then how would solve for $\\mathbf{y}$ in the following?\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nI think that in this case, it would not be possible to solve for a single vector $\\mathbf{y}$ as in the previous case. Instead, we would have a system of polynomials:\n\n$$\n\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{y^2}$ is a vector where the elements are the squares of the corresponding elements of $\\mathbf{y}$ \u2013 that is, $\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}$ .\n\nNext, what if we had an equation as follows?\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere $\\mathbf{M}$ is an $n \\times n$ matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of $D_{\\mathbf{yM}}$ , we have some linear combination.\n\nI think in this case, the polynomial system of equations would be rather complicated. We would have the vector $\\mathbf{y^2}$ again, but this time multiplied by some diagonal matrix based on the elements of $\\mathbf{M}$ and $D_{\\mathbf{x}}$ that is multiplied by a scalar ( $n$ , I believe). Then, we would have a set of vectors ( $n-1$ , I believe) that each have as elements different products of the elements in $\\mathbf{y}$ (e.g., $y_1 y_3$ ) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in $\\mathbf{M}$ and $D_{\\mathbf{x}}$ .\n\nSo, I have two questions here:\n\n1. Is my general intuition about what this equation would look like correct?\n2. Are there techniques to solve for the elements of $\\mathbf{y}$ in this system?\n\n## 1 Answer\n\n1\n\nI am not sure what the notation $D_\\mathbf{x}$ , $D_\\mathbf{y}$ , and $D_\\mathbf{z}$ represent and if the importance is significant, but assuming $D_{\\mathbf{x}}$ is invertible, you may solve for $\\mathbf{y}$ as follows given the original equation:\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}\n$$\n\n$$\n\\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}}\n$$\n\n$$\n\\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1}\n$$\n\nNote: I can't verify that your edit is correct because I don't understand what $D_{\\mathbf{x} + \\mathbf{z}}$ represents.\n\nEdit 1:\n\nThank you for the response as I didn't realize the meaning of the matrices $D_{\\mathbf{x}}$ , $D_{\\mathbf{y}}$ , and $D_{\\mathbf{z}}$ . Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.\n\nSince $D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x})$ and similarly for the other matrices, we have\n\n$$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$\n\nand multiplying through we have\n\n$$\n\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}\n$$\n\nTherefore, this can be written in matrix form as\n\n$$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$\n\nor more concisely as\n\n$$\n\\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}}\n$$\n\nwhich is exactly what is given in your edit:\n\n$$\n\\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}\n$$\n\nEdit 2:\n\nAs for the case where you have $\\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}}$ where $\\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}$ , you would not be able to solve for $\\mathbf{y}$ as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):\n\n$$\n\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$\n\nwhere we cannot solve for the matrix containing the $y$ variables because we cannot eliminate $\\mathbf{x}$ from the left side of the equation.\n\n- My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$. Commented Mar 31, 2021 at 5:45\n- 1 @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck! \u2013 Ralff Commented Mar 31, 2021 at 6:15\n- Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on. Commented Mar 31, 2021 at 17:38\n- @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result. \u2013 Ralff Commented Mar 31, 2021 at 18:47\n\n## You must log in to answer this question.\n\n## Not the answer you're looking for? Browse other questions tagged\n\n## .\n", "html": "\n\n\n\n\n \n\n \n\n linear algebra - Solving for vector contained in a diagonal matrix - Mathematics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                                  \n\n\n\n\n\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n Skip to main content\n\t
                                  \n\t\t\t\n\t\t\t
                                  \n\t\t\t\t
                                  \n\t\t\t
                                  \n\t\t\t\n\t\t\t
                                  \n\t\t\t\t
                                  \n\t\t\t\t\t

                                  Stack Exchange Network

                                  \n\t\t\t\t\t

                                  \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                                  \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                                  \n\t\t\t
                                  \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                                  \n
                                  \n\n\t\n\n\n\n\n
                                  \n
                                  \n \n \"Mathematics\"\n \n\n
                                  \n
                                  \n\n
                                  \n\n\n\n\n
                                  \n
                                  \n \n
                                  \n\n\n\n
                                  \n
                                  \n\n
                                  \n

                                  Teams

                                  \n

                                  Q&A for work

                                  \n

                                  Connect and share knowledge within a single location that is structured and easy to search.

                                  \n \n Learn more about Teams\n \n
                                  \n\n
                                  \n \n
                                  \n
                                  \n\n\n\n\n
                                  \n\n\n\n
                                  \n\n\n\n
                                  \n \n\n
                                  \n\n\n \n
                                  \n
                                  \n Asked\n \n
                                  \n
                                  \n Modified\n 3 years, 9 months ago\n
                                  \n
                                  \n Viewed\n 234 times\n
                                  \n
                                  \n\n\n\n
                                  \n\n
                                  \n \n
                                  \n
                                  \n\t\t
                                  \n
                                  \n\n
                                  \n
                                  \n\n
                                  \n \n \n
                                  \n2
                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                                  \n\n
                                  \n\n\n\n
                                  \n $\\begingroup$\n
                                  \n\n

                                  Consider the following system of equations:

                                  \n

                                  $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                                  \n

                                  where $\\mathbf{x}$, $\\mathbf{y}$, $\\mathbf{z}$, and $\\mathbf{u}$ are $1\\times n$ vectors and $D_{\\mathbf{x}}$, $D_{\\mathbf{y}}$, and $D_{\\mathbf{z}}$ are diagonal $n\\times n$ matrices with $\\mathbf{x}$, $\\mathbf{y}$, and $\\mathbf{z}$, respectively, along their diagonals (i.e., $D_{\\mathbf{x}} = \\mathrm{diag}(\\mathbf{x})$).

                                  \n

                                  My question is whether it is possible to solve for $\\mathbf{y}$ here \u2013 both the $\\mathbf{y}$ as a vector and the $\\mathbf{y}$ along the diagonal of $D_{\\mathbf{y}}$. The problem is that I do not know of operations to pull $\\mathbf{y}$ out of $D_{\\mathbf{y}}$. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute $\\mathbf{y}$ out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                                  \n

                                  $$(\\mathbf{y}e^T) \\odot I_n = D_{\\mathbf{y}}$$

                                  \n

                                  where $\\odot$ is the Hadamard product and $e^T = (1,1,\\ldots)\\in\\mathbb R^n$. So, would it be possible to distribute out $\\mathbf{y}$ and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to $\\mathbf{y}$, not $D_{\\mathbf{y}}$:

                                  \n

                                  $$\\mathbf{y}(e^T \\odot I_n) \\neq D_{\\mathbf{y}}$$

                                  \n

                                  Edit: Oh, it seems that extracting $\\mathbf{y}$ in this case would be a simple as rewriting the equation above as

                                  \n

                                  $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{z}}=\\mathbf{u}D_{\\mathbf{z}}$$

                                  \n

                                  because rewriting the equation this way would not change the terms along the diagonal of $\\mathbf{z}D_{\\mathbf{y}}$. Then we can write

                                  \n

                                  $$\\mathbf{y}=\\mathbf{u}D_{\\mathbf{z}}D_{\\mathbf{x+z}}^{-1}$$

                                  \n

                                  But then how would solve for $\\mathbf{y}$ in the following?

                                  \n

                                  $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}}$$

                                  \n

                                  I think that in this case, it would not be possible to solve for a single vector $\\mathbf{y}$ as in the previous case. Instead, we would have a system of polynomials:

                                  \n

                                  $$\\mathbf{y^2} + \\mathbf{y}D_{\\mathbf{x}} = \\mathbf{u}D_{\\mathbf{z}}$$

                                  \n

                                  where $\\mathbf{y^2}$ is a vector where the elements are the squares of the corresponding elements of $\\mathbf{y}$ \u2013 that is, $\\mathbf{y^2} = \\begin{pmatrix} y_{1}^2 & y_{2}^2 & \\cdots & y_{n}^2 \\end{pmatrix}$.

                                  \n

                                  Next, what if we had an equation as follows?

                                  \n

                                  $$\\mathbf{y}D_{\\mathbf{x}}+\\mathbf{y}D_{\\mathbf{yM}}=\\mathbf{u}D_{\\mathbf{z}}$$

                                  \n

                                  where $\\mathbf{M}$ is an $n \\times n$ matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of $D_{\\mathbf{yM}}$, we have some linear combination.

                                  \n

                                  I think in this case, the polynomial system of equations would be rather complicated. We would have the vector $\\mathbf{y^2}$ again, but this time multiplied by some diagonal matrix based on the elements of $\\mathbf{M}$ and $D_{\\mathbf{x}}$ that is multiplied by a scalar ($n$, I believe). Then, we would have a set of vectors ($n-1$, I believe) that each have as elements different products of the elements in $\\mathbf{y}$ (e.g., $y_1 y_3$) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in $\\mathbf{M}$ and $D_{\\mathbf{x}}$.

                                  \n

                                  So, I have two questions here:

                                  \n
                                    \n
                                  1. Is my general intuition about what this equation would look like correct?
                                  2. \n
                                  3. Are there techniques to solve for the elements of $\\mathbf{y}$ in this system?
                                  4. \n
                                  \n
                                  \n\n
                                  \n
                                  \n \n
                                  \n
                                  \n\n
                                  \n
                                  \n
                                  \n\n\n\n
                                  \n\n
                                  \n\n
                                  \n Share\n
                                  \n\n
                                  \n \n
                                  \n\n\n
                                  \n \n
                                  \n\n\n\n\n\n\n
                                  \n
                                  \n
                                  \n
                                  \n\n
                                  \n
                                  \n \n
                                  \n\n
                                  \n
                                  \n Ryan da Silva\n
                                  \n\n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n asked Mar 29, 2021 at 23:19\n
                                  \n\n
                                  \n
                                  \n
                                  \"Ryan
                                  \n
                                  \n
                                  \n Ryan da SilvaRyan da Silva\n
                                  \n 6511 silver badge77 bronze badges\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n $\\endgroup$\n
                                  \n\n\n\n\n \n
                                  \n
                                  \n
                                    \n\n
                                  \n\t
                                  \n\n \n
                                  \n
                                  \n\n
                                  \n\n\n\n\n
                                  \n \n
                                  \n
                                  \n
                                  \n

                                  \n 1 Answer\n 1\n

                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n \n \n Reset to default\n \n
                                  \n
                                  \n \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n\n\n\n\n
                                  \n
                                  \n
                                  \n\n
                                  \n \n \n
                                  \n1
                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                  \n
                                  \n \n
                                  \n
                                  \n\n\n \n\n
                                  \n\n
                                  \n\n\n\n
                                  \n $\\begingroup$\n
                                  \n

                                  I am not sure what the notation $D_\\mathbf{x}$, $D_\\mathbf{y}$, and $D_\\mathbf{z}$ represent and if the importance is significant, but assuming $D_{\\mathbf{x}}$ is invertible, you may solve for $\\mathbf{y}$ as follows given the original equation:

                                  \n

                                  $$ \\mathbf{y}D_{\\mathbf{x}}+\\mathbf{z}D_{\\mathbf{y}}=\\mathbf{u}D_{\\mathbf{z}} $$\n$$ \\mathbf{y}D_{\\mathbf{x}}=\\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} $$\n$$ \\mathbf{y}=\\bigr( \\mathbf{u}D_{\\mathbf{z}}-\\mathbf{z}D_{\\mathbf{y}} \\bigr) D_{\\mathbf{x}}^{-1} $$

                                  \n

                                  Note: I can't verify that your edit is correct because I don't understand what $D_{\\mathbf{x} + \\mathbf{z}}$ represents.

                                  \n

                                  Edit 1:

                                  \n

                                  Thank you for the response as I didn't realize the meaning of the matrices $D_{\\mathbf{x}}$, $D_{\\mathbf{y}}$, and $D_{\\mathbf{z}}$. Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.

                                  \n

                                  Since $D_{\\mathbf{x}} = \\text{diag}(\\mathbf{x})$ and similarly for the other matrices, we have

                                  \n

                                  $$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 & & \\\\ & \\ddots & \\\\ & & x_n\\end{bmatrix} + \\begin{bmatrix} z_1 & \\cdots & z_n \\end{bmatrix} \\begin{bmatrix} y_1 & & \\\\ & \\ddots & \\\\ & & y_n\\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                                  \n

                                  and multiplying through we have

                                  \n

                                  $$\n\\begin{align}\n\\begin{bmatrix} y_1 x_1 & \\cdots & y_n x_n \\end{bmatrix} + \\begin{bmatrix} y_1 z_1 & \\cdots & y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}}\\\\\n\\begin{bmatrix} y_1 x_1 + y_1 z_1 & \\cdots & y_n x_n + y_n z_n \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\begin{bmatrix} y_1 (x_1 + z_1) & \\cdots & y_n(x_n + z_n) \\end{bmatrix} &= \\mathbf{u}D_{\\mathbf{z}} \\\\\n\\end{align}\n$$

                                  \n

                                  Therefore, this can be written in matrix form as

                                  \n

                                  $$\n\\begin{bmatrix} y_1 & \\cdots & y_n \\end{bmatrix} \\begin{bmatrix} x_1 + z_1 & & \\\\ & \\ddots & \\\\ & & x_n + z_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                                  \n

                                  or more concisely as

                                  \n

                                  $$ \\mathbf{y} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) = \\mathbf{u} D_{\\mathbf{z}} $$

                                  \n

                                  which is exactly what is given in your edit:

                                  \n

                                  $$ \\mathbf{y} = \\mathbf{u} D_{\\mathbf{z}} (D_{\\mathbf{x}} + D_{\\mathbf{z}} ) ^{-1}$$

                                  \n

                                  Edit 2:

                                  \n

                                  As for the case where you have $\\mathbf{y}^2 + \\mathbf{y} D_{\\mathbf{x}} = \\mathbf{u} D_{\\mathbf{z}}$ where $\\mathbf{y}^2 = \\begin{bmatrix} y_1^2 & \\cdots & y_n^2 \\end{bmatrix}$, you would not be able to solve for $\\mathbf{y}$ as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):

                                  \n

                                  $$\n\\begin{bmatrix} x_1 & \\cdots & x_n \\end{bmatrix} \\begin{bmatrix} y_1^2 + y_1 & & \\\\ & \\ddots & \\\\ & & y_n^2 + y_n \\end{bmatrix} = \\mathbf{u}D_{\\mathbf{z}}\n$$

                                  \n

                                  where we cannot solve for the matrix containing the $y$ variables because we cannot eliminate $\\mathbf{x}$ from the left side of the equation.

                                  \n
                                  \n
                                  \n
                                  \n \n
                                  \n\n\n\n
                                  \n\n
                                  \n\n
                                  \n Share\n
                                  \n\n
                                  \n \n
                                  \n\n\n
                                  \n \n
                                  \n\n\n\n\n\n\n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n \n
                                  \n\n
                                  \n
                                  \n\n
                                  \n\n
                                  \n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n
                                  \n answered Mar 30, 2021 at 8:19\n
                                  \n\n
                                  \n
                                  \n
                                  \"Ralff's
                                  \n
                                  \n
                                  \n RalffRalff\n
                                  \n 1,55199 silver badges2424 bronze badges\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n\n\n
                                  \n $\\endgroup$\n
                                  \n\n\n\n\n 4\n
                                  \n
                                  \n
                                    \n\n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n My notation for, for example, $D_{\\mathbf{x}}$ was intended to refer to $\\mathrm{diag}(\\mathbf{x})$. Thus, $D_{\\mathbf{x+y}}$ means $\\mathrm{diag}(\\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\\mathbf{y}$ is still along the diagonal of $D_{\\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\\mathbf{y}$.\n $\\endgroup$\n
                                    \n– Ryan da Silva\n
                                    \n \n Commented\n Mar 31, 2021 at 5:45\n \n \n \n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n 1\n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck!\n $\\endgroup$\n
                                    \n– Ralff\n
                                    \n \n Commented\n Mar 31, 2021 at 6:15\n \n \n \n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on.\n $\\endgroup$\n
                                    \n– Ryan da Silva\n
                                    \n \n Commented\n Mar 31, 2021 at 17:38\n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result.\n $\\endgroup$\n
                                    \n– Ralff\n
                                    \n \n Commented\n Mar 31, 2021 at 18:47\n \n
                                    \n
                                    \n
                                  • \n\n
                                  \n\t
                                  \n\n \n
                                  \n
                                  \n
                                  \n

                                  \n You must log in to answer this question.\n

                                  \n\n\n\n

                                  \n
                                  \nNot the answer you're looking for? Browse other questions tagged .
                                  \n

                                  \n
                                  \n
                                  \n\n\n
                                  \n\n\n\n
                                  \n
                                  \n\t\t
                                  \n
                                  \n
                                  \n\t

                                  Linked

                                  \n\t \n
                                  \n\n\n\n\n\n \n \n\n\n\n\n\n
                                  \n

                                  \n \n Hot Network Questions\n \n

                                  \n \n\n \n more hot questions\n \n
                                  \n\n \n \n\n
                                  \n\n
                                  \n\n
                                  \n\n\n\n\n\n\n\n
                                  \n
                                  \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_5.jsonl b/bench/data/groundtruth/math_mathjax_latex_5.jsonl index eac074a6..addb02ed 100644 --- a/bench/data/groundtruth/math_mathjax_latex_5.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_5.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

                                  If $f(x,y)$ is a joint pdf,I understand that,

                                  ", "content": [{"c": "If $f(x,y)$ is a joint pdf,I understand that,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                  $$\n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$

                                  ", "content": {"math_content": "\\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                  but does this hold for the conditional pdf?

                                  ", "content": [{"c": "but does this hold for the conditional pdf?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                  $$\n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$

                                  ", "content": {"math_content": "\\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                  I would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.

                                  ", "content": [{"c": "I would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                  In particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}

                                  ", "content": [{"c": "In particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}", "t": "text"}]}]], "main_html": "

                                  If $f(x,y)$ is a joint pdf,I understand that,

                                  $$\n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$

                                  but does this hold for the conditional pdf?

                                  $$\n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$

                                  I would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.

                                  In particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}

                                  ", "statics": {"paragraph": 4, "paragraph.text": 4, "equation-interline": 2}, "url": "https://math.stackexchange.com/questions/1561951/integral-over-conditional-pdf", "content": "If $f(x,y)$ is a joint pdf,I understand that,\n\n$$\n\\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$\n\nbut does this hold for the conditional pdf?\n\n$$\n\\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$\n\nI would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.\n\nIn particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}\n", "html": "\n\n\n\n\n \n\n \n\n probability - Integral Over Conditional PDF - Mathematics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                                  \n\n\n\n\n\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n Skip to main content\n\t
                                  \n\t\t\t\n\t\t\t
                                  \n\t\t\t\t
                                  \n\t\t\t
                                  \n\t\t\t\n\t\t\t
                                  \n\t\t\t\t
                                  \n\t\t\t\t\t

                                  Stack Exchange Network

                                  \n\t\t\t\t\t

                                  \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                                  \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                                  \n\t\t\t
                                  \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                                  \n
                                  \n\n\t\n\n\n\n\n
                                  \n
                                  \n \n \"Mathematics\"\n \n\n
                                  \n
                                  \n\n
                                  \n\n\n\n\n
                                  \n
                                  \n \n
                                  \n\n\n\n
                                  \n
                                  \n\n
                                  \n

                                  Teams

                                  \n

                                  Q&A for work

                                  \n

                                  Connect and share knowledge within a single location that is structured and easy to search.

                                  \n \n Learn more about Teams\n \n
                                  \n\n
                                  \n \n
                                  \n
                                  \n\n\n\n\n
                                  \n\n\n\n
                                  \n\n\n\n
                                  \n \n\n
                                  \n\n\n \n
                                  \n
                                  \n Asked\n \n
                                  \n
                                  \n Modified\n 9 years, 1 month ago\n
                                  \n
                                  \n Viewed\n 5k times\n
                                  \n
                                  \n\n\n\n
                                  \n\n
                                  \n \n
                                  \n
                                  \n\t\t
                                  \n
                                  \n\n
                                  \n
                                  \n\n
                                  \n \n \n
                                  \n3
                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                                  \n\n
                                  \n\n\n\n
                                  \n $\\begingroup$\n
                                  \n\n

                                  If $f(x,y)$ is a joint pdf,I understand that,

                                  \n\n

                                  $$\n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$

                                  \n\n

                                  but does this hold for the conditional pdf?

                                  \n\n

                                  $$\n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$

                                  \n\n

                                  I would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.

                                  \n\n
                                  \n

                                  In particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}

                                  \n
                                  \n
                                  \n\n
                                  \n
                                  \n
                                  \n\n \n
                                  \n
                                  \n
                                  \n\n
                                  \n
                                  \n
                                  \n\n\n\n
                                  \n\n
                                  \n\n
                                  \n Share\n
                                  \n\n
                                  \n \n
                                  \n\n\n
                                  \n \n
                                  \n\n\n\n\n\n\n
                                  \n
                                  \n
                                  \n
                                  \n\n
                                  \n
                                  \n \n
                                  \n
                                  \"David
                                  \n
                                  \n
                                  \n David Kraemer\n
                                  \n 1,70211 gold badge1010 silver badges1717 bronze badges\n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n asked Dec 6, 2015 at 3:43\n
                                  \n\n
                                  \n
                                  \n
                                  \"jessica's
                                  \n
                                  \n
                                  \n jessicajessica\n
                                  \n 1,01211 gold badge1515 silver badges3131 bronze badges\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n $\\endgroup$\n
                                  \n\n\n\n\n 7\n
                                  \n
                                  \n
                                    \n\n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF.\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 3:46\n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x?\n $\\endgroup$\n
                                    \n– jessica\n
                                    \n \n Commented\n Dec 6, 2015 at 3:48\n \n \n \n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n It does. Take a look at the answers and tell us what you think after that.\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 4:22\n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n $f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$.\n $\\endgroup$\n
                                    \n– A.S.\n
                                    \n \n Commented\n Dec 6, 2015 at 4:36\n \n
                                    \n
                                    \n
                                  • \n
                                  • \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n
                                    \n $\\begingroup$\n I added some graphs and extra explanation to make this more clear, hopefully ;)\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 6:24\n \n
                                    \n
                                    \n
                                  • \n\n
                                  \n\t
                                  \n\n \n
                                  \n
                                  \n\n
                                  \n\n\n\n\n
                                  \n \n
                                  \n
                                  \n
                                  \n

                                  \n 2 Answers\n 2\n

                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n \n \n Reset to default\n \n
                                  \n
                                  \n \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n\n\n\n\n
                                  \n
                                  \n
                                  \n\n
                                  \n \n \n
                                  \n9
                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                  \n
                                  \n \n
                                  \n
                                  \n\n\n \n\n
                                  \n\n
                                  \n\n\n\n
                                  \n $\\begingroup$\n
                                  \n

                                  By definition,

                                  \n\n

                                  $$f_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y$$

                                  \n\n

                                  Here, given $x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,

                                  \n\n

                                  \\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}

                                  \n\n

                                  where in the second equality we have computed the marginal PDF of $X$ by integrating the joint PDF over $y$.

                                  \n\n

                                  Let's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that $f_{X,Y}(x,y)$ is as shown below (in red a \"view\" of the joint PDF at $Y=2.5$)

                                  \n\n

                                  $\\hspace{2.5cm}$ \"enter

                                  \n\n

                                  Suppose we are interested in $f_{X \\mid Y}(x \\mid 2.5)$, which is

                                  \n\n

                                  $$f_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3$$

                                  \n\n

                                  Note that $f_{X \\mid Y}(x \\mid 2.5)$ has the same shape than $f_{X,Y}(x,2.5)$ (a constant equal to $0.25$), but it's divided by $f_Y(2.5)$ to normalize it. That is, to satisfy the normalization axiom! So, although the area under $f_{X,Y}(x, 2.5)$ (the red area above) is clearly smaller than $1$, the area under $f_{X \\mid Y}(x \\mid 2.5)$ is $1$ because of the mentioned normalization. Below the graph for this conditional PDF.

                                  \n\n

                                  $\\hspace{2cm}$ \"enter

                                  \n\n

                                  EDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space $\\Omega$, which would be represented by that T-shape region in the $x-y$ plane. The probability law defined over $\\Omega$ is $f_{X,Y}$, and the volume under it is $1$. Now, what is $f_{X \\mid Y}$? It is a new probability law defined over a new sample space, the one that results of imposing the restriction $Y=2.5$ to $\\Omega$, that is $\\{1 \\leq X \\leq 3, Y=2.5$}. A key idea here is that when we condition the original model the shape of the original probability law, $f_{X,Y}$, over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space $\\Omega$ and a probability law $P(\\cdot)$ that enable us to compute something like $P(A)$, $P(B)$ or even $P(A \\cap B)$. But what if we know something, for example that $A$ has occurred? Then we think intuitively that our new sample space is $A$. How we compute now $P(B)$? We represent that probability now as $P(B \\mid A)$ to incorporate in the notation that partial knowledge about the result and realize that $B$ occurs only if $A \\cap B$ occurs to computed it as

                                  \n\n

                                  $$P(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}$$

                                  \n\n

                                  why we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.

                                  \n
                                  \n
                                  \n
                                  \n \n
                                  \n\n\n\n
                                  \n\n
                                  \n\n
                                  \n Share\n
                                  \n\n
                                  \n \n
                                  \n\n\n
                                  \n \n
                                  \n\n\n\n\n\n\n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n \n
                                  \n\n
                                  \n
                                  \n\n
                                  \n\n
                                  \n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n
                                  \n answered Dec 6, 2015 at 3:55\n
                                  \n\n
                                  \n
                                  \n
                                  \"Carlos
                                  \n
                                  \n
                                  \n Carlos H. Mendoza-CardenasCarlos H. Mendoza-Cardenas\n
                                  \n 1,8411313 silver badges2424 bronze badges\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n\n\n
                                  \n $\\endgroup$\n
                                  \n\n\n\n\n \n
                                  \n
                                  \n
                                    \n\n
                                  \n\t
                                  \n\n \n
                                  \n
                                  \n
                                  \n
                                  \n
                                  \n\t\t
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n\n
                                  \n \n \n
                                  \n2
                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                  \n
                                  \n \n
                                  \n
                                  \n\n\n \n\n
                                  \n\n
                                  \n\n\n\n
                                  \n $\\begingroup$\n
                                  \n

                                  Yes, it does\n$$\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.$$

                                  \n\n

                                  As an example, if $Y|X\\sim \\text{Exp}(X)$, then\n$$\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.$$

                                  \n
                                  \n
                                  \n
                                  \n \n
                                  \n\n\n\n
                                  \n\n
                                  \n\n
                                  \n Share\n
                                  \n\n
                                  \n \n
                                  \n\n\n
                                  \n \n
                                  \n\n\n\n\n\n\n
                                  \n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n
                                  \n
                                  \n answered Dec 6, 2015 at 4:00\n
                                  \n\n
                                  \n
                                  \n
                                  \"Em.'s
                                  \n
                                  \n
                                  \n Em.Em.\n
                                  \n 16.1k77 gold badges2828 silver badges4040 bronze badges\n
                                  \n
                                  \n
                                  \n\n\n
                                  \n
                                  \n\n\n
                                  \n $\\endgroup$\n
                                  \n\n\n\n\n \n
                                  \n
                                  \n
                                    \n\n
                                  \n\t
                                  \n\n \n
                                  \n
                                  \n
                                  \n

                                  \n You must log in to answer this question.\n

                                  \n\n\n\n

                                  \n
                                  \nNot the answer you're looking for? Browse other questions tagged .
                                  \n

                                  \n
                                  \n
                                  \n\n\n
                                  \n\n\n\n
                                  \n
                                  \n\t\t
                                  \n
                                  \n\n\n\n\n\n \n \n\n\n\n\n\n
                                  \n

                                  \n \n Hot Network Questions\n \n

                                  \n \n\n \n more hot questions\n \n
                                  \n\n \n \n\n
                                  \n\n
                                  \n\n
                                  \n\n\n\n\n\n\n\n
                                  \n
                                  \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

                                  If f(x,y) is a joint pdf,I understand that,

                                  ", "content": [{"c": "If", "t": "text"}, {"c": "f(x,y)", "t": "equation-inline"}, {"c": "is a joint pdf,I understand that,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n", "content": {"math_content": "\\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                  but does this hold for the conditional pdf?

                                  ", "content": [{"c": "but does this hold for the conditional pdf?", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n", "content": {"math_content": "\\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                  I would argue not. For a given X=x the sum of of the pdf over the support of Y should less than or equal to 1. But according to Bierens it is.

                                  ", "content": [{"c": "I would argue not. For a given", "t": "text"}, {"c": "X=x", "t": "equation-inline"}, {"c": "the sum of of the pdf over the support of", "t": "text"}, {"c": "Y", "t": "equation-inline"}, {"c": "should less than or equal to 1. But according to Bierens it is.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                  In particular, in the case (3.4) we have\n

                                  ", "content": [{"c": "In particular, in the case (3.4) we have", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}", "content": {"math_content": "\\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "list", "raw_content": "
                                    ", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "
                                    • Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF.CommentedDec 6, 2015 at 3:46
                                    • Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x?
                                      \n\u2013\u00a0jessica
                                      CommentedDec 6, 2015 at 3:48
                                    • It does. Take a look at the answers and tell us what you think after that.CommentedDec 6, 2015 at 4:22
                                    • $f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$.
                                      \n\u2013\u00a0A.S.
                                      CommentedDec 6, 2015 at 4:36
                                    • I added some graphs and extra explanation to make this more clear, hopefully ;)CommentedDec 6, 2015 at 6:24
                                    ", "content": {"items": [[[{"c": "Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 6, 2015 at 3:46", "t": "text"}]], [[{"c": "Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x?", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "jessica", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 6, 2015 at 3:48", "t": "text"}]], [[{"c": "It does. Take a look at the answers and tell us what you think after that.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 6, 2015 at 4:22", "t": "text"}]], [[{"c": "$f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$.", "t": "text"}, {"c": "\n\u2013\u00a0", "t": "text"}, {"c": "A.S.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 6, 2015 at 4:36", "t": "text"}]], [[{"c": "I added some graphs and extra explanation to make this more clear, hopefully ;)", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Dec 6, 2015 at 6:24", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

                                    \n 2 Answers\n \n

                                    ", "content": {"title_content": "2 Answers", "level": "2"}}, {"type": "paragraph", "raw_content": "
                                    \n9
                                    ", "content": [{"c": "9", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                    By definition,

                                    ", "content": [{"c": "By definition,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "f_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y", "content": {"math_content": "f_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                    Here, given $x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,

                                    ", "content": [{"c": "Here, given$x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}", "content": {"math_content": "\\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                    where in the second equality we have computed the marginal PDF of X by integrating the joint PDF over y.

                                    ", "content": [{"c": "where in the second equality we have computed the marginal PDF of", "t": "text"}, {"c": "X", "t": "equation-inline"}, {"c": "by integrating the joint PDF over", "t": "text"}, {"c": "y", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                    Let's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that f_{X,Y}(x,y) is as shown below (in red a \"view\" of the joint PDF at Y=2.5)

                                    ", "content": [{"c": "Let's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that", "t": "text"}, {"c": "f_{X,Y}(x,y)", "t": "equation-inline"}, {"c": "is as shown below (in red a \"view\" of the joint PDF at", "t": "text"}, {"c": "Y=2.5", "t": "equation-inline"}, {"c": ")", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                    $\\hspace{2.5cm}$

                                    ", "content": [{"c": "$\\hspace{2.5cm}$", "t": "text"}]}, {"type": "image", "raw_content": "\"enter", "content": {"url": "https://i.sstatic.net/bmaQx.png", "data": null, "alt": "enter image description here", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                    Suppose we are interested in f_{X \\mid Y}(x \\mid 2.5), which is

                                    ", "content": [{"c": "Suppose we are interested in", "t": "text"}, {"c": "f_{X \\mid Y}(x \\mid 2.5)", "t": "equation-inline"}, {"c": ", which is", "t": "text"}]}, {"type": "equation-interline", "raw_content": "f_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3", "content": {"math_content": "f_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                    Note that f_{X \\mid Y}(x \\mid 2.5) has the same shape than f_{X,Y}(x,2.5) (a constant equal to 0.25), but it's divided by f_Y(2.5) to normalize it. That is, to satisfy the normalization axiom! So, although the area under f_{X,Y}(x, 2.5) (the red area above) is clearly smaller than 1, the area under f_{X \\mid Y}(x \\mid 2.5) is 1 because of the mentioned normalization. Below the graph for this conditional PDF.

                                    ", "content": [{"c": "Note that", "t": "text"}, {"c": "f_{X \\mid Y}(x \\mid 2.5)", "t": "equation-inline"}, {"c": "has the same shape than", "t": "text"}, {"c": "f_{X,Y}(x,2.5)", "t": "equation-inline"}, {"c": "(a constant equal to", "t": "text"}, {"c": "0.25", "t": "equation-inline"}, {"c": "), but it's divided by", "t": "text"}, {"c": "f_Y(2.5)", "t": "equation-inline"}, {"c": "to normalize it. That is, to satisfy the normalization axiom! So, although the area under", "t": "text"}, {"c": "f_{X,Y}(x, 2.5)", "t": "equation-inline"}, {"c": "(the red area above) is clearly smaller than", "t": "text"}, {"c": "1", "t": "equation-inline"}, {"c": ", the area under", "t": "text"}, {"c": "f_{X \\mid Y}(x \\mid 2.5)", "t": "equation-inline"}, {"c": "is", "t": "text"}, {"c": "1", "t": "equation-inline"}, {"c": "because of the mentioned normalization. Below the graph for this conditional PDF.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                    $\\hspace{2cm}$

                                    ", "content": [{"c": "$\\hspace{2cm}$", "t": "text"}]}, {"type": "image", "raw_content": "\"enter", "content": {"url": "https://i.sstatic.net/nmV9v.png", "data": null, "alt": "enter image description here", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                    EDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space \\Omega, which would be represented by that T-shape region in the x-y plane. The probability law defined over \\Omega is f_{X,Y}, and the volume under it is 1. Now, what is f_{X \\mid Y}? It is a new probability law defined over a new sample space, the one that results of imposing the restriction Y=2.5 to \\Omega, that is \\{1 \\leq X \\leq 3, Y=2.5}. A key idea here is that when we condition the original model the shape of the original probability law, f_{X,Y}, over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space \\Omega and a probability law P(\\cdot) that enable us to compute something like P(A), P(B) or even P(A \\cap B). But what if we know something, for example that A has occurred? Then we think intuitively that our new sample space is A. How we compute now P(B)? We represent that probability now as P(B \\mid A) to incorporate in the notation that partial knowledge about the result and realize that B occurs only if A \\cap B occurs to computed it as

                                    ", "content": [{"c": "EDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space", "t": "text"}, {"c": "\\Omega", "t": "equation-inline"}, {"c": ", which would be represented by that T-shape region in the", "t": "text"}, {"c": "x-y", "t": "equation-inline"}, {"c": "plane. The probability law defined over", "t": "text"}, {"c": "\\Omega", "t": "equation-inline"}, {"c": "is", "t": "text"}, {"c": "f_{X,Y}", "t": "equation-inline"}, {"c": ", and the volume under it is", "t": "text"}, {"c": "1", "t": "equation-inline"}, {"c": ". Now, what is", "t": "text"}, {"c": "f_{X \\mid Y}", "t": "equation-inline"}, {"c": "? It is a new probability law defined over a new sample space, the one that results of imposing the restriction", "t": "text"}, {"c": "Y=2.5", "t": "equation-inline"}, {"c": "to", "t": "text"}, {"c": "\\Omega", "t": "equation-inline"}, {"c": ", that is", "t": "text"}, {"c": "\\{1 \\leq X \\leq 3, Y=2.5", "t": "equation-inline"}, {"c": "}. A key idea here is that when we condition the original model the shape of the original probability law,", "t": "text"}, {"c": "f_{X,Y}", "t": "equation-inline"}, {"c": ", over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space", "t": "text"}, {"c": "\\Omega", "t": "equation-inline"}, {"c": "and a probability law", "t": "text"}, {"c": "P(\\cdot)", "t": "equation-inline"}, {"c": "that enable us to compute something like", "t": "text"}, {"c": "P(A)", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "P(B)", "t": "equation-inline"}, {"c": "or even", "t": "text"}, {"c": "P(A \\cap B)", "t": "equation-inline"}, {"c": ". But what if we know something, for example that", "t": "text"}, {"c": "A", "t": "equation-inline"}, {"c": "has occurred? Then we think intuitively that our new sample space is", "t": "text"}, {"c": "A", "t": "equation-inline"}, {"c": ". How we compute now", "t": "text"}, {"c": "P(B)", "t": "equation-inline"}, {"c": "? We represent that probability now as", "t": "text"}, {"c": "P(B \\mid A)", "t": "equation-inline"}, {"c": "to incorporate in the notation that partial knowledge about the result and realize that", "t": "text"}, {"c": "B", "t": "equation-inline"}, {"c": "occurs only if", "t": "text"}, {"c": "A \\cap B", "t": "equation-inline"}, {"c": "occurs to computed it as", "t": "text"}]}, {"type": "equation-interline", "raw_content": "P(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}", "content": {"math_content": "P(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                    why we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.

                                    ", "content": [{"c": "why we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.", "t": "text"}]}, {"type": "list", "raw_content": "
                                      ", "content": {"items": [], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                      Yes, it does\n

                                      ", "content": [{"c": "Yes, it does", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.", "content": {"math_content": "\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                      As an example, if Y|X\\sim \\text{Exp}(X), then\n

                                      ", "content": [{"c": "As an example, if", "t": "text"}, {"c": "Y|X\\sim \\text{Exp}(X)", "t": "equation-inline"}, {"c": ", then", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.", "content": {"math_content": "\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.", "math_type": "latex", "by": "mathjax"}}, {"type": "list", "raw_content": "
                                        ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                        \n You must log in to answer this question.\n

                                        ", "content": {"title_content": "You must log in to answer this question.", "level": "2"}}, {"type": "title", "raw_content": "

                                        \nNot the answer you're looking for? Browse other questions tagged

                                        ", "content": {"title_content": "Not the answer you're looking for? Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": "
                                          . ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                          .

                                          ", "content": {"title_content": ".", "level": "2"}}]], "main_html": "

                                          If f(x,y) is a joint pdf,I understand that,

                                          \n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n

                                          but does this hold for the conditional pdf?

                                          \n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n

                                          I would argue not. For a given X=x the sum of of the pdf over the support of Y should less than or equal to 1. But according to Bierens it is.

                                          In particular, in the case (3.4) we have\n

                                          \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}
                                            • Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF.CommentedDec 6, 2015 at 3:46
                                            • Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x?
                                              \n\u2013\u00a0jessica
                                              CommentedDec 6, 2015 at 3:48
                                            • It does. Take a look at the answers and tell us what you think after that.CommentedDec 6, 2015 at 4:22
                                            • $f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$.
                                              \n\u2013\u00a0A.S.
                                              CommentedDec 6, 2015 at 4:36
                                            • I added some graphs and extra explanation to make this more clear, hopefully ;)CommentedDec 6, 2015 at 6:24

                                            \n 2 Answers\n \n

                                            \n9

                                            By definition,

                                            f_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y

                                            Here, given $x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,

                                            \\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}

                                            where in the second equality we have computed the marginal PDF of X by integrating the joint PDF over y.

                                            Let's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that f_{X,Y}(x,y) is as shown below (in red a \"view\" of the joint PDF at Y=2.5)

                                            $\\hspace{2.5cm}$

                                            \"enter

                                            Suppose we are interested in f_{X \\mid Y}(x \\mid 2.5), which is

                                            f_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3

                                            Note that f_{X \\mid Y}(x \\mid 2.5) has the same shape than f_{X,Y}(x,2.5) (a constant equal to 0.25), but it's divided by f_Y(2.5) to normalize it. That is, to satisfy the normalization axiom! So, although the area under f_{X,Y}(x, 2.5) (the red area above) is clearly smaller than 1, the area under f_{X \\mid Y}(x \\mid 2.5) is 1 because of the mentioned normalization. Below the graph for this conditional PDF.

                                            $\\hspace{2cm}$

                                            \"enter

                                            EDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space \\Omega, which would be represented by that T-shape region in the x-y plane. The probability law defined over \\Omega is f_{X,Y}, and the volume under it is 1. Now, what is f_{X \\mid Y}? It is a new probability law defined over a new sample space, the one that results of imposing the restriction Y=2.5 to \\Omega, that is \\{1 \\leq X \\leq 3, Y=2.5}. A key idea here is that when we condition the original model the shape of the original probability law, f_{X,Y}, over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space \\Omega and a probability law P(\\cdot) that enable us to compute something like P(A), P(B) or even P(A \\cap B). But what if we know something, for example that A has occurred? Then we think intuitively that our new sample space is A. How we compute now P(B)? We represent that probability now as P(B \\mid A) to incorporate in the notation that partial knowledge about the result and realize that B occurs only if A \\cap B occurs to computed it as

                                            P(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}

                                            why we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.

                                              Yes, it does\n

                                              \\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.

                                              As an example, if Y|X\\sim \\text{Exp}(X), then\n

                                              \\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.

                                                \n You must log in to answer this question.\n

                                                \nNot the answer you're looking for? Browse other questions tagged

                                                  .

                                                  .

                                                  ", "statics": {"paragraph": 17, "paragraph.text": 55, "paragraph.equation-inline": 38, "equation-interline": 9, "list": 5, "list.text": 19, "title": 4, "image": 2}, "url": "https://math.stackexchange.com/questions/1561951/integral-over-conditional-pdf", "content": "If $f(x,y)$ is a joint pdf,I understand that,\n\n$$\n\\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$\n\nbut does this hold for the conditional pdf?\n\n$$\n\\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$\n\nI would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.\n\nIn particular, in the case (3.4) we have\n\n$$\n\\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}\n$$\n\n- Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF. Commented Dec 6, 2015 at 3:46\n- Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x? \u2013 jessica Commented Dec 6, 2015 at 3:48\n- It does. Take a look at the answers and tell us what you think after that. Commented Dec 6, 2015 at 4:22\n- $f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$. \u2013 A.S. Commented Dec 6, 2015 at 4:36\n- I added some graphs and extra explanation to make this more clear, hopefully ;) Commented Dec 6, 2015 at 6:24\n\n## 2 Answers\n\n9\n\nBy definition,\n\n$$\nf_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y\n$$\n\nHere, given$x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,\n\n$$\n\\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}\n$$\n\nwhere in the second equality we have computed the marginal PDF of $X$ by integrating the joint PDF over $y$ .\n\nLet's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that $f_{X,Y}(x,y)$ is as shown below (in red a \"view\" of the joint PDF at $Y=2.5$ )\n\n$\\hspace{2.5cm}$\n\nSuppose we are interested in $f_{X \\mid Y}(x \\mid 2.5)$ , which is\n\n$$\nf_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3\n$$\n\nNote that $f_{X \\mid Y}(x \\mid 2.5)$ has the same shape than $f_{X,Y}(x,2.5)$ (a constant equal to $0.25$ ), but it's divided by $f_Y(2.5)$ to normalize it. That is, to satisfy the normalization axiom! So, although the area under $f_{X,Y}(x, 2.5)$ (the red area above) is clearly smaller than $1$ , the area under $f_{X \\mid Y}(x \\mid 2.5)$ is $1$ because of the mentioned normalization. Below the graph for this conditional PDF.\n\n$\\hspace{2cm}$\n\nEDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space $\\Omega$ , which would be represented by that T-shape region in the $x-y$ plane. The probability law defined over $\\Omega$ is $f_{X,Y}$ , and the volume under it is $1$ . Now, what is $f_{X \\mid Y}$ ? It is a new probability law defined over a new sample space, the one that results of imposing the restriction $Y=2.5$ to $\\Omega$ , that is $\\{1 \\leq X \\leq 3, Y=2.5$ }. A key idea here is that when we condition the original model the shape of the original probability law, $f_{X,Y}$ , over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space $\\Omega$ and a probability law $P(\\cdot)$ that enable us to compute something like $P(A)$ , $P(B)$ or even $P(A \\cap B)$ . But what if we know something, for example that $A$ has occurred? Then we think intuitively that our new sample space is $A$ . How we compute now $P(B)$ ? We represent that probability now as $P(B \\mid A)$ to incorporate in the notation that partial knowledge about the result and realize that $B$ occurs only if $A \\cap B$ occurs to computed it as\n\n$$\nP(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}\n$$\n\nwhy we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.\n\nYes, it does\n\n$$\n\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.\n$$\n\nAs an example, if $Y|X\\sim \\text{Exp}(X)$ , then\n\n$$\n\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.\n$$\n\n## You must log in to answer this question.\n\n## Not the answer you're looking for? Browse other questions tagged\n\n## .\n", "html": "\n\n\n\n\n \n\n \n\n probability - Integral Over Conditional PDF - Mathematics Stack Exchange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                                                  \n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n Skip to main content\n\t
                                                  \n\t\t\t\n\t\t\t
                                                  \n\t\t\t\t
                                                  \n\t\t\t
                                                  \n\t\t\t\n\t\t\t
                                                  \n\t\t\t\t
                                                  \n\t\t\t\t\t

                                                  Stack Exchange Network

                                                  \n\t\t\t\t\t

                                                  \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                                                  \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                                                  \n\t\t\t
                                                  \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                                                  \n
                                                  \n\n\t\n\n\n\n\n
                                                  \n
                                                  \n \n \"Mathematics\"\n \n\n
                                                  \n
                                                  \n\n
                                                  \n\n\n\n\n
                                                  \n
                                                  \n \n
                                                  \n\n\n\n
                                                  \n
                                                  \n\n
                                                  \n

                                                  Teams

                                                  \n

                                                  Q&A for work

                                                  \n

                                                  Connect and share knowledge within a single location that is structured and easy to search.

                                                  \n \n Learn more about Teams\n \n
                                                  \n\n
                                                  \n \n
                                                  \n
                                                  \n\n\n\n\n
                                                  \n\n\n\n
                                                  \n\n\n\n
                                                  \n \n\n
                                                  \n\n\n \n
                                                  \n
                                                  \n Asked\n \n
                                                  \n
                                                  \n Modified\n 9 years, 1 month ago\n
                                                  \n
                                                  \n Viewed\n 5k times\n
                                                  \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n \n
                                                  \n
                                                  \n\t\t
                                                  \n
                                                  \n\n
                                                  \n
                                                  \n\n
                                                  \n \n \n
                                                  \n3
                                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                                                  \n\n
                                                  \n\n\n\n
                                                  \n $\\begingroup$\n
                                                  \n\n

                                                  If $f(x,y)$ is a joint pdf,I understand that,

                                                  \n\n

                                                  $$\n \\int_{-\\infty}^\\infty\\int_{-\\infty}^\\infty f(x,y) \\ dx \\ dy = 1\n$$

                                                  \n\n

                                                  but does this hold for the conditional pdf?

                                                  \n\n

                                                  $$\n \\int_{-\\infty}^\\infty f({y|x}) \\ dy = 1.\n$$

                                                  \n\n

                                                  I would argue not. For a given $X=x$ the sum of of the pdf over the support of $Y$ should less than or equal to 1. But according to Bierens it is.

                                                  \n\n
                                                  \n

                                                  In particular, in the case (3.4) we have\n \\begin{align}\n\\begin{split}\n E[(Y &- E[Y \\mid X]) I(X \\in B)] \\\\\n &= \\int_{-\\infty}^{\\infty} \\int_{-\\infty}^{\\infty} (y - g(x)) I(x \\in B) f(y, x) \\ dy \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} y f(y \\mid x) \\ dy \\right) I(x \\in B) f_x(x) \\ dx \\\\\n&\\quad - \\int_{-\\infty}^{\\infty} \\left( \\int_{-\\infty}^{\\infty} f(y \\mid x) \\ dy \\right) g(x) I (x \\in B) f_x(x) \\ dx \\\\\n&= \\int_{-\\infty}^{\\infty} g(x) I(x \\in B) f_x(x) \\ dx - \\int_{-\\infty}^{\\infty} g(x) I (x \\in B) f_x(x) \\ d x = 0.\n\\end{split} \\tag{3.7}\n\\end{align}

                                                  \n
                                                  \n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \n\n \n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n Share\n
                                                  \n\n
                                                  \n \n
                                                  \n\n\n
                                                  \n \n
                                                  \n\n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \"David
                                                  \n
                                                  \n
                                                  \n David Kraemer\n
                                                  \n 1,70211 gold badge1010 silver badges1717 bronze badges\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n asked Dec 6, 2015 at 3:43\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \"jessica's
                                                  \n
                                                  \n
                                                  \n jessicajessica\n
                                                  \n 1,01211 gold badge1515 silver badges3131 bronze badges\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n $\\endgroup$\n
                                                  \n\n\n\n\n 7\n
                                                  \n
                                                  \n
                                                    \n\n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Not clear your question and your last expression, that is not the expression for the conditional expectation, is just the integral over a conditional PDF.\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 3:46\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Sorry it was a typo. I meant over the conditional pdf. Does it sum to 1 over the support of y given a fixed x?\n $\\endgroup$\n
                                                    \n– jessica\n
                                                    \n \n Commented\n Dec 6, 2015 at 3:48\n \n \n \n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n It does. Take a look at the answers and tell us what you think after that.\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 4:22\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n $f_{Y|X}(y|x)$ for any fixed $x$ should be a valid pdf - so it should integrate to $1$.\n $\\endgroup$\n
                                                    \n– A.S.\n
                                                    \n \n Commented\n Dec 6, 2015 at 4:36\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n I added some graphs and extra explanation to make this more clear, hopefully ;)\n $\\endgroup$\n \n \n Commented\n Dec 6, 2015 at 6:24\n \n
                                                    \n
                                                    \n
                                                  • \n\n
                                                  \n\t
                                                  \n\n \n
                                                  \n
                                                  \n\n
                                                  \n\n\n\n\n
                                                  \n \n
                                                  \n
                                                  \n
                                                  \n

                                                  \n 2 Answers\n 2\n

                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n \n \n Reset to default\n \n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n \n \n
                                                  \n9
                                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \n\n\n \n\n
                                                  \n\n
                                                  \n\n\n\n
                                                  \n $\\begingroup$\n
                                                  \n

                                                  By definition,

                                                  \n\n

                                                  $$f_{Y \\mid X}(y \\mid x) = \\frac{f_{X,Y}(x,y)}{f_X(x)}\\qquad \\forall x,y$$

                                                  \n\n

                                                  Here, given $x$, $f_X(x)$ is a constant (we are evaluating at some $x$). Then,

                                                  \n\n

                                                  \\begin{align}\n\\int_{-\\infty}^{\\infty} f_{Y \\mid X}(y \\mid x) dy &= \\frac{\\int_{-\\infty}^\\infty f_{X,Y}(x,y)dy}{f_X(x)}\\\\\n&= \\frac{f_X(x)}{f_X(x)}\\\\\n&= 1\\qquad \\forall x\n\\end{align}

                                                  \n\n

                                                  where in the second equality we have computed the marginal PDF of $X$ by integrating the joint PDF over $y$.

                                                  \n\n

                                                  Let's see now a illustrated example to hopefully gain a better understanding about this result. Suppose that $f_{X,Y}(x,y)$ is as shown below (in red a \"view\" of the joint PDF at $Y=2.5$)

                                                  \n\n

                                                  $\\hspace{2.5cm}$ \"enter

                                                  \n\n

                                                  Suppose we are interested in $f_{X \\mid Y}(x \\mid 2.5)$, which is

                                                  \n\n

                                                  $$f_{X \\mid Y}(x \\mid 2.5) = \\frac{f_{X,Y}(x,2.5)}{f_Y(2.5)} = \\frac{1/4}{2(1/4)} = \\frac{1}{2}\\qquad 1\\leq x \\leq 3$$

                                                  \n\n

                                                  Note that $f_{X \\mid Y}(x \\mid 2.5)$ has the same shape than $f_{X,Y}(x,2.5)$ (a constant equal to $0.25$), but it's divided by $f_Y(2.5)$ to normalize it. That is, to satisfy the normalization axiom! So, although the area under $f_{X,Y}(x, 2.5)$ (the red area above) is clearly smaller than $1$, the area under $f_{X \\mid Y}(x \\mid 2.5)$ is $1$ because of the mentioned normalization. Below the graph for this conditional PDF.

                                                  \n\n

                                                  $\\hspace{2cm}$ \"enter

                                                  \n\n

                                                  EDIT: In response to your comment, Jessica. You are right about the intuition. I just want to add something to it using the example above. We are working with two random variables, but both of them are defined over the same sample space $\\Omega$, which would be represented by that T-shape region in the $x-y$ plane. The probability law defined over $\\Omega$ is $f_{X,Y}$, and the volume under it is $1$. Now, what is $f_{X \\mid Y}$? It is a new probability law defined over a new sample space, the one that results of imposing the restriction $Y=2.5$ to $\\Omega$, that is $\\{1 \\leq X \\leq 3, Y=2.5$}. A key idea here is that when we condition the original model the shape of the original probability law, $f_{X,Y}$, over that new sample space does not change, is just scaled, and that scaling is what help us to hold the normalization axiom. We have reduced the sample space but at the same time we have increased the height of the distribution. It is a beautiful intuitive idea that is right there in the definition of a conditional probability: we start we a given sample space $\\Omega$ and a probability law $P(\\cdot)$ that enable us to compute something like $P(A)$, $P(B)$ or even $P(A \\cap B)$. But what if we know something, for example that $A$ has occurred? Then we think intuitively that our new sample space is $A$. How we compute now $P(B)$? We represent that probability now as $P(B \\mid A)$ to incorporate in the notation that partial knowledge about the result and realize that $B$ occurs only if $A \\cap B$ occurs to computed it as

                                                  \n\n

                                                  $$P(B \\mid A) = \\frac{P(A \\cap B)}{P(B)}$$

                                                  \n\n

                                                  why we divide by $P(B)$? To normalize the non-conditional probabilities so that the conditional ones add up to $1$! Now that our sample space got reduced, is reasonable to increase proportionally the probabilities in the new sample space. This is one of my favorites concepts in probability, the conditional probability.

                                                  \n
                                                  \n
                                                  \n
                                                  \n \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n Share\n
                                                  \n\n
                                                  \n \n
                                                  \n\n\n
                                                  \n \n
                                                  \n\n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n \n
                                                  \n\n
                                                  \n
                                                  \n\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n answered Dec 6, 2015 at 3:55\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \"Carlos
                                                  \n
                                                  \n
                                                  \n Carlos H. Mendoza-CardenasCarlos H. Mendoza-Cardenas\n
                                                  \n 1,8411313 silver badges2424 bronze badges\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n\n\n
                                                  \n $\\endgroup$\n
                                                  \n\n\n\n\n \n
                                                  \n
                                                  \n
                                                    \n\n
                                                  \n\t
                                                  \n\n \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\t\t
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n \n \n
                                                  \n2
                                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \n\n\n \n\n
                                                  \n\n
                                                  \n\n\n\n
                                                  \n $\\begingroup$\n
                                                  \n

                                                  Yes, it does\n$$\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy\n= \\int_{-\\infty}^\\infty\\frac{f_{X,Y}(x,y)}{f_X(x)}dy\n=\\frac{1}{f_X(x)}\\cdot f_X(x) = 1.$$

                                                  \n\n

                                                  As an example, if $Y|X\\sim \\text{Exp}(X)$, then\n$$\\int_{-\\infty}^\\infty f_{Y|X}(y|x)\\,dy = \\int_0^\\infty xe^{-xy}dy = 1.$$

                                                  \n
                                                  \n
                                                  \n
                                                  \n \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n Share\n
                                                  \n\n
                                                  \n \n
                                                  \n\n\n
                                                  \n \n
                                                  \n\n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n answered Dec 6, 2015 at 4:00\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \"Em.'s
                                                  \n
                                                  \n
                                                  \n Em.Em.\n
                                                  \n 16.1k77 gold badges2828 silver badges4040 bronze badges\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n\n\n
                                                  \n $\\endgroup$\n
                                                  \n\n\n\n\n \n
                                                  \n
                                                  \n
                                                    \n\n
                                                  \n\t
                                                  \n\n \n
                                                  \n
                                                  \n
                                                  \n

                                                  \n You must log in to answer this question.\n

                                                  \n\n\n\n

                                                  \n
                                                  \nNot the answer you're looking for? Browse other questions tagged .
                                                  \n

                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n\n\n\n
                                                  \n
                                                  \n\t\t
                                                  \n
                                                  \n\n\n\n\n\n \n \n\n\n\n\n\n
                                                  \n

                                                  \n \n Hot Network Questions\n \n

                                                  \n \n\n \n more hot questions\n \n
                                                  \n\n \n \n\n
                                                  \n\n
                                                  \n\n
                                                  \n\n\n\n\n\n\n\n
                                                  \n
                                                  \n\n\n\n\n \n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_6.jsonl b/bench/data/groundtruth/math_mathjax_latex_6.jsonl index 91121ed7..7544059c 100644 --- a/bench/data/groundtruth/math_mathjax_latex_6.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_6.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

                                                  The short version

                                                  ", "content": {"title_content": "The short version", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  Here is an extremely natural hyperplane arrangement in \\mathbb{R}^n, which I will callR_nforresonance arrangement.

                                                  ", "content": [{"c": "Here is an extremely natural hyperplane arrangement in", "t": "text"}, {"c": "\\mathbb{R}^n", "t": "equation-inline"}, {"c": ", which I will call", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "for resonance arrangement.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  Let x_ibe the standard coordinates on\\mathbb{R}^n. For each nonemptyI\\subseteq [n]=\\{1,\\dots,n\\}, define the hyperplaneH_Ito be the hyperplane given by

                                                  ", "content": [{"c": "Let", "t": "text"}, {"c": "x_i", "t": "equation-inline"}, {"c": "be the standard coordinates on", "t": "text"}, {"c": "\\mathbb{R}^n", "t": "equation-inline"}, {"c": ". For each nonempty", "t": "text"}, {"c": "I\\subseteq [n]=\\{1,\\dots,n\\}", "t": "equation-inline"}, {"c": ", define the hyperplane", "t": "text"}, {"c": "H_I", "t": "equation-inline"}, {"c": "to be the hyperplane given by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\sum_{i\\in I} x_i=0.$$\nThe resonance arrangement is given by all ", "content": {"math_content": "\\sum_{i\\in I} x_i=0.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  The resonance arrangement is given by all2^n-1hyperplanesH_I. The arrangementR_nis natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                  ", "content": [{"c": "The resonance arrangement is given by all", "t": "text"}, {"c": "2^n-1", "t": "equation-inline"}, {"c": "hyperplanes", "t": "text"}, {"c": "H_I", "t": "equation-inline"}, {"c": ". The arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                  ", "content": [{"c": "This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                  What I knew until this week

                                                  ", "content": {"title_content": "What I knew until this week", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                  ", "content": [{"c": "I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  It apparently comes up in physics -- I only know this because the number of regions of R_n, starting atn=2, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequenceA034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.

                                                  ", "content": [{"c": "It apparently comes up in physics -- I only know this because the number of regions of", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": ", starting at", "t": "text"}, {"c": "n=2", "t": "equation-inline"}, {"c": ", is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the R_nget. Which brings us to:

                                                  ", "content": [{"c": "You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "get. Which brings us to:", "t": "text"}]}, {"type": "title", "raw_content": "

                                                  Connection to the GGMS decomposition

                                                  ", "content": {"title_content": "Connection to the GGMS decomposition", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why R_nis perhaps intractable. Briefly:

                                                  ", "content": [{"c": "I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is perhaps intractable. Briefly:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  The arrangement R_nis a natural extension of theA_narrangement. One common description of theA_narrangement is as the\\binom{n+1}{2}hyperplanesy_i-y_j=0, i,j\\in [n]andy_i=0, i\\in [n]. However, one can consider the triangular change of variables

                                                  ", "content": [{"c": "The arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is a natural extension of the", "t": "text"}, {"c": "A_n", "t": "equation-inline"}, {"c": "arrangement. One common description of the", "t": "text"}, {"c": "A_n", "t": "equation-inline"}, {"c": "arrangement is as the", "t": "text"}, {"c": "\\binom{n+1}{2}", "t": "equation-inline"}, {"c": "hyperplanes", "t": "text"}, {"c": "y_i-y_j=0, i,j\\in [n]", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "y_i=0, i\\in [n]", "t": "equation-inline"}, {"c": ". However, one can consider the triangular change of variables", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$y_k\\mapsto \\sum_{j\\leq k} y_j$$.", "content": {"math_content": "y_k\\mapsto \\sum_{j\\leq k} y_j", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  .

                                                  ", "content": [{"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  This changes the hyperplanes to\n

                                                  ", "content": [{"c": "This changes the hyperplanes to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "$$\\sum_{i\\leq k \\leq j} y_k=0.$$", "content": {"math_content": "\\sum_{i\\leq k \\leq j} y_k=0.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire S_norbit of them, we get the resonance arrangementR_n.

                                                  ", "content": [{"c": "These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire", "t": "text"}, {"c": "S_n", "t": "equation-inline"}, {"c": "orbit of them, we get the resonance arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                  ", "content": [{"c": "From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?", "t": "text"}]}]], "main_html": "

                                                  The short version

                                                  Here is an extremely natural hyperplane arrangement in \\mathbb{R}^n, which I will callR_nforresonance arrangement.

                                                  Let x_ibe the standard coordinates on\\mathbb{R}^n. For each nonemptyI\\subseteq [n]=\\{1,\\dots,n\\}, define the hyperplaneH_Ito be the hyperplane given by

                                                  $$\\sum_{i\\in I} x_i=0.$$\nThe resonance arrangement is given by all

                                                  The resonance arrangement is given by all2^n-1hyperplanesH_I. The arrangementR_nis natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                  This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                  What I knew until this week

                                                  I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                  It apparently comes up in physics -- I only know this because the number of regions of R_n, starting atn=2, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequenceA034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.

                                                  You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the R_nget. Which brings us to:

                                                  Connection to the GGMS decomposition

                                                  I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why R_nis perhaps intractable. Briefly:

                                                  The arrangement R_nis a natural extension of theA_narrangement. One common description of theA_narrangement is as the\\binom{n+1}{2}hyperplanesy_i-y_j=0, i,j\\in [n]andy_i=0, i\\in [n]. However, one can consider the triangular change of variables

                                                  $$y_k\\mapsto \\sum_{j\\leq k} y_j$$.

                                                  .

                                                  This changes the hyperplanes to\n

                                                  $$\\sum_{i\\leq k \\leq j} y_k=0.$$

                                                  These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire S_norbit of them, we get the resonance arrangementR_n.

                                                  From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                  ", "statics": {"title": 3, "paragraph": 13, "paragraph.text": 34, "paragraph.equation-inline": 21, "equation-interline": 3}, "url": "https://mathoverflow.net/questions/62764/a-natural-refinement-of-the-a-n-arrangement-is-to-consider-all-2n-1-hyperpl?rq=1", "content": "## The short version\n\nHere is an extremely natural hyperplane arrangement in $\\mathbb{R}^n$ , which I will call $R_n$ for resonance arrangement.\n\nLet $x_i$ be the standard coordinates on $\\mathbb{R}^n$ . For each nonempty $I\\subseteq [n]=\\{1,\\dots,n\\}$ , define the hyperplane $H_I$ to be the hyperplane given by\n\n$$\n\\sum_{i\\in I} x_i=0.\n$$\n\nThe resonance arrangement is given by all $2^n-1$ hyperplanes $H_I$ . The arrangement $R_n$ is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?\n\nThis feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.\n\n## What I knew until this week\n\nI came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.\n\nIt apparently comes up in physics -- I only know this because the number of regions of $R_n$ , starting at $n=2$ , is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.\n\nYou might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the $R_n$ get. Which brings us to:\n\n## Connection to the GGMS decomposition\n\nI got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why $R_n$ is perhaps intractable. Briefly:\n\nThe arrangement $R_n$ is a natural extension of the $A_n$ arrangement. One common description of the $A_n$ arrangement is as the $\\binom{n+1}{2}$ hyperplanes $y_i-y_j=0, i,j\\in [n]$ and $y_i=0, i\\in [n]$ . However, one can consider the triangular change of variables\n\n$$\ny_k\\mapsto \\sum_{j\\leq k} y_j\n$$\n\n.\n\nThis changes the hyperplanes to\n\n$$\n\\sum_{i\\leq k \\leq j} y_k=0.\n$$\n\nThese hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire $S_n$ orbit of them, we get the resonance arrangement $R_n$ .\n\nFrom the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?\n", "html": "\n\n\n\n\n \n\n \n\n co.combinatorics - A natural refinement of the $A_n$ arrangement is to consider all $2^n-1$ hyperplanes given by the sums of the coordinate functions. Have you seen this arrangement? Is it completely intractable? - MathOverflow\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                                                  \n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n Skip to main content\n\t
                                                  \n\t\t\t\n\t\t\t
                                                  \n\t\t\t\t
                                                  \n\t\t\t
                                                  \n\t\t\t\n\t\t\t
                                                  \n\t\t\t\t
                                                  \n\t\t\t\t\t

                                                  Stack Exchange Network

                                                  \n\t\t\t\t\t

                                                  \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                                                  \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                                                  \n\t\t\t
                                                  \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                                                  \n
                                                  \n\n\t\n\n\n\n\n
                                                  \n
                                                  \n \n \"MathOverflow\"\n \n\n
                                                  \n
                                                  \n\n
                                                  \n\n\n\n\n
                                                  \n
                                                  \n \n
                                                  \n\n\n\n\n\n\n\n
                                                  \n\n\n\n
                                                  \n\n\n\n
                                                  \n \n\n
                                                  \n\n\n \n
                                                  \n
                                                  \n Asked\n \n
                                                  \n
                                                  \n Modified\n 11 years, 7 months ago\n
                                                  \n
                                                  \n Viewed\n 1k times\n
                                                  \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n
                                                  \n\n
                                                  \n \n \n
                                                  \n18
                                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                                                  \n\n
                                                  \n\n\n\n
                                                  \n $\\begingroup$\n
                                                  \n\n

                                                  The short version

                                                  \n

                                                  Here is an extremely natural hyperplane arrangement in $\\mathbb{R}^n$, which I will call $R_n$ for resonance arrangement.

                                                  \n

                                                  Let $x_i$ be the standard coordinates on $\\mathbb{R}^n$. For each nonempty $I\\subseteq [n]=\\{1,\\dots,n\\}$, define the hyperplane $H_I$ to be the hyperplane given by\n$$\\sum_{i\\in I} x_i=0.$$\nThe resonance arrangement is given by all $2^n-1$ hyperplanes $H_I$. The arrangement $R_n$ is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                  \n

                                                  This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                  \n

                                                  What I knew until this week

                                                  \n

                                                  I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name "resonance arrangement" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                  \n

                                                  It apparently comes up in physics -- I only know this because the number of regions of $R_n$, starting at $n=2$, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as "Number of Generalized Retarded Functions in Quantum Field Theory" by a physicist.

                                                  \n

                                                  You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the $R_n$ get. Which brings us to:

                                                  \n

                                                  Connection to the GGMS decomposition

                                                  \n

                                                  I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why $R_n$ is perhaps intractable. Briefly:

                                                  \n

                                                  The arrangement $R_n$ is a natural extension of the $A_n$ arrangement. One common description of the $A_n$ arrangement is as the $\\binom{n+1}{2}$ hyperplanes $y_i-y_j=0, i,j\\in [n]$ and $y_i=0, i\\in [n]$. However, one can consider the triangular change of variables\n$$y_k\\mapsto \\sum_{j\\leq k} y_j$$.

                                                  \n

                                                  This changes the hyperplanes to\n$$\\sum_{i\\leq k \\leq j} y_k=0.$$

                                                  \n

                                                  These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire $S_n$ orbit of them, we get the resonance arrangement $R_n$.

                                                  \n

                                                  From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the "GGMS abyss", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                  \n
                                                  \n\n \n\n
                                                  \n
                                                  \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n Share\n
                                                  \n\n
                                                  \n \n
                                                  \n\n \n\n
                                                  \n \n
                                                  \n\n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \"Community's
                                                  \n
                                                  \n
                                                  \n CommunityBot\n
                                                  \n 122 silver badges33 bronze badges\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n asked Apr 23, 2011 at 18:36\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \"Paul
                                                  \n
                                                  \n
                                                  \n Paul JohnsonPaul Johnson\n
                                                  \n 2,3821919 silver badges1919 bronze badges\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n $\\endgroup$\n
                                                  \n\n\n\n\n 5\n
                                                  \n
                                                  \n
                                                    \n\n
                                                  • \n
                                                    \n
                                                    \n 8\n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. \n $\\endgroup$\n
                                                    \n– Richard Stanley\n
                                                    \n \n Commented\n Apr 23, 2011 at 19:09\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n -1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between "However, one can consider the triangular ..." and "These hyperplanes are no longer ...".\n $\\endgroup$\n \n \n Commented\n Apr 23, 2011 at 21:04\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better.\n $\\endgroup$\n
                                                    \n– Paul Johnson\n
                                                    \n \n Commented\n Apr 23, 2011 at 21:48\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n @Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a "tweet and a half" long, and that was an odd enough description that it stuck in my head. Good work.\n $\\endgroup$\n
                                                    \n– Paul Johnson\n
                                                    \n \n Commented\n Apr 23, 2011 at 21:56\n \n
                                                    \n
                                                    \n
                                                  • \n
                                                  • \n
                                                    \n
                                                    \n 1\n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere.\n $\\endgroup$\n
                                                    \n– Paul Johnson\n
                                                    \n \n Commented\n Apr 27, 2011 at 19:41\n \n
                                                    \n
                                                    \n
                                                  • \n\n
                                                  \n\t
                                                  \n\n \n
                                                  \n
                                                  \n\n
                                                  \n\n\n\n\n
                                                  \n \n
                                                  \n
                                                  \n
                                                  \n

                                                  \n 1 Answer\n 1\n

                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n \n \n Reset to default\n \n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n\n
                                                  \n \n \n
                                                  \n8
                                                  \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                                  \n
                                                  \n \n
                                                  \n
                                                  \n\n\n \n\n
                                                  \n\n
                                                  \n\n\n\n
                                                  \n $\\begingroup$\n
                                                  \n

                                                  Here's what I know about this arrangement.

                                                  \n\n

                                                  Regarding the number of chambers in this arrangment, Zuev obtained the lower bound $2^{(1-o(1))n^2}$. The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.

                                                  \n\n

                                                  http://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).

                                                  \n\n

                                                  http://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).

                                                  \n\n

                                                  Whenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf ] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [http://arxiv.org/abs/1201.5989 ].

                                                  \n\n

                                                  The vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by $n+1$ real potentially negative numbers $q,w_1,\\dots,w_n$; any set $S\\subseteq [n]$ with $\\sum_{i\\in S} x_i \\leq q$ is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with $q = 0$.

                                                  \n\n

                                                  What if $q \\neq 0$? Given a hypergraph $\\mathcal{H}$ with $s$ simplices and degree sequence $v_1,\\dots,v_n$, one can look at the values $s-2v_i$, $1\\leq i\\leq n$. If $\\mathcal{H}$ happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by $\\mathcal{H}$ and what computer scientists call the Boolean influence of the Boolean function represented by $\\mathcal{H}$. Anyway it is more natural to look at the vector $(s,v_1,\\dots,v_n)$ rather than just $(v_1,\\dots,v_n)$. This corresponds to looking instead at the zonotope generated by $(1,0,0),(1,0,1),(1,1,0),(1,1,1)$ et.c. (all binary vectors of length $n$, prepended by $1$). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each $v_i$ is an integer $0$ and $2^{n-1}$, and $s$ is between $2^n$ there are at most $2^{n + n(n-1)} = 2^{n^2}$ of them, giving an almost matching upper bound to the lower bound above.

                                                  \n\n

                                                  The latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf .

                                                  \n\n

                                                  I remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.

                                                  \n
                                                  \n
                                                  \n
                                                  \n \n
                                                  \n\n\n\n
                                                  \n\n
                                                  \n\n
                                                  \n Share\n
                                                  \n\n
                                                  \n \n
                                                  \n\n \n\n
                                                  \n \n
                                                  \n\n\n\n\n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n
                                                  \n \n
                                                  \n\n
                                                  \n
                                                  \n\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n
                                                  \n
                                                  \n answered Jun 19, 2013 at 22:06\n
                                                  \n\n
                                                  \n
                                                  \n
                                                  \"Erik
                                                  \n
                                                  \n
                                                  \n Erik AasErik Aas\n
                                                  \n 40655 silver badges1111 bronze badges\n
                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n
                                                  \n\n\n
                                                  \n $\\endgroup$\n
                                                  \n\n\n\n\n 1\n
                                                  \n
                                                  \n
                                                    \n\n
                                                  • \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n
                                                    \n $\\begingroup$\n Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well.\n $\\endgroup$\n
                                                    \n– Paul Johnson\n
                                                    \n \n Commented\n Jun 21, 2013 at 12:20\n \n
                                                    \n
                                                    \n
                                                  • \n\n
                                                  \n\t
                                                  \n\n \n
                                                  \n
                                                  \n
                                                  \n

                                                  \n You must log in to answer this question.\n

                                                  \n\n\n\n

                                                  \n
                                                  \nNot the answer you're looking for? Browse other questions tagged .
                                                  \n

                                                  \n
                                                  \n
                                                  \n\n\n
                                                  \n\n\n\n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n\n
                                                  \n\n
                                                  \n\n
                                                  \n\n\n\n\n\n\n\n
                                                  \n
                                                  \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} +{"content_list": [[{"type": "title", "raw_content": "

                                                  The short version

                                                  ", "content": {"title_content": "The short version", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  Here is an extremely natural hyperplane arrangement in \\mathbb{R}^n, which I will call R_n for resonance arrangement.

                                                  ", "content": [{"c": "Here is an extremely natural hyperplane arrangement in", "t": "text"}, {"c": "\\mathbb{R}^n", "t": "equation-inline"}, {"c": ", which I will call", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "for resonance arrangement.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  Let x_i be the standard coordinates on \\mathbb{R}^n. For each nonempty I\\subseteq [n]=\\{1,\\dots,n\\}, define the hyperplane H_I to be the hyperplane given by\n

                                                  ", "content": [{"c": "Let", "t": "text"}, {"c": "x_i", "t": "equation-inline"}, {"c": "be the standard coordinates on", "t": "text"}, {"c": "\\mathbb{R}^n", "t": "equation-inline"}, {"c": ". For each nonempty", "t": "text"}, {"c": "I\\subseteq [n]=\\{1,\\dots,n\\}", "t": "equation-inline"}, {"c": ", define the hyperplane", "t": "text"}, {"c": "H_I", "t": "equation-inline"}, {"c": "to be the hyperplane given by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\sum_{i\\in I} x_i=0.", "content": {"math_content": "\\sum_{i\\in I} x_i=0.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  \nThe resonance arrangement is given by all 2^n-1 hyperplanes H_I. The arrangement R_n is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                  ", "content": [{"c": "The resonance arrangement is given by all", "t": "text"}, {"c": "2^n-1", "t": "equation-inline"}, {"c": "hyperplanes", "t": "text"}, {"c": "H_I", "t": "equation-inline"}, {"c": ". The arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                  ", "content": [{"c": "This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                  What I knew until this week

                                                  ", "content": {"title_content": "What I knew until this week", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                  ", "content": [{"c": "I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  It apparently comes up in physics -- I only know this because the number of regions of R_n, starting at n=2, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.

                                                  ", "content": [{"c": "It apparently comes up in physics -- I only know this because the number of regions of", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": ", starting at", "t": "text"}, {"c": "n=2", "t": "equation-inline"}, {"c": ", is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the R_n get. Which brings us to:

                                                  ", "content": [{"c": "You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "get. Which brings us to:", "t": "text"}]}, {"type": "title", "raw_content": "

                                                  Connection to the GGMS decomposition

                                                  ", "content": {"title_content": "Connection to the GGMS decomposition", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                  I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why R_n is perhaps intractable. Briefly:

                                                  ", "content": [{"c": "I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is perhaps intractable. Briefly:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  The arrangement R_n is a natural extension of the A_n arrangement. One common description of the A_n arrangement is as the \\binom{n+1}{2} hyperplanes y_i-y_j=0, i,j\\in [n] and y_i=0, i\\in [n]. However, one can consider the triangular change of variables\n

                                                  ", "content": [{"c": "The arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": "is a natural extension of the", "t": "text"}, {"c": "A_n", "t": "equation-inline"}, {"c": "arrangement. One common description of the", "t": "text"}, {"c": "A_n", "t": "equation-inline"}, {"c": "arrangement is as the", "t": "text"}, {"c": "\\binom{n+1}{2}", "t": "equation-inline"}, {"c": "hyperplanes", "t": "text"}, {"c": "y_i-y_j=0, i,j\\in [n]", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "y_i=0, i\\in [n]", "t": "equation-inline"}, {"c": ". However, one can consider the triangular change of variables", "t": "text"}]}, {"type": "equation-interline", "raw_content": "y_k\\mapsto \\sum_{j\\leq k} y_j", "content": {"math_content": "y_k\\mapsto \\sum_{j\\leq k} y_j", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  .

                                                  ", "content": [{"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  This changes the hyperplanes to\n

                                                  ", "content": [{"c": "This changes the hyperplanes to", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\sum_{i\\leq k \\leq j} y_k=0.", "content": {"math_content": "\\sum_{i\\leq k \\leq j} y_k=0.", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                  These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire S_n orbit of them, we get the resonance arrangement R_n.

                                                  ", "content": [{"c": "These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire", "t": "text"}, {"c": "S_n", "t": "equation-inline"}, {"c": "orbit of them, we get the resonance arrangement", "t": "text"}, {"c": "R_n", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                  From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                  ", "content": [{"c": "From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                    ", "content": {"items": [], "ordered": false}}, {"type": "list", "raw_content": "
                                                    • 8
                                                      Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. CommentedApr 23, 2011 at 19:09
                                                    • -1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between \"However, one can consider the triangular ...\" and \"These hyperplanes are no longer ...\".CommentedApr 23, 2011 at 21:04
                                                    • Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better.CommentedApr 23, 2011 at 21:48
                                                    • @Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a \"tweet and a half\" long, and that was an odd enough description that it stuck in my head. Good work.CommentedApr 23, 2011 at 21:56
                                                    • 1
                                                      Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere.CommentedApr 27, 2011 at 19:41
                                                    ", "content": {"items": [[[{"c": "8", "t": "text"}, {"c": "Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. ", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Apr 23, 2011 at 19:09", "t": "text"}]], [[{"c": "-1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between \"However, one can consider the triangular ...\" and \"These hyperplanes are no longer ...\".", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Apr 23, 2011 at 21:04", "t": "text"}]], [[{"c": "Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Apr 23, 2011 at 21:48", "t": "text"}]], [[{"c": "@Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a \"tweet and a half\" long, and that was an odd enough description that it stuck in my head. Good work.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Apr 23, 2011 at 21:56", "t": "text"}]], [[{"c": "1", "t": "text"}, {"c": "Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Apr 27, 2011 at 19:41", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

                                                    \n 1 Answer\n \n

                                                    ", "content": {"title_content": "1 Answer", "level": "2"}}, {"type": "paragraph", "raw_content": "
                                                    \n8
                                                    ", "content": [{"c": "8", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    Here's what I know about this arrangement.

                                                    ", "content": [{"c": "Here's what I know about this arrangement.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    Regarding the number of chambers in this arrangment, Zuev obtained the lower bound 2^{(1-o(1))n^2}. The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.

                                                    ", "content": [{"c": "Regarding the number of chambers in this arrangment, Zuev obtained the lower bound", "t": "text"}, {"c": "2^{(1-o(1))n^2}", "t": "equation-inline"}, {"c": ". The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    http://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).

                                                    ", "content": [{"c": "http://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    http://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).

                                                    ", "content": [{"c": "http://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    Whenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf ] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [http://arxiv.org/abs/1201.5989 ].

                                                    ", "content": [{"c": "Whenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [ http://arxiv.org/abs/1201.5989].", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    The vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by n+1 real potentially negative numbers q,w_1,\\dots,w_n; any set S\\subseteq [n] with \\sum_{i\\in S} x_i \\leq q is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with q = 0.

                                                    ", "content": [{"c": "The vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by", "t": "text"}, {"c": "n+1", "t": "equation-inline"}, {"c": "real potentially negative numbers", "t": "text"}, {"c": "q,w_1,\\dots,w_n", "t": "equation-inline"}, {"c": "; any set", "t": "text"}, {"c": "S\\subseteq [n]", "t": "equation-inline"}, {"c": "with", "t": "text"}, {"c": "\\sum_{i\\in S} x_i \\leq q", "t": "equation-inline"}, {"c": "is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with", "t": "text"}, {"c": "q = 0", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    What if q \\neq 0? Given a hypergraph \\mathcal{H} with s simplices and degree sequence v_1,\\dots,v_n, one can look at the values s-2v_i, 1\\leq i\\leq n. If \\mathcal{H} happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by \\mathcal{H} and what computer scientists call the Boolean influence of the Boolean function represented by \\mathcal{H}. Anyway it is more natural to look at the vector (s,v_1,\\dots,v_n) rather than just (v_1,\\dots,v_n). This corresponds to looking instead at the zonotope generated by (1,0,0),(1,0,1),(1,1,0),(1,1,1) et.c. (all binary vectors of length n, prepended by 1). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each v_i is an integer 0 and 2^{n-1}, and s is between 2^n there are at most 2^{n + n(n-1)} = 2^{n^2} of them, giving an almost matching upper bound to the lower bound above.

                                                    ", "content": [{"c": "What if", "t": "text"}, {"c": "q \\neq 0", "t": "equation-inline"}, {"c": "? Given a hypergraph", "t": "text"}, {"c": "\\mathcal{H}", "t": "equation-inline"}, {"c": "with", "t": "text"}, {"c": "s", "t": "equation-inline"}, {"c": "simplices and degree sequence", "t": "text"}, {"c": "v_1,\\dots,v_n", "t": "equation-inline"}, {"c": ", one can look at the values", "t": "text"}, {"c": "s-2v_i", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "1\\leq i\\leq n", "t": "equation-inline"}, {"c": ". If", "t": "text"}, {"c": "\\mathcal{H}", "t": "equation-inline"}, {"c": "happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by", "t": "text"}, {"c": "\\mathcal{H}", "t": "equation-inline"}, {"c": "and what computer scientists call the Boolean influence of the Boolean function represented by", "t": "text"}, {"c": "\\mathcal{H}", "t": "equation-inline"}, {"c": ". Anyway it is more natural to look at the vector", "t": "text"}, {"c": "(s,v_1,\\dots,v_n)", "t": "equation-inline"}, {"c": "rather than just", "t": "text"}, {"c": "(v_1,\\dots,v_n)", "t": "equation-inline"}, {"c": ". This corresponds to looking instead at the zonotope generated by", "t": "text"}, {"c": "(1,0,0),(1,0,1),(1,1,0),(1,1,1)", "t": "equation-inline"}, {"c": "et.c. (all binary vectors of length", "t": "text"}, {"c": "n", "t": "equation-inline"}, {"c": ", prepended by", "t": "text"}, {"c": "1", "t": "equation-inline"}, {"c": "). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each", "t": "text"}, {"c": "v_i", "t": "equation-inline"}, {"c": "is an integer", "t": "text"}, {"c": "0", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "2^{n-1}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "s", "t": "equation-inline"}, {"c": "is between", "t": "text"}, {"c": "2^n", "t": "equation-inline"}, {"c": "there are at most", "t": "text"}, {"c": "2^{n + n(n-1)} = 2^{n^2}", "t": "equation-inline"}, {"c": "of them, giving an almost matching upper bound to the lower bound above.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    The latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf .

                                                    ", "content": [{"c": "The latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                    I remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.

                                                    ", "content": [{"c": "I remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.", "t": "text"}]}, {"type": "list", "raw_content": "
                                                    • Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well.CommentedJun 21, 2013 at 12:20
                                                    ", "content": {"items": [[[{"c": "Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well.", "t": "text"}, {"c": "Commented", "t": "text"}, {"c": "Jun 21, 2013 at 12:20", "t": "text"}]]], "ordered": false}}, {"type": "title", "raw_content": "

                                                    \n You must log in to answer this question.\n

                                                    ", "content": {"title_content": "You must log in to answer this question.", "level": "2"}}, {"type": "title", "raw_content": "

                                                    \nNot the answer you're looking for? Browse other questions tagged

                                                    ", "content": {"title_content": "Not the answer you're looking for? Browse other questions tagged", "level": "2"}}, {"type": "list", "raw_content": "
                                                      . ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                                      .

                                                      ", "content": {"title_content": ".", "level": "2"}}]], "main_html": "

                                                      The short version

                                                      Here is an extremely natural hyperplane arrangement in \\mathbb{R}^n, which I will call R_n for resonance arrangement.

                                                      Let x_i be the standard coordinates on \\mathbb{R}^n. For each nonempty I\\subseteq [n]=\\{1,\\dots,n\\}, define the hyperplane H_I to be the hyperplane given by\n

                                                      \\sum_{i\\in I} x_i=0.

                                                      \nThe resonance arrangement is given by all 2^n-1 hyperplanes H_I. The arrangement R_n is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                      This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                      What I knew until this week

                                                      I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                      It apparently comes up in physics -- I only know this because the number of regions of R_n, starting at n=2, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.

                                                      You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the R_n get. Which brings us to:

                                                      Connection to the GGMS decomposition

                                                      I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why R_n is perhaps intractable. Briefly:

                                                      The arrangement R_n is a natural extension of the A_n arrangement. One common description of the A_n arrangement is as the \\binom{n+1}{2} hyperplanes y_i-y_j=0, i,j\\in [n] and y_i=0, i\\in [n]. However, one can consider the triangular change of variables\n

                                                      y_k\\mapsto \\sum_{j\\leq k} y_j

                                                      .

                                                      This changes the hyperplanes to\n

                                                      \\sum_{i\\leq k \\leq j} y_k=0.

                                                      These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire S_n orbit of them, we get the resonance arrangement R_n.

                                                      From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                        • 8
                                                          Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. CommentedApr 23, 2011 at 19:09
                                                        • -1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between \"However, one can consider the triangular ...\" and \"These hyperplanes are no longer ...\".CommentedApr 23, 2011 at 21:04
                                                        • Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better.CommentedApr 23, 2011 at 21:48
                                                        • @Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a \"tweet and a half\" long, and that was an odd enough description that it stuck in my head. Good work.CommentedApr 23, 2011 at 21:56
                                                        • 1
                                                          Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere.CommentedApr 27, 2011 at 19:41

                                                        \n 1 Answer\n \n

                                                        \n8

                                                        Here's what I know about this arrangement.

                                                        Regarding the number of chambers in this arrangment, Zuev obtained the lower bound 2^{(1-o(1))n^2}. The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.

                                                        http://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).

                                                        http://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).

                                                        Whenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf ] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [http://arxiv.org/abs/1201.5989 ].

                                                        The vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by n+1 real potentially negative numbers q,w_1,\\dots,w_n; any set S\\subseteq [n] with \\sum_{i\\in S} x_i \\leq q is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with q = 0.

                                                        What if q \\neq 0? Given a hypergraph \\mathcal{H} with s simplices and degree sequence v_1,\\dots,v_n, one can look at the values s-2v_i, 1\\leq i\\leq n. If \\mathcal{H} happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by \\mathcal{H} and what computer scientists call the Boolean influence of the Boolean function represented by \\mathcal{H}. Anyway it is more natural to look at the vector (s,v_1,\\dots,v_n) rather than just (v_1,\\dots,v_n). This corresponds to looking instead at the zonotope generated by (1,0,0),(1,0,1),(1,1,0),(1,1,1) et.c. (all binary vectors of length n, prepended by 1). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each v_i is an integer 0 and 2^{n-1}, and s is between 2^n there are at most 2^{n + n(n-1)} = 2^{n^2} of them, giving an almost matching upper bound to the lower bound above.

                                                        The latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf .

                                                        I remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.

                                                        • Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well.CommentedJun 21, 2013 at 12:20

                                                        \n You must log in to answer this question.\n

                                                        \nNot the answer you're looking for? Browse other questions tagged

                                                          .

                                                          .

                                                          ", "statics": {"title": 7, "paragraph": 23, "paragraph.text": 70, "paragraph.equation-inline": 47, "equation-interline": 3, "list": 4, "list.text": 20}, "url": "https://mathoverflow.net/questions/62764/a-natural-refinement-of-the-a-n-arrangement-is-to-consider-all-2n-1-hyperpl?rq=1", "content": "## The short version\n\nHere is an extremely natural hyperplane arrangement in $\\mathbb{R}^n$ , which I will call $R_n$ for resonance arrangement.\n\nLet $x_i$ be the standard coordinates on $\\mathbb{R}^n$ . For each nonempty $I\\subseteq [n]=\\{1,\\dots,n\\}$ , define the hyperplane $H_I$ to be the hyperplane given by\n\n$$\n\\sum_{i\\in I} x_i=0.\n$$\n\nThe resonance arrangement is given by all $2^n-1$ hyperplanes $H_I$ . The arrangement $R_n$ is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?\n\nThis feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.\n\n## What I knew until this week\n\nI came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name \"resonance arrangement\" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.\n\nIt apparently comes up in physics -- I only know this because the number of regions of $R_n$ , starting at $n=2$ , is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as \"Number of Generalized Retarded Functions in Quantum Field Theory\" by a physicist.\n\nYou might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the $R_n$ get. Which brings us to:\n\n## Connection to the GGMS decomposition\n\nI got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why $R_n$ is perhaps intractable. Briefly:\n\nThe arrangement $R_n$ is a natural extension of the $A_n$ arrangement. One common description of the $A_n$ arrangement is as the $\\binom{n+1}{2}$ hyperplanes $y_i-y_j=0, i,j\\in [n]$ and $y_i=0, i\\in [n]$ . However, one can consider the triangular change of variables\n\n$$\ny_k\\mapsto \\sum_{j\\leq k} y_j\n$$\n\n.\n\nThis changes the hyperplanes to\n\n$$\n\\sum_{i\\leq k \\leq j} y_k=0.\n$$\n\nThese hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire $S_n$ orbit of them, we get the resonance arrangement $R_n$ .\n\nFrom the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the \"GGMS abyss\", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?\n\n- 8 Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. Commented Apr 23, 2011 at 19:09\n- -1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between \"However, one can consider the triangular ...\" and \"These hyperplanes are no longer ...\". Commented Apr 23, 2011 at 21:04\n- Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better. Commented Apr 23, 2011 at 21:48\n- @Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a \"tweet and a half\" long, and that was an odd enough description that it stuck in my head. Good work. Commented Apr 23, 2011 at 21:56\n- 1 Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere. Commented Apr 27, 2011 at 19:41\n\n## 1 Answer\n\n8\n\nHere's what I know about this arrangement.\n\nRegarding the number of chambers in this arrangment, Zuev obtained the lower bound $2^{(1-o(1))n^2}$ . The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.\n\nhttp://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).\n\nhttp://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).\n\nWhenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [ http://arxiv.org/abs/1201.5989].\n\nThe vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by $n+1$ real potentially negative numbers $q,w_1,\\dots,w_n$ ; any set $S\\subseteq [n]$ with $\\sum_{i\\in S} x_i \\leq q$ is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with $q = 0$ .\n\nWhat if $q \\neq 0$ ? Given a hypergraph $\\mathcal{H}$ with $s$ simplices and degree sequence $v_1,\\dots,v_n$ , one can look at the values $s-2v_i$ , $1\\leq i\\leq n$ . If $\\mathcal{H}$ happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by $\\mathcal{H}$ and what computer scientists call the Boolean influence of the Boolean function represented by $\\mathcal{H}$ . Anyway it is more natural to look at the vector $(s,v_1,\\dots,v_n)$ rather than just $(v_1,\\dots,v_n)$ . This corresponds to looking instead at the zonotope generated by $(1,0,0),(1,0,1),(1,1,0),(1,1,1)$ et.c. (all binary vectors of length $n$ , prepended by $1$ ). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each $v_i$ is an integer $0$ and $2^{n-1}$ , and $s$ is between $2^n$ there are at most $2^{n + n(n-1)} = 2^{n^2}$ of them, giving an almost matching upper bound to the lower bound above.\n\nThe latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf.\n\nI remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.\n\n- Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well. Commented Jun 21, 2013 at 12:20\n\n## You must log in to answer this question.\n\n## Not the answer you're looking for? Browse other questions tagged\n\n## .\n", "html": "\n\n\n\n\n \n\n \n\n co.combinatorics - A natural refinement of the $A_n$ arrangement is to consider all $2^n-1$ hyperplanes given by the sums of the coordinate functions. Have you seen this arrangement? Is it completely intractable? - MathOverflow\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\n\n \n \n\n\n\n\n \n\n\n \n\n\n \n \n\n\n \n \n\n\n\n \n \n \n \n\n\n
                                                          \n\n\n\n\n\n
                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n Skip to main content\n\t
                                                          \n\t\t\t\n\t\t\t
                                                          \n\t\t\t\t
                                                          \n\t\t\t
                                                          \n\t\t\t\n\t\t\t
                                                          \n\t\t\t\t
                                                          \n\t\t\t\t\t

                                                          Stack Exchange Network

                                                          \n\t\t\t\t\t

                                                          \n\t\t\t\t\t\tStack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.\n\t\t\t\t\t

                                                          \n\t\t\t\t\tVisit Stack Exchange\n\t\t\t\t\t\n\t\t\t\t
                                                          \n\t\t\t
                                                          \n\n\n\n\n\n\t\t \n\n\n\n\n\n\t
                                                          \n
                                                          \n\n\t\n\n\n\n\n
                                                          \n
                                                          \n \n \"MathOverflow\"\n \n\n
                                                          \n
                                                          \n\n
                                                          \n\n\n\n\n
                                                          \n
                                                          \n \n
                                                          \n\n\n\n\n\n\n\n
                                                          \n\n\n\n
                                                          \n\n\n\n
                                                          \n \n\n
                                                          \n\n\n \n
                                                          \n
                                                          \n Asked\n \n
                                                          \n
                                                          \n Modified\n 11 years, 7 months ago\n
                                                          \n
                                                          \n Viewed\n 1k times\n
                                                          \n
                                                          \n\n\n\n
                                                          \n\n
                                                          \n\n
                                                          \n
                                                          \n\n
                                                          \n \n \n
                                                          \n18
                                                          \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n
                                                          \n\n
                                                          \n\n\n\n
                                                          \n $\\begingroup$\n
                                                          \n\n

                                                          The short version

                                                          \n

                                                          Here is an extremely natural hyperplane arrangement in $\\mathbb{R}^n$, which I will call $R_n$ for resonance arrangement.

                                                          \n

                                                          Let $x_i$ be the standard coordinates on $\\mathbb{R}^n$. For each nonempty $I\\subseteq [n]=\\{1,\\dots,n\\}$, define the hyperplane $H_I$ to be the hyperplane given by\n$$\\sum_{i\\in I} x_i=0.$$\nThe resonance arrangement is given by all $2^n-1$ hyperplanes $H_I$. The arrangement $R_n$ is natural enough that it arises in many contexts -- to first order, my question is simply: have you come across it yourself?

                                                          \n

                                                          This feels rather vague to be a good question, and after giving some background on where I've seen this I'll try to be a bit more specific about what I'm looking for, but my point is this arrangement has a rather simple and natural definition, and so crops up in multiple places, and I'd be curious to hear about more of them even if you can't specifically connect it to what follows.

                                                          \n

                                                          What I knew until this week

                                                          \n

                                                          I came across this arrangement in my study of double Hurwitz numbers -- they are piecewise polynomial, and the chambers of the resonance arrangement are the chambers of polynomiality. I don't want to go into this much more, as it's unimportant to most of what follows Though I will say that conjecturally double Hurwitz numbers could be related to compactified Picard varieties in a way which would connect this arrangement up with birational transformations of those. Also, the name "resonance arrangement" was essentially introduce in this context, by Shadrin, Shapiro and Vainshtein.

                                                          \n

                                                          It apparently comes up in physics -- I only know this because the number of regions of $R_n$, starting at $n=2$, is 2, 6, 32, 370, 11292, 1066044, 347326352 ... Sloane sequence A034997, which you will see was entered as "Number of Generalized Retarded Functions in Quantum Field Theory" by a physicist.

                                                          \n

                                                          You might expect by that rate of growth that this hyperplane arrangement is completely intractable, and more specifically, what I would love from an answer is some kind qualitative statement about how ugly the $R_n$ get. Which brings us to:

                                                          \n

                                                          Connection to the GGMS decomposition

                                                          \n

                                                          I got to thinking about this again now and decided to post on MO of it because of Noah's question about the vertices of a variation of GIT problem, where this arrangement is lurking around -- see there for more detail. Allen's brief comment there prompted me to skim some of his and related papers to that general area, and I found the introduction to Positroid varieties I: juggling and geometry most enlightening, together with the discussion at Noah's question could give another suggestion why $R_n$ is perhaps intractable. Briefly:

                                                          \n

                                                          The arrangement $R_n$ is a natural extension of the $A_n$ arrangement. One common description of the $A_n$ arrangement is as the $\\binom{n+1}{2}$ hyperplanes $y_i-y_j=0, i,j\\in [n]$ and $y_i=0, i\\in [n]$. However, one can consider the triangular change of variables\n$$y_k\\mapsto \\sum_{j\\leq k} y_j$$.

                                                          \n

                                                          This changes the hyperplanes to\n$$\\sum_{i\\leq k \\leq j} y_k=0.$$

                                                          \n

                                                          These hyperplanes are no longer invariant under permutation of the coordinates, and if we proceed to add the entire $S_n$ orbit of them, we get the resonance arrangement $R_n$.

                                                          \n

                                                          From the discussion on Noah's question and the introduction to the Positroid paper, we see that this manipulation is a shadow of the GGMS decomposition of the Grassmannian, and describing this decomposition in general seems to be intractable in that it requires identifying whether matroids are representable or not. So, what I'd really like to know how is much of the "GGMS abyss", as they refer to it, is reflected in the resonance arrangement? Is it hopeless to describe and count its chambers?

                                                          \n
                                                          \n\n \n\n
                                                          \n
                                                          \n
                                                          \n\n\n\n
                                                          \n\n
                                                          \n\n
                                                          \n Share\n
                                                          \n\n
                                                          \n \n
                                                          \n\n \n\n
                                                          \n \n
                                                          \n\n\n\n\n\n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n \n
                                                          \n
                                                          \"Community's
                                                          \n
                                                          \n
                                                          \n CommunityBot\n
                                                          \n 122 silver badges33 bronze badges\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n asked Apr 23, 2011 at 18:36\n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \"Paul
                                                          \n
                                                          \n
                                                          \n Paul JohnsonPaul Johnson\n
                                                          \n 2,3821919 silver badges1919 bronze badges\n
                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n
                                                          \n
                                                          \n $\\endgroup$\n
                                                          \n\n\n\n\n 5\n
                                                          \n
                                                          \n
                                                            \n\n
                                                          • \n
                                                            \n
                                                            \n 8\n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n Several of my students and I have thought about the characteristic polynomial and number of regions of this arrangement over the years, but we never came up with anything interesting. \n $\\endgroup$\n
                                                            \n– Richard Stanley\n
                                                            \n \n Commented\n Apr 23, 2011 at 19:09\n \n
                                                            \n
                                                            \n
                                                          • \n
                                                          • \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n -1 for not having a more specific question, but +2 for lots of details and interesting discussion and good title. Also, I think there's something funny with the TeX between "However, one can consider the triangular ..." and "These hyperplanes are no longer ...".\n $\\endgroup$\n \n \n Commented\n Apr 23, 2011 at 21:04\n \n
                                                            \n
                                                            \n
                                                          • \n
                                                          • \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n Think I fixed the TeX. And I was a bit torn about it not being specific enough myself, but it was never going to get asked if I kept worrying about it. Next time will be better.\n $\\endgroup$\n
                                                            \n– Paul Johnson\n
                                                            \n \n Commented\n Apr 23, 2011 at 21:48\n \n
                                                            \n
                                                            \n
                                                          • \n
                                                          • \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n @Theo: Also, you are half responsible for the long title: somewhere you mentioned that a title can be about a "tweet and a half" long, and that was an odd enough description that it stuck in my head. Good work.\n $\\endgroup$\n
                                                            \n– Paul Johnson\n
                                                            \n \n Commented\n Apr 23, 2011 at 21:56\n \n
                                                            \n
                                                            \n
                                                          • \n
                                                          • \n
                                                            \n
                                                            \n 1\n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n Just commenting to thank Richard -- this is one kind of thing I wanted to hear: that people had put some real thought into it and not gotten anything interesting. I wasn't up-voting that you didn't get anywhere.\n $\\endgroup$\n
                                                            \n– Paul Johnson\n
                                                            \n \n Commented\n Apr 27, 2011 at 19:41\n \n
                                                            \n
                                                            \n
                                                          • \n\n
                                                          \n\t
                                                          \n\n \n
                                                          \n
                                                          \n\n
                                                          \n\n\n\n\n
                                                          \n \n
                                                          \n
                                                          \n
                                                          \n

                                                          \n 1 Answer\n 1\n

                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n
                                                          \n \n \n Reset to default\n \n
                                                          \n
                                                          \n \n
                                                          \n
                                                          \n\n\n
                                                          \n
                                                          \n
                                                          \n\n\n\n\n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n \n \n
                                                          \n8
                                                          \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n
                                                          \n
                                                          \n \n
                                                          \n
                                                          \n\n\n \n\n
                                                          \n\n
                                                          \n\n\n\n
                                                          \n $\\begingroup$\n
                                                          \n

                                                          Here's what I know about this arrangement.

                                                          \n\n

                                                          Regarding the number of chambers in this arrangment, Zuev obtained the lower bound $2^{(1-o(1))n^2}$. The proof uses Zaslavsky's theorem and a difficult estimate due to Odlyzko.

                                                          \n\n

                                                          http://www.doiserbia.nb.rs/img/doi/0350-1302/2007/0350-13020796129K.pdf describes an improvement to that lower bound (including references to Zuev's and Odlyzko's articles).

                                                          \n\n

                                                          http://arxiv.org/pdf/1209.2309v1.pdf studies a closely related arrangement and gives a related (but weaker) lower bound using a very elegant method. It turns out the arrangment becomes much easier mod $2$ (even than one might expect).

                                                          \n\n

                                                          Whenever one has a central hyperplane arrangement one has a zonotope dual to it. Klivans and Reiner [ http://arxiv.org/pdf/math/0610787v2.pdf ] fix $k$ and look at the zonotope (Minkowski sum of the line segments) generated by all 0/1-vectors of length $n$ with exactly $k$ ones. In particular they are interested in the zonotope considered as symmetric polynomial (the sum $\\sum x^m$ over all lattice points $m$ in the zonotope).\nThus the Minkowski sum of their zonotopes over $1\\leq k \\leq n$ is the zonotope dual to your arrangement. Degree sequences of hypergraphs correspond to integer points in this latter zonotope. Surprisingly the converse is false! This was showed by Liu [http://arxiv.org/abs/1201.5989 ].

                                                          \n\n

                                                          The vertices in the zonotope, and thus the regions in the arrangement, correspond almost to linear threshold hypergraphs (better known as linear threshold (Boolean) functions). A linear threshold hypergraph is determined by $n+1$ real potentially negative numbers $q,w_1,\\dots,w_n$; any set $S\\subseteq [n]$ with $\\sum_{i\\in S} x_i \\leq q$ is declared an edge. \"Almost\" above means that the vertices in this zonotope correspond exactly to the linear threshold hypergraphs that can be given with $q = 0$.

                                                          \n\n

                                                          What if $q \\neq 0$? Given a hypergraph $\\mathcal{H}$ with $s$ simplices and degree sequence $v_1,\\dots,v_n$, one can look at the values $s-2v_i$, $1\\leq i\\leq n$. If $\\mathcal{H}$ happens to be down-closed, this is what game theorists call the Banzhaf value of the game represented by $\\mathcal{H}$ and what computer scientists call the Boolean influence of the Boolean function represented by $\\mathcal{H}$. Anyway it is more natural to look at the vector $(s,v_1,\\dots,v_n)$ rather than just $(v_1,\\dots,v_n)$. This corresponds to looking instead at the zonotope generated by $(1,0,0),(1,0,1),(1,1,0),(1,1,1)$ et.c. (all binary vectors of length $n$, prepended by $1$). The vertices (obviously more than when we didn't have the leading 1's in the generators) in this zonotope correspond exactly to linear threshold hypergraphs. Since each $v_i$ is an integer $0$ and $2^{n-1}$, and $s$ is between $2^n$ there are at most $2^{n + n(n-1)} = 2^{n^2}$ of them, giving an almost matching upper bound to the lower bound above.

                                                          \n\n

                                                          The latter zonotope is briefly mentioned in the end of the article http://arxiv.org/pdf/0908.4425.pdf .

                                                          \n\n

                                                          I remember having seen a reference to a paper of Terao computing the characteristic polynomial of the arrangemnt for some small values, but cannot locate that reference right now.

                                                          \n
                                                          \n
                                                          \n
                                                          \n \n
                                                          \n\n\n\n
                                                          \n\n
                                                          \n\n
                                                          \n Share\n
                                                          \n\n
                                                          \n \n
                                                          \n\n \n\n
                                                          \n \n
                                                          \n\n\n\n\n\n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n \n
                                                          \n\n
                                                          \n
                                                          \n\n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n answered Jun 19, 2013 at 22:06\n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \"Erik
                                                          \n
                                                          \n
                                                          \n Erik AasErik Aas\n
                                                          \n 40655 silver badges1111 bronze badges\n
                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n
                                                          \n\n\n
                                                          \n $\\endgroup$\n
                                                          \n\n\n\n\n 1\n
                                                          \n
                                                          \n
                                                            \n\n
                                                          • \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n
                                                            \n $\\begingroup$\n Thanks! Haven't digested this at all, but was hoping that there'd be more about this in the literature, and you've supplied that well.\n $\\endgroup$\n
                                                            \n– Paul Johnson\n
                                                            \n \n Commented\n Jun 21, 2013 at 12:20\n \n
                                                            \n
                                                            \n
                                                          • \n\n
                                                          \n\t
                                                          \n\n \n
                                                          \n
                                                          \n
                                                          \n

                                                          \n You must log in to answer this question.\n

                                                          \n\n\n\n

                                                          \n
                                                          \nNot the answer you're looking for? Browse other questions tagged .
                                                          \n

                                                          \n
                                                          \n
                                                          \n\n\n
                                                          \n\n\n\n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n\n
                                                          \n\n
                                                          \n\n
                                                          \n\n\n\n\n\n\n\n
                                                          \n
                                                          \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n\n \n\n\n\n \n \n"} diff --git a/bench/data/groundtruth/math_mathjax_latex_7.jsonl b/bench/data/groundtruth/math_mathjax_latex_7.jsonl index 6ba35151..e9ff76ab 100644 --- a/bench/data/groundtruth/math_mathjax_latex_7.jsonl +++ b/bench/data/groundtruth/math_mathjax_latex_7.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          ", "content": {"title_content": "1.5: Multiply and Divide Integers", "level": "1"}}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "Last updated", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Page ID
                                                          30345
                                                          ", "content": {"items": [[[{"c": "Page ID", "t": "text"}]], [[{"c": "30345", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "
                                                        • \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}} \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|} \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\kernel}{\\mathrm{null}\\,} \\newcommand{\\range}{\\mathrm{range}\\,} \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}} \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|} \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}} \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0 \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0 \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0 \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} \\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                        • ", "content": [{"c": " \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} ", "t": "equation-inline"}, {"c": " \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": "( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)", "t": "text"}, {"c": " \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|}", "t": "equation-inline"}, {"c": " \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": " \\newcommand{\\id}{\\mathrm{id}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": " \\newcommand{\\kernel}{\\mathrm{null}\\,}", "t": "equation-inline"}, {"c": " \\newcommand{\\range}{\\mathrm{range}\\,}", "t": "equation-inline"}, {"c": " \\newcommand{\\RealPart}{\\mathrm{Re}}", "t": "equation-inline"}, {"c": " \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Argument}{\\mathrm{Arg}}", "t": "equation-inline"}, {"c": " \\newcommand{\\norm}[1]{\\| #1 \\|}", "t": "equation-inline"}, {"c": " \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} ", "t": "equation-inline"}, {"c": " \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} ", "t": "equation-inline"}, {"c": "\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          By the end of this section, you will be able to:

                                                          ", "content": [{"c": "By the end of this section, you will be able to:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • Multiply integers
                                                          • Divide integers
                                                          • Simplify expressions with integers
                                                          • Evaluate variable expressions with integers
                                                          • Translate English phrases to algebraic expressions
                                                          • Use integers in applications
                                                          ", "content": {"items": [[[{"c": "Multiply integers", "t": "text"}]], [[{"c": "Divide integers", "t": "text"}]], [[{"c": "Simplify expressions with integers", "t": "text"}]], [[{"c": "Evaluate variable expressions with integers", "t": "text"}]], [[{"c": "Translate English phrases to algebraic expressions", "t": "text"}]], [[{"c": "Use integers in applications", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          ", "content": [{"c": "A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Multiply Integers

                                                          ", "content": {"title_content": "Multiply Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          ", "content": [{"c": "Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          We remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.

                                                          ", "content": [{"c": "We remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          \"Two
                                                          Figure \\(\\PageIndex{1}\\)
                                                          ", "content": {"url": "https://math.libretexts.org/@api/deki/files/17395/CNX_ElemAlg_Figure_01_04_001_img_new.jpg?revision=1", "data": null, "alt": "Two images are shown side-by-side. The image on the left has the equation five times three at the top. Below this it reads \u201cadd 5, 3 times.\u201d Below this depicts three rows of blue counters, with five counters in each row. Under this, it says \u201c15 positives.\u201d Under thisis the equation\u201c5 times 3 equals 15.\u201d The image on the right reads \u201cnegative 5 times three. The three is in parentheses. Below this it reads, \u201cadd negative five, three times.\u201d Under this are fifteen red counters in three rows of five. Below this it reads\u201d \u201c15 negatives\u201d. Below this is the equation negative five times 3 equals negative 15.\u201d", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                          The next two examples are more interesting.

                                                          ", "content": [{"c": "The next two examples are more interesting.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          What does it mean to multiply \\(5\\) by \\(\u22123\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as \u201ctaking away,\u201d it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.

                                                          ", "content": [{"c": "What does it mean to multiply \\(5\\) by \\(\u22123\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as \u201ctaking away,\u201d it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          \"This
                                                          Figure \\(\\PageIndex{2}\\)
                                                          ", "content": {"url": "https://math.libretexts.org/@api/deki/files/17306/CNX_ElemAlg_Figure_01_04_002_img_new.jpg?revision=1", "data": null, "alt": "This figure has two columns. In the top row, the left column contains the expression 5 times negative 3. This means take away 5, three times. Below this, there are three groups of five red negative counters, and below each group of red counters is an identical group of five blue positive counters. What are left are fifteen negatives, represented by 15 red counters. Underneath the counters is the equation 5 times negative 3 equals negative 15. In the top row, the right column contains the expression negative 5 times negative 3. This means take away negative 5, three times. Below this, there are three groups of five blue positive counters, and below each group of blue counters is an identical group of five red negative counters. What are left are fifteen positives, represented by 15 blue counters. Underneath the blue counters is the equation negative 5 times negative 3 equals 15.", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                          In summary:

                                                          ", "content": [{"c": "In summary:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          ", "content": [{"c": "Notice that for multiplication of two signed numbers, when the:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • signs are the same, the product is positive.
                                                          • signs are different, the product is negative.
                                                          ", "content": {"items": [[[{"c": "signs are the ", "t": "text"}, {"c": "same", "t": "text"}, {"c": ", the product is ", "t": "text"}, {"c": "positive", "t": "text"}, {"c": ".", "t": "text"}]], [[{"c": "signs are ", "t": "text"}, {"c": "different", "t": "text"}, {"c": ", the product is ", "t": "text"}, {"c": "negative", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          We\u2019ll put this all together in the chart below.

                                                          ", "content": [{"c": "We\u2019ll put this all together in the chart below.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          For multiplication of two signed numbers:

                                                          ", "content": [{"c": "For multiplication of two signed numbers:", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          ", "content": {"html": "
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          ", "is_complex": false}}, {"type": "table", "raw_content": "
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          ", "content": {"html": "
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          ", "is_complex": false}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-9\\cdot 3\\)
                                                          2. \\(-2(-5)\\)
                                                          3. \\(4(-8)\\)
                                                          4. \\(7\\cdot 6\\)
                                                          ", "content": {"items": [[[{"c": "\\(-9\\cdot 3\\)", "t": "text"}]], [[{"c": "\\(-2(-5)\\)", "t": "text"}]], [[{"c": "\\(4(-8)\\)", "t": "text"}]], [[{"c": "\\(7\\cdot 6\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-6\\cdot 8\\)
                                                          2. \\(-4(-7)\\)
                                                          3. \\(9(-7)\\)
                                                          4. \\(5\\cdot 12\\)
                                                          ", "content": {"items": [[[{"c": "\\(-6\\cdot 8\\)", "t": "text"}]], [[{"c": "\\(-4(-7)\\)", "t": "text"}]], [[{"c": "\\(9(-7)\\)", "t": "text"}]], [[{"c": "\\(5\\cdot 12\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-48\\)
                                                          2. \\(28\\)
                                                          3. \\(-63\\)
                                                          4. \\(60\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-48\\)", "t": "text"}, {"c": "\\(28\\)", "t": "text"}, {"c": "\\(-63\\)", "t": "text"}, {"c": "\\(60\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-8\\cdot 7\\)
                                                          2. \\(-6(-9)\\)
                                                          3. \\(7(-4)\\)
                                                          4. \\(3\\cdot 13\\)
                                                          ", "content": {"items": [[[{"c": "\\(-8\\cdot 7\\)", "t": "text"}]], [[{"c": "\\(-6(-9)\\)", "t": "text"}]], [[{"c": "\\(7(-4)\\)", "t": "text"}]], [[{"c": "\\(3\\cdot 13\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-56\\)
                                                          2. \\(54\\)
                                                          3. \\(-28\\)
                                                          4. \\(39\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-56\\)", "t": "text"}, {"c": "\\(54\\)", "t": "text"}, {"c": "\\(-28\\)", "t": "text"}, {"c": "\\(39\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(\u22121\\)? Let\u2019s multiply a positive number and then a negative number by \\(\u22121\\) to see what we get.

                                                          ", "content": [{"c": "When we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(\u22121\\)? Let\u2019s multiply a positive number and then a negative number by \\(\u22121\\) to see what we get.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(\u22121\\), we get its opposite!

                                                          ", "content": [{"c": "\\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\] Each time we multiply a number by \\(\u22121\\), we get its opposite!", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          MULTIPLICATION BY \u22121

                                                          ", "content": [{"c": "MULTIPLICATION BY \u22121", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\u22121a=\u2212a\\]

                                                          ", "content": {"math_content": "\u22121a=\u2212a", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Multiplying a number by \\(\u22121\\) gives its opposite.

                                                          ", "content": [{"c": "Multiplying a number by \\(\u22121\\) gives its opposite.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \\(-1(-11)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1 \\cdot 7\\)", "t": "text"}]], [[{"c": "\\(-1(-11)\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1\\cdot 9\\)
                                                          2. \\(-1\\cdot(-17)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1\\cdot 9\\)", "t": "text"}]], [[{"c": "\\(-1\\cdot(-17)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(17\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-9\\)", "t": "text"}, {"c": "\\(17\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1\\cdot 8\\)
                                                          2. \\(-1\\cdot(-16)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1\\cdot 8\\)", "t": "text"}]], [[{"c": "\\(-1\\cdot(-16)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-8\\)
                                                          2. \\(16\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-8\\)", "t": "text"}, {"c": "\\(16\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Divide Integers

                                                          ", "content": {"title_content": "Divide Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          ", "content": [{"c": "What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Division follows the same rules as multiplication!

                                                          ", "content": [{"c": "Division follows the same rules as multiplication!", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For division of two signed numbers, when the:

                                                          ", "content": [{"c": "For division of two signed numbers, when the:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • signs are the same, the quotient is positive.
                                                          • signs are different, the quotient is negative.
                                                          ", "content": {"items": [[[{"c": "signs are the ", "t": "text"}, {"c": "same", "t": "text"}, {"c": ", the quotient is ", "t": "text"}, {"c": "positive", "t": "text"}, {"c": ".", "t": "text"}]], [[{"c": "signs are ", "t": "text"}, {"c": "different", "t": "text"}, {"c": ", the quotient is ", "t": "text"}, {"c": "negative", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          ", "content": [{"c": "And remember that we can always check the answer of a division problem by multiplying.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          For multiplication and division of two signed numbers:

                                                          ", "content": [{"c": "For multiplication and division of two signed numbers:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • If the signs are the same, the result is positive.
                                                          • If the signs are different, the result is negative.
                                                          ", "content": {"items": [[[{"c": "If the signs are the same, the result is positive.", "t": "text"}]], [[{"c": "If the signs are different, the result is negative.", "t": "text"}]]], "ordered": false}}, {"type": "table", "raw_content": "
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          ", "content": {"html": "
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          ", "is_complex": false}}, {"type": "table", "raw_content": "
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          ", "content": {"html": "
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          ", "is_complex": false}}, {"type": "list", "raw_content": "
                                                          1. \\(-27\\div 3\\)
                                                          2. \\(-100\\div (-4)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-27\\div 3\\)", "t": "text"}]], [[{"c": "\\(-100\\div (-4)\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Divide:

                                                          ", "content": [{"c": "Divide:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-42\\div 6\\)
                                                          2. \\(-117\\div (-3)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-42\\div 6\\)", "t": "text"}]], [[{"c": "\\(-117\\div (-3)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-7\\)
                                                          2. \\(39\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-7\\)", "t": "text"}, {"c": "\\(39\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Divide:

                                                          ", "content": [{"c": "Divide:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-63\\div 7\\)
                                                          2. \\(-115\\div (-5)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-63\\div 7\\)", "t": "text"}]], [[{"c": "\\(-115\\div (-5)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(23\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-9\\)", "t": "text"}, {"c": "\\(23\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Simplify Expressions with Integers

                                                          ", "content": {"title_content": "Simplify Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          ", "content": [{"c": "What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          ", "content": [{"c": "Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          7(-2)+4(-7)-6
                                                          ", "content": [{"c": "7(-2)+4(-7)-6", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          8(-3)+5(-7)-4
                                                          ", "content": [{"c": "8(-3)+5(-7)-4", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -63
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-63", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          9(-3)+7(-8)-1
                                                          ", "content": [{"c": "9(-3)+7(-8)-1", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -84
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-84", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-2)^{4}\\)
                                                          2. \\(-2^{4}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-2)^{4}\\)", "t": "text"}]], [[{"c": "\\(-2^{4}\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((\u22122)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.

                                                          ", "content": [{"c": "Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((\u22122)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-3)^{4}\\)
                                                          2. \\(-3^{4}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-3)^{4}\\)", "t": "text"}]], [[{"c": "\\(-3^{4}\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(81\\)
                                                          2. \\(-81\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(81\\)", "t": "text"}, {"c": "\\(-81\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-7)^{2}\\)
                                                          2. \\(-7^{2}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-7)^{2}\\)", "t": "text"}]], [[{"c": "\\(-7^{2}\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(49\\)
                                                          2. \\(-49\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(49\\)", "t": "text"}, {"c": "\\(-49\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The next example reminds us to simplify inside parentheses first.

                                                          ", "content": [{"c": "The next example reminds us to simplify inside parentheses first.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          12-3(9 - 12)
                                                          ", "content": [{"c": "12-3(9 - 12)", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          17 - 4(8 - 11)
                                                          ", "content": [{"c": "17 - 4(8 - 11)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          29
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "29", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          16 - 6(7 - 13)
                                                          ", "content": [{"c": "16 - 6(7 - 13)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          52
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "52", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          8(-9)\\div (-2)^{3}
                                                          ", "content": [{"c": "8(-9)\\div (-2)^{3}", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          12(-9)\\div (-3)^{3}
                                                          ", "content": [{"c": "12(-9)\\div (-3)^{3}", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          4
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "4", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          18(-4)\\div (-2)^{3}
                                                          ", "content": [{"c": "18(-4)\\div (-2)^{3}", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          9
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "9", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          -30\\div 2 + (-3)(-7)
                                                          ", "content": [{"c": "-30\\div 2 + (-3)(-7)", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          -27\\div 3 + (-5)(-6)
                                                          ", "content": [{"c": "-27\\div 3 + (-5)(-6)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          21
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "21", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                          -32\\div 4 + (-2)(-7)
                                                          ", "content": [{"c": "-32\\div 4 + (-2)(-7)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          6
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "6", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Evaluate Variable Expressions with Integers

                                                          ", "content": {"title_content": "Evaluate Variable Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          ", "content": [{"c": "Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          When \\(n=\u22125\\), evaluate:

                                                          ", "content": [{"c": "When \\(n=\u22125\\), evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(n+1\\)
                                                          2. \\(\u2212n+1\\).
                                                          ", "content": {"items": [[[{"c": "\\(n+1\\)", "t": "text"}]], [[{"c": "\\(\u2212n+1\\).", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          When \\(n=\u22128\\), evaluate:

                                                          ", "content": [{"c": "When \\(n=\u22128\\), evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(n+2\\)
                                                          2. \\(\u2212n+2\\).
                                                          ", "content": {"items": [[[{"c": "\\(n+2\\)", "t": "text"}]], [[{"c": "\\(\u2212n+2\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-6\\)
                                                          2. \\(10\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-6\\)", "t": "text"}, {"c": "\\(10\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          When \\(y=\u22129\\), evaluate:

                                                          ", "content": [{"c": "When \\(y=\u22129\\), evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(y+8\\)
                                                          2. \\(\u2212y+8\\).
                                                          ", "content": {"items": [[[{"c": "\\(y+8\\)", "t": "text"}]], [[{"c": "\\(\u2212y+8\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-1\\)
                                                          2. \\(17\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-1\\)", "t": "text"}, {"c": "\\(17\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).

                                                          ", "content": [{"c": "Evaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).

                                                          ", "content": [{"c": "Evaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          196
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "196", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).

                                                          ", "content": [{"c": "Evaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          8
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "8", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\(20 -z \\) when

                                                          ", "content": [{"c": "Evaluate \\(20 -z \\) when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(z = 12\\)
                                                          2. \\(z = -12\\)
                                                          ", "content": {"items": [[[{"c": "\\(z = 12\\)", "t": "text"}]], [[{"c": "\\(z = -12\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\(17 - k\\) when

                                                          ", "content": [{"c": "Evaluate \\(17 - k\\) when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(k = 19\\)
                                                          2. \\(k = -19\\)
                                                          ", "content": {"items": [[[{"c": "\\(k = 19\\)", "t": "text"}]], [[{"c": "\\(k = -19\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-2\\)
                                                          2. \\(36\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-2\\)", "t": "text"}, {"c": "\\(36\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate \\(-5 - b\\) when

                                                          ", "content": [{"c": "Evaluate \\(-5 - b\\) when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(b = 14\\)
                                                          2. \\(b = -14\\)
                                                          ", "content": {"items": [[[{"c": "\\(b = 14\\)", "t": "text"}]], [[{"c": "\\(b = -14\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-19\\)
                                                          2. \\(9\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-19\\)", "t": "text"}, {"c": "\\(9\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          \\(2x^{2} + 3x + 8\\) when \\(x = 4\\).

                                                          ", "content": [{"c": "\\(2x^{2} + 3x + 8\\) when \\(x = 4\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Substitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.

                                                          ", "content": [{"c": "Substitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          \\(3x^{2} - 2x + 6\\) when \\(x =-3\\).

                                                          ", "content": [{"c": "\\(3x^{2} - 2x + 6\\) when \\(x =-3\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          39
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "39", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          \\(4x^{2} - x - 5\\) when \\(x = -2\\).

                                                          ", "content": [{"c": "\\(4x^{2} - x - 5\\) when \\(x = -2\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          13
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "13", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Translate Phrases to Expressions with Integers

                                                          ", "content": {"title_content": "Translate Phrases to Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          ", "content": [{"c": "Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of \\(8\\) and \\(\u221212\\), increased by \\(3\\).

                                                          ", "content": [{"c": "Translate and simplify: the sum of \\(8\\) and \\(\u221212\\), increased by \\(3\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of \\(9\\) and \\(\u221216\\), increased by \\(4\\).

                                                          ", "content": [{"c": "Translate and simplify: the sum of \\(9\\) and \\(\u221216\\), increased by \\(4\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          (9 + (-16)) + 4 - 3
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "(9 + (-16)) + 4 - 3", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of \\(-8\\) and \\(\u221212\\), increased by \\(7\\).

                                                          ", "content": [{"c": "Translate and simplify: the sum of \\(-8\\) and \\(\u221212\\), increased by \\(7\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          (-8 + (-12)) + 7 - 13
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "(-8 + (-12)) + 7 - 13", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          ", "content": [{"c": "When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          ", "content": {"html": "
                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)<br>the difference of \\(a\\) and \\(b\\)<br>\\(b\\) subtracted from \\(a\\)<br>\\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          ", "is_complex": false}}, {"type": "paragraph", "raw_content": "

                                                          Be careful to get a and b in the right order!

                                                          ", "content": [{"c": "Be careful to get a and b in the right order!", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and then simplify

                                                          ", "content": [{"c": "Translate and then simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(13\\) and \\(\u221221\\)
                                                          2. subtract \\(24\\) from \\(\u221219\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(13\\) and \\(\u221221\\)", "t": "text"}]], [[{"c": "subtract \\(24\\) from \\(\u221219\\).", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify

                                                          ", "content": [{"c": "Translate and simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(14\\) and \\(\u221223\\)
                                                          2. subtract \\(21\\) from \\(\u221217\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(14\\) and \\(\u221223\\)", "t": "text"}]], [[{"c": "subtract \\(21\\) from \\(\u221217\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \\(-17 - 21; -38\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(14 - (-23); 37\\)", "t": "text"}, {"c": "\\(-17 - 21; -38\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify

                                                          ", "content": [{"c": "Translate and simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(11\\) and \\(\u221219\\)
                                                          2. subtract \\(18\\) from \\(\u221211\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(11\\) and \\(\u221219\\)", "t": "text"}]], [[{"c": "subtract \\(18\\) from \\(\u221211\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \\(-11 - 18; -29\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(11 - (-19); 30\\)", "t": "text"}, {"c": "\\(-11 - 18; -29\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201cproduct\u201d and for division is \u201cquotient.\u201d

                                                          ", "content": [{"c": "Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201c product \u201d and for division is \u201c quotient.\u201d", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(\u22122\\) and \\(14\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of \\(\u22122\\) and \\(14\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(\u22125\\) and \\(12\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of \\(\u22125\\) and \\(12\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -5(12); -60
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-5(12); -60", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -8(13); -104
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-8(13); -104", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221256\\) and \\(\u22127\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221256\\) and \\(\u22127\\).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "

                                                          \\[\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\\]

                                                          ", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221263\\) and \\(\u22129\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221263\\) and \\(\u22129\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -63\\div (-9); 7
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-63\\div (-9); 7", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221272\\) and \\(\u22129\\).

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221272\\) and \\(\u22129\\).", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer
                                                          -72\\div (-9); 8
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-72\\div (-9); 8", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Use Integers in Applications

                                                          ", "content": {"title_content": "Use Integers in Applications", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          ", "content": [{"c": "We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          ", "content": [{"c": "How to Apply a Strategy to Solve Applications with Integers", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(\u22129\\) degrees. What was the difference of the morning and afternoon temperatures?

                                                          ", "content": [{"c": "The temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(\u22129\\) degrees. What was the difference of the morning and afternoon temperatures?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.
                                                          ", "content": {"html": "
                                                          Step 1<br>. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2<br>. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3<br>. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4.<br>Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5<br>. Simplify the expression.\\(20\\)
                                                          Step 6<br>. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.
                                                          ", "is_complex": false}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          ", "content": [{"c": "The temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The difference in temperatures was \\(45\\) degrees.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The difference in temperatures was \\(45\\) degrees.", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Denver was \\(\u22126\\) degrees at lunchtime. By sunset the temperature had dropped to \\(\u221215\\) degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          ", "content": [{"c": "The temperature in Denver was \\(\u22126\\) degrees at lunchtime. By sunset the temperature had dropped to \\(\u221215\\) degrees. What was the difference in the lunchtime and sunset temperatures?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The difference in temperatures was \\(9\\) degrees.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The difference in temperatures was \\(9\\) degrees.", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. Identify what we are asked to find.
                                                          3. Write a phrase that gives the information to find it.
                                                          4. Translate the phrase to an expression.
                                                          5. Simplify the expression.
                                                          6. Answer the question with a complete sentence.
                                                          ", "content": {"items": [[[{"c": "Read the problem. Make sure all the words and ideas are understood", "t": "text"}]], [[{"c": "Identify what we are asked to find.", "t": "text"}]], [[{"c": "Write a phrase that gives the information to find it.", "t": "text"}]], [[{"c": "Translate the phrase to an expression.", "t": "text"}]], [[{"c": "Simplify the expression.", "t": "text"}]], [[{"c": "Answer the question with a complete sentence.", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          ", "content": [{"c": "The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.
                                                          ", "content": {"html": "
                                                          Step 1<br>. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2<br>. Identify what we are asked to find.the number of yards lost
                                                          Step 3<br>. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4.<br>Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5<br>. Simplify the expression.\\(-45\\)
                                                          Step 6<br>. Write a complete sentence that answers the question.The team lost \\(45\\) yards.
                                                          ", "is_complex": false}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?

                                                          ", "content": [{"c": "The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The Bears lost \\(105\\) yards.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The Bears lost \\(105\\) yards.", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "
                                                          ", "content": {"title_content": null, "level": "5"}}, {"type": "paragraph", "raw_content": "

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          ", "content": [{"c": "Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          A $16 fee was deducted from his checking account.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "A $16 fee was deducted from his checking account.", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Key Concepts

                                                          ", "content": {"title_content": "Key Concepts", "level": "2"}}, {"type": "list", "raw_content": "
                                                          • Multiplication and Division of Two Signed Numbers
                                                            • Same signs\u2014Product is positive
                                                            • Different signs\u2014Product is negative
                                                          • Strategy for Applications
                                                            1. Identify what you are asked to find.
                                                            2. Write a phrase that gives the information to find it.
                                                            3. Translate the phrase to an expression.
                                                            4. Simplify the expression.
                                                            5. Answer the question with a complete sentence.
                                                          ", "content": {"items": [[[{"c": "Multiplication and Division of Two Signed Numbers", "t": "text"}, {"c": "Same signs\u2014Product is positive", "t": "text"}, {"c": "Different signs\u2014Product is negative", "t": "text"}]], [[{"c": "Strategy for Applications", "t": "text"}, {"c": "Identify what you are asked to find.", "t": "text"}, {"c": "Write a phrase that gives the information to find it.", "t": "text"}, {"c": "Translate the phrase to an expression.", "t": "text"}, {"c": "Simplify the expression.", "t": "text"}, {"c": "Answer the question with a complete sentence.", "t": "text"}]]], "ordered": false}}]], "main_html": "

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          Page ID
                                                          30345
                                                        • \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}} \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|} \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\kernel}{\\mathrm{null}\\,} \\newcommand{\\range}{\\mathrm{range}\\,} \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}} \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|} \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle} \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}} \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0 \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0 \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0 \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0 \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} \\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                        • By the end of this section, you will be able to:

                                                          • Multiply integers
                                                          • Divide integers
                                                          • Simplify expressions with integers
                                                          • Evaluate variable expressions with integers
                                                          • Translate English phrases to algebraic expressions
                                                          • Use integers in applications

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          Multiply Integers

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          We remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.

                                                          \"Two
                                                          Figure \\(\\PageIndex{1}\\)

                                                          The next two examples are more interesting.

                                                          What does it mean to multiply \\(5\\) by \\(\u22123\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as \u201ctaking away,\u201d it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.

                                                          \"This
                                                          Figure \\(\\PageIndex{2}\\)

                                                          In summary:

                                                          \\[\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\\]

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          • signs are the same, the product is positive.
                                                          • signs are different, the product is negative.

                                                          We\u2019ll put this all together in the chart below.

                                                          For multiplication of two signed numbers:

                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)

                                                          Multiply:

                                                          1. \\(-9\\cdot 3\\)
                                                          2. \\(-2(-5)\\)
                                                          3. \\(4(-8)\\)
                                                          4. \\(7\\cdot 6\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]

                                                          Multiply:

                                                          1. \\(-6\\cdot 8\\)
                                                          2. \\(-4(-7)\\)
                                                          3. \\(9(-7)\\)
                                                          4. \\(5\\cdot 12\\)
                                                          Answer
                                                          1. \\(-48\\)
                                                          2. \\(28\\)
                                                          3. \\(-63\\)
                                                          4. \\(60\\)

                                                          Multiply:

                                                          1. \\(-8\\cdot 7\\)
                                                          2. \\(-6(-9)\\)
                                                          3. \\(7(-4)\\)
                                                          4. \\(3\\cdot 13\\)
                                                          Answer
                                                          1. \\(-56\\)
                                                          2. \\(54\\)
                                                          3. \\(-28\\)
                                                          4. \\(39\\)

                                                          When we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(\u22121\\)? Let\u2019s multiply a positive number and then a negative number by \\(\u22121\\) to see what we get.

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(\u22121\\), we get its opposite!

                                                          MULTIPLICATION BY \u22121

                                                          \\[\u22121a=\u2212a\\]

                                                          Multiplying a number by \\(\u22121\\) gives its opposite.

                                                          Multiply:

                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \\(-1(-11)\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]

                                                          Multiply:

                                                          1. \\(-1\\cdot 9\\)
                                                          2. \\(-1\\cdot(-17)\\)
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(17\\)

                                                          Multiply:

                                                          1. \\(-1\\cdot 8\\)
                                                          2. \\(-1\\cdot(-16)\\)
                                                          Answer
                                                          1. \\(-8\\)
                                                          2. \\(16\\)

                                                          Divide Integers

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          \\[\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\\]

                                                          Division follows the same rules as multiplication!

                                                          For division of two signed numbers, when the:

                                                          • signs are the same, the quotient is positive.
                                                          • signs are different, the quotient is negative.

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          For multiplication and division of two signed numbers:

                                                          • If the signs are the same, the result is positive.
                                                          • If the signs are different, the result is negative.
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          1. \\(-27\\div 3\\)
                                                          2. \\(-100\\div (-4)\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]

                                                          Divide:

                                                          1. \\(-42\\div 6\\)
                                                          2. \\(-117\\div (-3)\\)
                                                          Answer
                                                          1. \\(-7\\)
                                                          2. \\(39\\)

                                                          Divide:

                                                          1. \\(-63\\div 7\\)
                                                          2. \\(-115\\div (-5)\\)
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(23\\)

                                                          Simplify Expressions with Integers

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          Simplify:

                                                          7(-2)+4(-7)-6

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\\]

                                                          Simplify:

                                                          8(-3)+5(-7)-4
                                                          Answer
                                                          -63

                                                          Simplify:

                                                          9(-3)+7(-8)-1
                                                          Answer
                                                          -84

                                                          Simplify:

                                                          1. \\((-2)^{4}\\)
                                                          2. \\(-2^{4}\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((\u22122)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.

                                                          Simplify:

                                                          1. \\((-3)^{4}\\)
                                                          2. \\(-3^{4}\\)
                                                          Answer
                                                          1. \\(81\\)
                                                          2. \\(-81\\)

                                                          Simplify:

                                                          1. \\((-7)^{2}\\)
                                                          2. \\(-7^{2}\\)
                                                          Answer
                                                          1. \\(49\\)
                                                          2. \\(-49\\)

                                                          The next example reminds us to simplify inside parentheses first.

                                                          Simplify:

                                                          12-3(9 - 12)

                                                          Solution

                                                          \\[\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\\]

                                                          Simplify:

                                                          17 - 4(8 - 11)
                                                          Answer
                                                          29

                                                          Simplify:

                                                          16 - 6(7 - 13)
                                                          Answer
                                                          52

                                                          Simplify:

                                                          8(-9)\\div (-2)^{3}

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\\]

                                                          Simplify:

                                                          12(-9)\\div (-3)^{3}
                                                          Answer
                                                          4

                                                          Simplify:

                                                          18(-4)\\div (-2)^{3}
                                                          Answer
                                                          9

                                                          Simplify:

                                                          -30\\div 2 + (-3)(-7)

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\\]

                                                          Simplify:

                                                          -27\\div 3 + (-5)(-6)
                                                          Answer
                                                          21

                                                          Simplify:

                                                          -32\\div 4 + (-2)(-7)
                                                          Answer
                                                          6

                                                          Evaluate Variable Expressions with Integers

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          When \\(n=\u22125\\), evaluate:

                                                          1. \\(n+1\\)
                                                          2. \\(\u2212n+1\\).

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]

                                                          When \\(n=\u22128\\), evaluate:

                                                          1. \\(n+2\\)
                                                          2. \\(\u2212n+2\\).
                                                          Answer
                                                          1. \\(-6\\)
                                                          2. \\(10\\)

                                                          When \\(y=\u22129\\), evaluate:

                                                          1. \\(y+8\\)
                                                          2. \\(\u2212y+8\\).
                                                          Answer
                                                          1. \\(-1\\)
                                                          2. \\(17\\)

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\\]

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).

                                                          Answer
                                                          196

                                                          Evaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).

                                                          Answer
                                                          8

                                                          Evaluate \\(20 -z \\) when

                                                          1. \\(z = 12\\)
                                                          2. \\(z = -12\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]

                                                          Evaluate \\(17 - k\\) when

                                                          1. \\(k = 19\\)
                                                          2. \\(k = -19\\)
                                                          Answer
                                                          1. \\(-2\\)
                                                          2. \\(36\\)

                                                          Evaluate \\(-5 - b\\) when

                                                          1. \\(b = 14\\)
                                                          2. \\(b = -14\\)
                                                          Answer
                                                          1. \\(-19\\)
                                                          2. \\(9\\)

                                                          Evaluate:

                                                          \\(2x^{2} + 3x + 8\\) when \\(x = 4\\).

                                                          Solution

                                                          Substitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.

                                                          \\[\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\\]

                                                          Evaluate:

                                                          \\(3x^{2} - 2x + 6\\) when \\(x =-3\\).

                                                          Answer
                                                          39

                                                          Evaluate:

                                                          \\(4x^{2} - x - 5\\) when \\(x = -2\\).

                                                          Answer
                                                          13

                                                          Translate Phrases to Expressions with Integers

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          Translate and simplify: the sum of \\(8\\) and \\(\u221212\\), increased by \\(3\\).

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\\]

                                                          Translate and simplify: the sum of \\(9\\) and \\(\u221216\\), increased by \\(4\\).

                                                          Answer
                                                          (9 + (-16)) + 4 - 3

                                                          Translate and simplify: the sum of \\(-8\\) and \\(\u221212\\), increased by \\(7\\).

                                                          Answer
                                                          (-8 + (-12)) + 7 - 13

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)

                                                          Be careful to get a and b in the right order!

                                                          Translate and then simplify

                                                          1. the difference of \\(13\\) and \\(\u221221\\)
                                                          2. subtract \\(24\\) from \\(\u221219\\).

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]

                                                          Translate and simplify

                                                          1. the difference of \\(14\\) and \\(\u221223\\)
                                                          2. subtract \\(21\\) from \\(\u221217\\).
                                                          Answer
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \\(-17 - 21; -38\\)

                                                          Translate and simplify

                                                          1. the difference of \\(11\\) and \\(\u221219\\)
                                                          2. subtract \\(18\\) from \\(\u221211\\).
                                                          Answer
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \\(-11 - 18; -29\\)

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201cproduct\u201d and for division is \u201cquotient.\u201d

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(\u22122\\) and \\(14\\).

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\\]

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(\u22125\\) and \\(12\\).

                                                          Answer
                                                          -5(12); -60

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).

                                                          Answer
                                                          -8(13); -104

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221256\\) and \\(\u22127\\).

                                                          Solution

                                                          \\[\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\\]

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221263\\) and \\(\u22129\\).

                                                          Answer
                                                          -63\\div (-9); 7

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(\u221272\\) and \\(\u22129\\).

                                                          Answer
                                                          -72\\div (-9); 8

                                                          Use Integers in Applications

                                                          We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          The temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(\u22129\\) degrees. What was the difference of the morning and afternoon temperatures?

                                                          Solution

                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.

                                                          The temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          Answer

                                                          The difference in temperatures was \\(45\\) degrees.

                                                          The temperature in Denver was \\(\u22126\\) degrees at lunchtime. By sunset the temperature had dropped to \\(\u221215\\) degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          Answer

                                                          The difference in temperatures was \\(9\\) degrees.

                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. Identify what we are asked to find.
                                                          3. Write a phrase that gives the information to find it.
                                                          4. Translate the phrase to an expression.
                                                          5. Simplify the expression.
                                                          6. Answer the question with a complete sentence.

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          Solution

                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?

                                                          Answer

                                                          The Bears lost \\(105\\) yards.

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          Answer

                                                          A $16 fee was deducted from his checking account.

                                                          Key Concepts

                                                          • Multiplication and Division of Two Signed Numbers
                                                            • Same signs\u2014Product is positive
                                                            • Different signs\u2014Product is negative
                                                          • Strategy for Applications
                                                            1. Identify what you are asked to find.
                                                            2. Write a phrase that gives the information to find it.
                                                            3. Translate the phrase to an expression.
                                                            4. Simplify the expression.
                                                            5. Answer the question with a complete sentence.
                                                          ", "statics": {"title": 65, "list": 72, "list.text": 182, "paragraph": 118, "paragraph.equation-inline": 38, "paragraph.text": 107, "image": 2, "equation-interline": 12, "table": 7, "list.equation-inline": 18}, "url": "https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers", "content": "# 1.5: Multiply and Divide Integers\n\n1. Last updated\n\n1. Page ID\n2. 30345\n\n$\\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}$ $\\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}$ ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\) $\\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}$ $\\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|}$ $\\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}$ $\\newcommand{\\Span}{\\mathrm{span}}$ $\\newcommand{\\id}{\\mathrm{id}}$ $\\newcommand{\\Span}{\\mathrm{span}}$ $\\newcommand{\\kernel}{\\mathrm{null}\\,}$ $\\newcommand{\\range}{\\mathrm{range}\\,}$ $\\newcommand{\\RealPart}{\\mathrm{Re}}$ $\\newcommand{\\ImaginaryPart}{\\mathrm{Im}}$ $\\newcommand{\\Argument}{\\mathrm{Arg}}$ $\\newcommand{\\norm}[1]{\\| #1 \\|}$ $\\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}$ $\\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}$ $\\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow$ $\\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow$ $\\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vectorC}[1]{\\textbf{#1}}$ $\\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}$ $\\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}$ $\\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}}$ $\\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}$ \\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\\\ \\#5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\\\ \\#5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}\\#1 \\amp \\#2 \\\\ \\#3 \\amp \\#4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{\\#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{\\#1\\right\\}_{\\#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{\\#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{\\#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|\\#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)\n\nBy the end of this section, you will be able to:\n\n- Multiply integers\n- Divide integers\n- Simplify expressions with integers\n- Evaluate variable expressions with integers\n- Translate English phrases to algebraic expressions\n- Use integers in applications\n\nA more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.\n\n## Multiply Integers\n\nSince multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.\n\nWe remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.\n\nThe next two examples are more interesting.\n\nWhat does it mean to multiply \\(5\\) by \\(\u22123\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as \u201ctaking away,\u201d it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.\n\nIn summary:\n\n$$\n\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\n$$\n\nNotice that for multiplication of two signed numbers, when the:\n\n- signs are the same , the product is positive .\n- signs are different , the product is negative .\n\nWe\u2019ll put this all together in the chart below.\n\nFor multiplication of two signed numbers:\n\n| Same signs | Product | Example |\n|---|---|---|\n| Two positives | Positive | \\(7\\cdot 4 = 28\\) |\n| Two negatives | Positive | \\(-8(-6) = 48\\) |\n\n| Different signs | Product | Example |\n|---|---|---|\n| Positives \\(\\cdot\\) negative | Negative | \\(7(-9) = -63\\) |\n| Negative \\(\\cdot\\) positives | Negative | \\(-5\\cdot 10= -50\\) |\n\nMultiply:\n\n1. \\(-9\\cdot 3\\)\n2. \\(-2(-5)\\)\n3. \\(4(-8)\\)\n4. \\(7\\cdot 6\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]\n3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]\n4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]\n\nMultiply:\n\n1. \\(-6\\cdot 8\\)\n2. \\(-4(-7)\\)\n3. \\(9(-7)\\)\n4. \\(5\\cdot 12\\)\n\n1. Answer\n2. \\(-48\\) \\(28\\) \\(-63\\) \\(60\\)\n\nMultiply:\n\n1. \\(-8\\cdot 7\\)\n2. \\(-6(-9)\\)\n3. \\(7(-4)\\)\n4. \\(3\\cdot 13\\)\n\n1. Answer\n2. \\(-56\\) \\(54\\) \\(-28\\) \\(39\\)\n\nWhen we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(\u22121\\)? Let\u2019s multiply a positive number and then a negative number by \\(\u22121\\) to see what we get.\n\n\\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\] Each time we multiply a number by \\(\u22121\\), we get its opposite!\n\nMULTIPLICATION BY \u22121\n\n$$\n\u22121a=\u2212a\n$$\n\nMultiplying a number by \\(\u22121\\) gives its opposite.\n\nMultiply:\n\n1. \\(-1 \\cdot 7\\)\n2. \\(-1(-11)\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]\n\nMultiply:\n\n1. \\(-1\\cdot 9\\)\n2. \\(-1\\cdot(-17)\\)\n\n1. Answer\n2. \\(-9\\) \\(17\\)\n\nMultiply:\n\n1. \\(-1\\cdot 8\\)\n2. \\(-1\\cdot(-16)\\)\n\n1. Answer\n2. \\(-8\\) \\(16\\)\n\n## Divide Integers\n\nWhat about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.\n\n$$\n\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\n$$\n\nDivision follows the same rules as multiplication!\n\nFor division of two signed numbers, when the:\n\n- signs are the same , the quotient is positive .\n- signs are different , the quotient is negative .\n\nAnd remember that we can always check the answer of a division problem by multiplying.\n\nFor multiplication and division of two signed numbers:\n\n- If the signs are the same, the result is positive.\n- If the signs are different, the result is negative.\n\n| Same signs | Result |\n|---|---|\n| Two positives | Positive |\n| Two negatives | Positive |\n| If the signs are the same, the result is positive. | |\n\n| Different signs | Result |\n|---|---|\n| Positive and negative | Negative |\n| Negative and positive | Negative |\n| If the signs are different, the result is negative. | |\n\n1. \\(-27\\div 3\\)\n2. \\(-100\\div (-4)\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]\n\nDivide:\n\n1. \\(-42\\div 6\\)\n2. \\(-117\\div (-3)\\)\n\n1. Answer\n2. \\(-7\\) \\(39\\)\n\nDivide:\n\n1. \\(-63\\div 7\\)\n2. \\(-115\\div (-5)\\)\n\n1. Answer\n2. \\(-9\\) \\(23\\)\n\n## Simplify Expressions with Integers\n\nWhat happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?\n\nLet\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.\n\nSimplify:\n\n$7(-2)+4(-7)-6$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\n$$\n\nSimplify:\n\n$8(-3)+5(-7)-4$\n\n1. Answer\n2. $-63$\n\nSimplify:\n\n$9(-3)+7(-8)-1$\n\n1. Answer\n2. $-84$\n\nSimplify:\n\n1. \\((-2)^{4}\\)\n2. \\(-2^{4}\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]\n\nNotice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((\u22122)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.\n\nSimplify:\n\n1. \\((-3)^{4}\\)\n2. \\(-3^{4}\\)\n\n1. Answer\n2. \\(81\\) \\(-81\\)\n\nSimplify:\n\n1. \\((-7)^{2}\\)\n2. \\(-7^{2}\\)\n\n1. Answer\n2. \\(49\\) \\(-49\\)\n\nThe next example reminds us to simplify inside parentheses first.\n\nSimplify:\n\n$12-3(9 - 12)$\n\nSolution\n\n$$\n\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\n$$\n\nSimplify:\n\n$17 - 4(8 - 11)$\n\n1. Answer\n2. $29$\n\nSimplify:\n\n$16 - 6(7 - 13)$\n\n1. Answer\n2. $52$\n\nSimplify:\n\n$8(-9)\\div (-2)^{3}$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\n$$\n\nSimplify:\n\n$12(-9)\\div (-3)^{3}$\n\n1. Answer\n2. $4$\n\nSimplify:\n\n$18(-4)\\div (-2)^{3}$\n\n1. Answer\n2. $9$\n\nSimplify:\n\n$-30\\div 2 + (-3)(-7)$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\n$$\n\nSimplify:\n\n$-27\\div 3 + (-5)(-6)$\n\n1. Answer\n2. $21$\n\nSimplify:\n\n$-32\\div 4 + (-2)(-7)$\n\n1. Answer\n2. $6$\n\n## Evaluate Variable Expressions with Integers\n\nRemember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.\n\nWhen \\(n=\u22125\\), evaluate:\n\n1. \\(n+1\\)\n2. \\(\u2212n+1\\).\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]\n\nWhen \\(n=\u22128\\), evaluate:\n\n1. \\(n+2\\)\n2. \\(\u2212n+2\\).\n\n1. Answer\n2. \\(-6\\) \\(10\\)\n\nWhen \\(y=\u22129\\), evaluate:\n\n1. \\(y+8\\)\n2. \\(\u2212y+8\\).\n\n1. Answer\n2. \\(-1\\) \\(17\\)\n\nEvaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\n$$\n\nEvaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).\n\n1. Answer\n2. $196$\n\nEvaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).\n\n1. Answer\n2. $8$\n\nEvaluate \\(20 -z \\) when\n\n1. \\(z = 12\\)\n2. \\(z = -12\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]\n\nEvaluate \\(17 - k\\) when\n\n1. \\(k = 19\\)\n2. \\(k = -19\\)\n\n1. Answer\n2. \\(-2\\) \\(36\\)\n\nEvaluate \\(-5 - b\\) when\n\n1. \\(b = 14\\)\n2. \\(b = -14\\)\n\n1. Answer\n2. \\(-19\\) \\(9\\)\n\nEvaluate:\n\n\\(2x^{2} + 3x + 8\\) when \\(x = 4\\).\n\nSolution\n\nSubstitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.\n\n$$\n\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\n$$\n\nEvaluate:\n\n\\(3x^{2} - 2x + 6\\) when \\(x =-3\\).\n\n1. Answer\n2. $39$\n\nEvaluate:\n\n\\(4x^{2} - x - 5\\) when \\(x = -2\\).\n\n1. Answer\n2. $13$\n\n## Translate Phrases to Expressions with Integers\n\nOur earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.\n\nTranslate and simplify: the sum of \\(8\\) and \\(\u221212\\), increased by \\(3\\).\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\n$$\n\nTranslate and simplify: the sum of \\(9\\) and \\(\u221216\\), increased by \\(4\\).\n\n1. Answer\n2. $(9 + (-16)) + 4 - 3$\n\nTranslate and simplify: the sum of \\(-8\\) and \\(\u221212\\), increased by \\(7\\).\n\n1. Answer\n2. $(-8 + (-12)) + 7 - 13$\n\nWhen we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.\n\n| \\(a\u2212b\\) |\n|---|\n| \\(a\\) minus \\(b\\)
                                                          the difference of \\(a\\) and \\(b\\)
                                                          \\(b\\) subtracted from \\(a\\)
                                                          \\(b\\) less than \\(a\\) |\n\nBe careful to get a and b in the right order!\n\nTranslate and then simplify\n\n1. the difference of \\(13\\) and \\(\u221221\\)\n2. subtract \\(24\\) from \\(\u221219\\).\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]\n\nTranslate and simplify\n\n1. the difference of \\(14\\) and \\(\u221223\\)\n2. subtract \\(21\\) from \\(\u221217\\).\n\n1. Answer\n2. \\(14 - (-23); 37\\) \\(-17 - 21; -38\\)\n\nTranslate and simplify\n\n1. the difference of \\(11\\) and \\(\u221219\\)\n2. subtract \\(18\\) from \\(\u221211\\).\n\n1. Answer\n2. \\(11 - (-19); 30\\) \\(-11 - 18; -29\\)\n\nOnce again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201c product \u201d and for division is \u201c quotient.\u201d\n\nTranslate to an algebraic expression and simplify if possible: the product of \\(\u22122\\) and \\(14\\).\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\n$$\n\nTranslate to an algebraic expression and simplify if possible: the product of \\(\u22125\\) and \\(12\\).\n\n1. Answer\n2. $-5(12); -60$\n\nTranslate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).\n\n1. Answer\n2. $-8(13); -104$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of \\(\u221256\\) and \\(\u22127\\).\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\n$$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of \\(\u221263\\) and \\(\u22129\\).\n\n1. Answer\n2. $-63\\div (-9); 7$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of \\(\u221272\\) and \\(\u22129\\).\n\n1. Answer\n2. $-72\\div (-9); 8$\n\n## Use Integers in Applications\n\nWe\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.\n\nHow to Apply a Strategy to Solve Applications with Integers\n\nThe temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(\u22129\\) degrees. What was the difference of the morning and afternoon temperatures?\n\nSolution\n\n| Step 1
                                                          . Read the problem. Make sure all the words and ideas are understood. | |\n|---|---|\n| Step 2
                                                          . Identify what we are asked to find. | the difference of the morning and afternoon temperatures |\n| Step 3
                                                          . Write a phrase that gives the information to find it. | the difference of \\(11\\) and \\(-9\\) |\n| Step 4.
                                                          Translate the phrase to an expression. | \\(11 - (-9)\\) |\n| Step 5
                                                          . Simplify the expression. | \\(20\\) |\n| Step 6
                                                          . Write a complete sentence that answers the question. | The difference in temperatures was 20 degrees. |\n\nThe temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?\n\n1. Answer\n2. The difference in temperatures was \\(45\\) degrees.\n\nThe temperature in Denver was \\(\u22126\\) degrees at lunchtime. By sunset the temperature had dropped to \\(\u221215\\) degrees. What was the difference in the lunchtime and sunset temperatures?\n\n1. Answer\n2. The difference in temperatures was \\(9\\) degrees.\n\n1. Read the problem. Make sure all the words and ideas are understood\n2. Identify what we are asked to find.\n3. Write a phrase that gives the information to find it.\n4. Translate the phrase to an expression.\n5. Simplify the expression.\n6. Answer the question with a complete sentence.\n\nThe Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?\n\nSolution\n\n| Step 1
                                                          . Read the problem. Make sure all the words and ideas are understood. | |\n|---|---|\n| Step 2
                                                          . Identify what we are asked to find. | the number of yards lost |\n| Step 3
                                                          . Write a phrase that gives the information to find it. | three times a \\(15\\)-yard penalty |\n| Step 4.
                                                          Translate the phrase to an expression. | \\(3(-15)\\) |\n| Step 5
                                                          . Simplify the expression. | \\(-45\\) |\n| Step 6
                                                          . Write a complete sentence that answers the question. | The team lost \\(45\\) yards. |\n\nThe Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?\n\n1. Answer\n2. The Bears lost \\(105\\) yards.\n\nBill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?\n\n1. Answer\n2. A $16 fee was deducted from his checking account.\n\n## Key Concepts\n\n- Multiplication and Division of Two Signed Numbers Same signs\u2014Product is positive Different signs\u2014Product is negative\n- Strategy for Applications Identify what you are asked to find. Write a phrase that gives the information to find it. Translate the phrase to an expression. Simplify the expression. Answer the question with a complete sentence.\n", "html": "\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n 1.5: Multiply and Divide Integers - Mathematics LibreTexts\n\n\n \n\n \n\n\n \n\n\n \n \n\n\n \n\n\n\n\n\n\nSkip to main content
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \"Library
                                                          \n
                                                          \n\n
                                                           
                                                          \n\n
                                                          \n
                                                          \n\n\n\n
                                                          \n

                                                          Search

                                                          \n\n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n\n
                                                           
                                                          \n
                                                          \n\n
                                                          \n

                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Text Color

                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Text Size

                                                          \n
                                                          \n\n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Margin Size

                                                          \n
                                                          \n\n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Font Type

                                                          \n
                                                          \n\n
                                                          Enable Dyslexic Font
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n\n\n\n
                                                          \n
                                                          \n
                                                          \n

                                                           

                                                          \nx
                                                          \n\n
                                                          \n

                                                          selected template will load here

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n

                                                          Error

                                                          \n
                                                          \n\n
                                                          \n

                                                          This action is not available.

                                                          \n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n\n\n\n
                                                          \n\n
                                                          \n\n
                                                          \n\n\n\n\n\n
                                                          1: Foundations
                                                          MTH 098 Elementary Algebra
                                                          { "1.5E:_Exercises" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          { "1.10:_Properties_of_Real_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.11:_Systems_of_Measurement" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.1:_Prelude_to_Foundations_of_Algebra" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.2:_Introduction_to_Whole_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.3:_Use_the_Language_of_Algebra" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.4:_Add_and_Subtract_Integers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.5:_Multiply_and_Divide_Integers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.6:_Visualize_Fractions" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.7:_Add_and_Subtract_Fractions" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.8:_Decimals" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.9:_The_Real_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", Chapter_1_Review_Exercises : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          { "1:_Foundations" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "2:_Solving_Linear_Equations_and_Inequalities" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "3:_Math_Models" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "4:_Graphs" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "5:_Systems_of_Linear_Equations" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "6:_Polynomials" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "7:_Factoring" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          Mon, 06 Jan 2020 03:19:01 GMT
                                                          1.5: Multiply and Divide Integers
                                                          30345
                                                          30345
                                                          Paul Seeburger
                                                          { }
                                                          Anonymous
                                                          Anonymous
                                                          2
                                                          false
                                                          false
                                                          [ "article:topic", "license:ccby", "showtoc:no", "transcluded:yes", "source[1]-math-15120" ]
                                                          [ "article:topic", "license:ccby", "showtoc:no", "transcluded:yes", "source[1]-math-15120" ]
                                                          https://math.libretexts.org/@app/auth/3/login?returnto=https%3A%2F%2Fmath.libretexts.org%2FUnder_Construction%2FPurgatory%2FRemixer_University%2FUsername%253A_pseeburger%2FMTH_098_Elementary_Algebra%2F1%253A_Foundations%2F1.5%253A_Multiply_and_Divide_Integers
                                                          \n\n\n\n\n\n\n\n\n\n\n\n
                                                          \n \n
                                                          \n \"Mathematics\n
                                                          \n\n \n \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n\n

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          \n\n\n\n\n \n\n\n
                                                          \n
                                                          \n\n\n\n\n\n
                                                        • Page ID
                                                          30345
                                                        • \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                          \n

                                                          \\( \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash {#1}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\id}{\\mathrm{id}}\\) \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\RealPart}{\\mathrm{Re}}\\) \\( \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Argument}{\\mathrm{Arg}}\\) \\( \\newcommand{\\norm}[1]{\\| #1 \\|}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\id}{\\mathrm{id}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\RealPart}{\\mathrm{Re}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Argument}{\\mathrm{Arg}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\norm}[1]{\\| #1 \\|}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\) \\( \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorA}[1]{\\vec{#1}}      % arrow\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}      % arrow\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorC}[1]{\\textbf{#1}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash {#1}}} \\)

                                                          \n\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                          \n
                                                          \n \n \n
                                                          \n
                                                          \n\t\t\t\t
                                                          \n
                                                          Learning Objectives
                                                          \n\n

                                                          By the end of this section, you will be able to:

                                                          \n\n
                                                            \n
                                                          • Multiply integers
                                                          • \n
                                                          • Divide integers
                                                          • \n
                                                          • Simplify expressions with integers
                                                          • \n
                                                          • Evaluate variable expressions with integers
                                                          • \n
                                                          • Translate English phrases to algebraic expressions
                                                          • \n
                                                          • Use integers in applications
                                                          • \n
                                                          \n
                                                          \n\n

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          \n\n

                                                          Multiply Integers

                                                          \n\n

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let’s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          \n\n

                                                          We remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.

                                                          \n\n
                                                          \"Two\n
                                                          Figure \\(\\PageIndex{1}\\)
                                                          \n
                                                          \n\n

                                                          The next two examples are more interesting.

                                                          \n\n

                                                          What does it mean to multiply \\(5\\) by \\(−3\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as “taking away,” it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.

                                                          \n\n
                                                          \"This\n
                                                          Figure \\(\\PageIndex{2}\\)
                                                          \n
                                                          \n\n

                                                          In summary:

                                                          \n\n

                                                          \\[\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\\]

                                                          \n\n

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          \n\n
                                                            \n
                                                          • signs are the same, the product is positive.
                                                          • \n
                                                          • signs are different, the product is negative.
                                                          • \n
                                                          \n\n

                                                          We’ll put this all together in the chart below.

                                                          \n\n
                                                          \n
                                                          MULTIPLICATION OF SIGNED NUMBERS
                                                          \n\n

                                                          For multiplication of two signed numbers:

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{1}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-9\\cdot 3\\)
                                                          2. \n
                                                          3. \\(-2(-5)\\)
                                                          4. \n
                                                          5. \\(4(-8)\\)
                                                          6. \n
                                                          7. \\(7\\cdot 6\\)
                                                          8. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          4. \n
                                                          5. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          6. \n
                                                          7. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]
                                                          8. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{2}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-6\\cdot 8\\)
                                                          2. \n
                                                          3. \\(-4(-7)\\)
                                                          4. \n
                                                          5. \\(9(-7)\\)
                                                          6. \n
                                                          7. \\(5\\cdot 12\\)
                                                          8. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-48\\)
                                                          2. \n
                                                          3. \\(28\\)
                                                          4. \n
                                                          5. \\(-63\\)
                                                          6. \n
                                                          7. \\(60\\)
                                                          8. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{3}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-8\\cdot 7\\)
                                                          2. \n
                                                          3. \\(-6(-9)\\)
                                                          4. \n
                                                          5. \\(7(-4)\\)
                                                          6. \n
                                                          7. \\(3\\cdot 13\\)
                                                          8. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-56\\)
                                                          2. \n
                                                          3. \\(54\\)
                                                          4. \n
                                                          5. \\(-28\\)
                                                          6. \n
                                                          7. \\(39\\)
                                                          8. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          When we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(−1\\)? Let’s multiply a positive number and then a negative number by \\(−1\\) to see what we get.

                                                          \n\n

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(−1\\), we get its opposite!

                                                          \n\n
                                                          \n
                                                           
                                                          \n\n

                                                          MULTIPLICATION BY −1

                                                          \n\n

                                                          \\[−1a=−a\\]

                                                          \n\n

                                                          Multiplying a number by \\(−1\\) gives its opposite.

                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{4}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \n
                                                          3. \\(-1(-11)\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{5}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1\\cdot 9\\)
                                                          2. \n
                                                          3. \\(-1\\cdot(-17)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-9\\)
                                                          2. \n
                                                          3. \\(17\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{6}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1\\cdot 8\\)
                                                          2. \n
                                                          3. \\(-1\\cdot(-16)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-8\\)
                                                          2. \n
                                                          3. \\(16\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Divide Integers

                                                          \n\n

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          \n\n

                                                          \\[\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\\]

                                                          \n\n

                                                          Division follows the same rules as multiplication!

                                                          \n\n

                                                          For division of two signed numbers, when the:

                                                          \n\n
                                                            \n
                                                          • signs are the same, the quotient is positive.
                                                          • \n
                                                          • signs are different, the quotient is negative.
                                                          • \n
                                                          \n\n

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          \n\n
                                                          \n
                                                          MULTIPLICATION AND DIVISION OF SIGNED NUMBERS
                                                          \n\n

                                                          For multiplication and division of two signed numbers:

                                                          \n\n
                                                            \n
                                                          • If the signs are the same, the result is positive.
                                                          • \n
                                                          • If the signs are different, the result is negative.
                                                          • \n
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{7}\\)
                                                          \n\n
                                                            \n
                                                          1. \\(-27\\div 3\\)
                                                          2. \n
                                                          3. \\(-100\\div (-4)\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{8}\\)
                                                          \n\n

                                                          Divide:

                                                          \n\n
                                                            \n
                                                          1. \\(-42\\div 6\\)
                                                          2. \n
                                                          3. \\(-117\\div (-3)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-7\\)
                                                          2. \n
                                                          3. \\(39\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{9}\\)
                                                          \n\n

                                                          Divide:

                                                          \n\n
                                                            \n
                                                          1. \\(-63\\div 7\\)
                                                          2. \n
                                                          3. \\(-115\\div (-5)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-9\\)
                                                          2. \n
                                                          3. \\(23\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Simplify Expressions with Integers

                                                          \n\n

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          \n\n

                                                          Let’s try some examples. We’ll simplify expressions that use all four operations with integers—addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{10}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(7(-2)+4(-7)-6\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{11}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(8(-3)+5(-7)-4\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-63\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{12}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(9(-3)+7(-8)-1\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-84\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{13}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-2)^{4}\\)
                                                          2. \n
                                                          3. \\(-2^{4}\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]
                                                          4. \n
                                                          \n\n

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((−2)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{14}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-3)^{4}\\)
                                                          2. \n
                                                          3. \\(-3^{4}\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(81\\)
                                                          2. \n
                                                          3. \\(-81\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{15}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-7)^{2}\\)
                                                          2. \n
                                                          3. \\(-7^{2}\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(49\\)
                                                          2. \n
                                                          3. \\(-49\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          The next example reminds us to simplify inside parentheses first.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{16}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(12-3(9 - 12)\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{17}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(17 - 4(8 - 11)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(29\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{18}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(16 - 6(7 - 13)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(52\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{19}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(8(-9)\\div (-2)^{3}\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{20}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(12(-9)\\div (-3)^{3}\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(4\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{21}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(18(-4)\\div (-2)^{3}\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(9\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{22}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-30\\div 2 + (-3)(-7)\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{23}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-27\\div 3 + (-5)(-6)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(21\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{24}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-32\\div 4 + (-2)(-7)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(6\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Evaluate Variable Expressions with Integers

                                                          \n\n

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{25}\\)
                                                          \n\n

                                                          When \\(n=−5\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(n+1\\)
                                                          2. \n
                                                          3. \\(−n+1\\).
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1 \\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{- {\\color{red}{(-5)}} +1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{26}\\)
                                                          \n\n

                                                          When \\(n=−8\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(n+2\\)
                                                          2. \n
                                                          3. \\(−n+2\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-6\\)
                                                          2. \n
                                                          3. \\(10\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{27}\\)
                                                          \n\n

                                                          When \\(y=−9\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(y+8\\)
                                                          2. \n
                                                          3. \\(−y+8\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-1\\)
                                                          2. \n
                                                          3. \\(17\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{28}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{29}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(196\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{30}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(8\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{31}\\)
                                                          \n\n

                                                          Evaluate \\(20 -z \\) when

                                                          \n\n
                                                            \n
                                                          1. \\(z = 12\\)
                                                          2. \n
                                                          3. \\(z = -12\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{32}\\)
                                                          \n\n

                                                          Evaluate \\(17 - k\\) when

                                                          \n\n
                                                            \n
                                                          1. \\(k = 19\\)
                                                          2. \n
                                                          3. \\(k = -19\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-2\\)
                                                          2. \n
                                                          3. \\(36\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{33}\\)
                                                          \n\n

                                                          Evaluate \\(-5 - b\\) when

                                                          \n\n
                                                            \n
                                                          1. \\(b = 14\\)
                                                          2. \n
                                                          3. \\(b = -14\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-19\\)
                                                          2. \n
                                                          3. \\(9\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{34}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(2x^{2} + 3x + 8\\) when \\(x = 4\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          Substitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{35}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(3x^{2} - 2x + 6\\) when \\(x =-3\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(39\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{36}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(4x^{2} - x - 5\\) when \\(x = -2\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(13\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Translate Phrases to Expressions with Integers

                                                          \n\n

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{37}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(8\\) and \\(−12\\), increased by \\(3\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{38}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(9\\) and \\(−16\\), increased by \\(4\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\((9 + (-16)) + 4 - 3\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{39}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(-8\\) and \\(−12\\), increased by \\(7\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\((-8 + (-12)) + 7 - 13\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n
                                                          \\(a−b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          \n\n

                                                          Be careful to get a and b in the right order!

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{40}\\)
                                                          \n\n

                                                          Translate and then simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(13\\) and \\(−21\\)
                                                          2. \n
                                                          3. subtract \\(24\\) from \\(−19\\).
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{41}\\)
                                                          \n\n

                                                          Translate and simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(14\\) and \\(−23\\)
                                                          2. \n
                                                          3. subtract \\(21\\) from \\(−17\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \n
                                                          3. \\(-17 - 21; -38\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{42}\\)
                                                          \n\n

                                                          Translate and simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(11\\) and \\(−19\\)
                                                          2. \n
                                                          3. subtract \\(18\\) from \\(−11\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \n
                                                          3. \\(-11 - 18; -29\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is “product” and for division is “quotient.”

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{43}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(−2\\) and \\(14\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{44}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(−5\\) and \\(12\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-5(12); -60\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{45}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-8(13); -104\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{46}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−56\\) and \\(−7\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{47}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−63\\) and \\(−9\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-63\\div (-9); 7\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{48}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−72\\) and \\(−9\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-72\\div (-9); 8\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Use Integers in Applications

                                                          \n\n

                                                          We’ll outline a plan to solve applications. It’s hard to find something if we don’t know what we’re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we’ll write a phrase that gives the information to find it. We’ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          \n\n

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{49}\\)
                                                          \n\n

                                                          The temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(−9\\) degrees. What was the difference of the morning and afternoon temperatures?

                                                          \n\n

                                                          Solution

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood. 
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{50}\\)
                                                          \n\n

                                                          The temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The difference in temperatures was \\(45\\) degrees.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{51}\\)
                                                          \n\n

                                                          The temperature in Denver was \\(−6\\) degrees at lunchtime. By sunset the temperature had dropped to \\(−15\\) degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The difference in temperatures was \\(9\\) degrees.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          APPLY A STRATEGY TO SOLVE APPLICATIONS WITH INTEGERS.
                                                          \n\n
                                                            \n
                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. \n
                                                          3. Identify what we are asked to find.
                                                          4. \n
                                                          5. Write a phrase that gives the information to find it.
                                                          6. \n
                                                          7. Translate the phrase to an expression.
                                                          8. \n
                                                          9. Simplify the expression.
                                                          10. \n
                                                          11. Answer the question with a complete sentence.
                                                          12. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{52}\\)
                                                          \n\n

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          \n\n

                                                          Solution

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood. 
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{53}\\)
                                                          \n\n

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The Bears lost \\(105\\) yards.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{54}\\)
                                                          \n\n

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          A $16 fee was deducted from his checking account.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Key Concepts

                                                          \n\n
                                                            \n
                                                          • Multiplication and Division of Two Signed Numbers\n\n
                                                              \n
                                                            • Same signs—Product is positive
                                                            • \n
                                                            • Different signs—Product is negative
                                                            • \n
                                                            \n
                                                          • \n
                                                          • Strategy for Applications\n
                                                              \n
                                                            1. Identify what you are asked to find.
                                                            2. \n
                                                            3. Write a phrase that gives the information to find it.
                                                            4. \n
                                                            5. Translate the phrase to an expression.
                                                            6. \n
                                                            7. Simplify the expression.
                                                            8. \n
                                                            9. Answer the question with a complete sentence.
                                                            10. \n
                                                            \n
                                                          • \n
                                                          \n
                                                          \n\t\t\t\t
                                                          \n\n\n\n\n
                                                          \n\n\n\n\n\n\n\n\n

                                                          1.5: Multiply and Divide Integers is shared under a CC BY license and was authored, remixed, and/or curated by LibreTexts.

                                                          \n\n\n\n\n
                                                          \n
                                                          \n\n\n
                                                          \n \n
                                                          • Was this article helpful?
                                                          \n \n \n
                                                          \n\n
                                                          \n
                                                          \n \n \n
                                                          \n
                                                          \n
                                                          \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"} +{"content_list": [[{"type": "title", "raw_content": "

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          ", "content": {"title_content": "1.5: Multiply and Divide Integers", "level": "1"}}, {"type": "list", "raw_content": "", "content": {"items": [[[{"c": "Last updated", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Page ID
                                                          30345
                                                          ", "content": {"items": [[[{"c": "Page ID", "t": "text"}]], [[{"c": "30345", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "
                                                        • \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}

                                                          \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\newcommand{\\range}{\\mathrm{range}\\,}

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}

                                                          \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|}

                                                          \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}

                                                          \\newcommand{\\Span}{\\mathrm{span}}

                                                          \\newcommand{\\id}{\\mathrm{id}}

                                                          \\newcommand{\\Span}{\\mathrm{span}}

                                                          \\newcommand{\\kernel}{\\mathrm{null}\\,}

                                                          \\newcommand{\\range}{\\mathrm{range}\\,}

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}}

                                                          \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}

                                                          \\newcommand{\\Argument}{\\mathrm{Arg}}

                                                          \\newcommand{\\norm}[1]{\\| #1 \\|}

                                                          \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}

                                                          \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}

                                                          \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow

                                                          \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow

                                                          \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0

                                                          \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0

                                                          \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0

                                                          \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}}

                                                          \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}

                                                          \n\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                        • ", "content": [{"c": " \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} ", "t": "equation-inline"}, {"c": " \\newcommand{\\id}{\\mathrm{id}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": "( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\)", "t": "text"}, {"c": " \\newcommand{\\range}{\\mathrm{range}\\,}", "t": "equation-inline"}, {"c": " \\newcommand{\\RealPart}{\\mathrm{Re}}", "t": "equation-inline"}, {"c": " \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Argument}{\\mathrm{Arg}}", "t": "equation-inline"}, {"c": " \\newcommand{\\norm}[1]{\\| #1 \\|}", "t": "equation-inline"}, {"c": " \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": " \\newcommand{\\id}{\\mathrm{id}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": " \\newcommand{\\kernel}{\\mathrm{null}\\,}", "t": "equation-inline"}, {"c": " \\newcommand{\\range}{\\mathrm{range}\\,}", "t": "equation-inline"}, {"c": " \\newcommand{\\RealPart}{\\mathrm{Re}}", "t": "equation-inline"}, {"c": " \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}", "t": "equation-inline"}, {"c": " \\newcommand{\\Argument}{\\mathrm{Arg}}", "t": "equation-inline"}, {"c": " \\newcommand{\\norm}[1]{\\| #1 \\|}", "t": "equation-inline"}, {"c": " \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}", "t": "equation-inline"}, {"c": " \\newcommand{\\Span}{\\mathrm{span}}", "t": "equation-inline"}, {"c": " \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} ", "t": "equation-inline"}, {"c": " \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0", "t": "equation-inline"}, {"c": " \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}} ", "t": "equation-inline"}, {"c": "\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          By the end of this section, you will be able to:

                                                          ", "content": [{"c": "By the end of this section, you will be able to:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • Multiply integers
                                                          • Divide integers
                                                          • Simplify expressions with integers
                                                          • Evaluate variable expressions with integers
                                                          • Translate English phrases to algebraic expressions
                                                          • Use integers in applications
                                                          ", "content": {"items": [[[{"c": "Multiply integers", "t": "text"}]], [[{"c": "Divide integers", "t": "text"}]], [[{"c": "Simplify expressions with integers", "t": "text"}]], [[{"c": "Evaluate variable expressions with integers", "t": "text"}]], [[{"c": "Translate English phrases to algebraic expressions", "t": "text"}]], [[{"c": "Use integers in applications", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          ", "content": [{"c": "A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Multiply Integers

                                                          ", "content": {"title_content": "Multiply Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          ", "content": [{"c": "Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          We remember that a\\cdot b means add a,\\, b times. Here, we are using the model just to help us discover the pattern.

                                                          ", "content": [{"c": "We remember that", "t": "text"}, {"c": "a\\cdot b", "t": "equation-inline"}, {"c": "means add", "t": "text"}, {"c": "a,\\, b", "t": "equation-inline"}, {"c": "times. Here, we are using the model just to help us discover the pattern.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          \"Two
                                                          Figure \\(\\PageIndex{1}\\)
                                                          ", "content": {"url": "https://math.libretexts.org/@api/deki/files/17395/CNX_ElemAlg_Figure_01_04_001_img_new.jpg?revision=1", "data": null, "alt": "Two images are shown side-by-side. The image on the left has the equation five times three at the top. Below this it reads \u201cadd 5, 3 times.\u201d Below this depicts three rows of blue counters, with five counters in each row. Under this, it says \u201c15 positives.\u201d Under thisis the equation\u201c5 times 3 equals 15.\u201d The image on the right reads \u201cnegative 5 times three. The three is in parentheses. Below this it reads, \u201cadd negative five, three times.\u201d Under this are fifteen red counters in three rows of five. Below this it reads\u201d \u201c15 negatives\u201d. Below this is the equation negative five times 3 equals negative 15.\u201d", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                          The next two examples are more interesting.

                                                          ", "content": [{"c": "The next two examples are more interesting.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          What does it mean to multiply 5 by \u22123? It means subtract 5, 3 times. Looking at subtraction as \u201ctaking away,\u201d it means to take away 5, 3 times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away 5 three times.

                                                          ", "content": [{"c": "What does it mean to multiply", "t": "text"}, {"c": "5", "t": "equation-inline"}, {"c": "by", "t": "text"}, {"c": "\u22123", "t": "equation-inline"}, {"c": "? It means subtract", "t": "text"}, {"c": "5, 3", "t": "equation-inline"}, {"c": "times. Looking at subtraction as \u201ctaking away,\u201d it means to take away", "t": "text"}, {"c": "5, 3", "t": "equation-inline"}, {"c": "times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away", "t": "text"}, {"c": "5", "t": "equation-inline"}, {"c": "three times.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          \"This
                                                          Figure \\(\\PageIndex{2}\\)
                                                          ", "content": {"url": "https://math.libretexts.org/@api/deki/files/17306/CNX_ElemAlg_Figure_01_04_002_img_new.jpg?revision=1", "data": null, "alt": "This figure has two columns. In the top row, the left column contains the expression 5 times negative 3. This means take away 5, three times. Below this, there are three groups of five red negative counters, and below each group of red counters is an identical group of five blue positive counters. What are left are fifteen negatives, represented by 15 red counters. Underneath the counters is the equation 5 times negative 3 equals negative 15. In the top row, the right column contains the expression negative 5 times negative 3. This means take away negative 5, three times. Below this, there are three groups of five blue positive counters, and below each group of blue counters is an identical group of five red negative counters. What are left are fifteen positives, represented by 15 blue counters. Underneath the blue counters is the equation negative 5 times negative 3 equals 15.", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                          In summary:

                                                          ", "content": [{"c": "In summary:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          ", "content": [{"c": "Notice that for multiplication of two signed numbers, when the:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • signs are the same, the product is positive.
                                                          • signs are different, the product is negative.
                                                          ", "content": {"items": [[[{"c": "signs are the ", "t": "text"}, {"c": "same", "t": "text"}, {"c": ", the product is ", "t": "text"}, {"c": "positive", "t": "text"}, {"c": ".", "t": "text"}]], [[{"c": "signs are ", "t": "text"}, {"c": "different", "t": "text"}, {"c": ", the product is ", "t": "text"}, {"c": "negative", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          We\u2019ll put this all together in the chart below.

                                                          ", "content": [{"c": "We\u2019ll put this all together in the chart below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For multiplication of two signed numbers:

                                                          ", "content": [{"c": "For multiplication of two signed numbers:", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          ", "content": {"html": "
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          ", "content": {"html": "
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-9\\cdot 3\\)
                                                          2. \\(-2(-5)\\)
                                                          3. \\(4(-8)\\)
                                                          4. \\(7\\cdot 6\\)
                                                          ", "content": {"items": [[[{"c": "\\(-9\\cdot 3\\)", "t": "text"}]], [[{"c": "\\(-2(-5)\\)", "t": "text"}]], [[{"c": "\\(4(-8)\\)", "t": "text"}]], [[{"c": "\\(7\\cdot 6\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-6\\cdot 8\\)
                                                          2. \\(-4(-7)\\)
                                                          3. \\(9(-7)\\)
                                                          4. \\(5\\cdot 12\\)
                                                          ", "content": {"items": [[[{"c": "\\(-6\\cdot 8\\)", "t": "text"}]], [[{"c": "\\(-4(-7)\\)", "t": "text"}]], [[{"c": "\\(9(-7)\\)", "t": "text"}]], [[{"c": "\\(5\\cdot 12\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-48\\)
                                                          2. \\(28\\)
                                                          3. \\(-63\\)
                                                          4. \\(60\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-48\\)", "t": "text"}, {"c": "\\(28\\)", "t": "text"}, {"c": "\\(-63\\)", "t": "text"}, {"c": "\\(60\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-8\\cdot 7\\)
                                                          2. \\(-6(-9)\\)
                                                          3. \\(7(-4)\\)
                                                          4. \\(3\\cdot 13\\)
                                                          ", "content": {"items": [[[{"c": "\\(-8\\cdot 7\\)", "t": "text"}]], [[{"c": "\\(-6(-9)\\)", "t": "text"}]], [[{"c": "\\(7(-4)\\)", "t": "text"}]], [[{"c": "\\(3\\cdot 13\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-56\\)
                                                          2. \\(54\\)
                                                          3. \\(-28\\)
                                                          4. \\(39\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-56\\)", "t": "text"}, {"c": "\\(54\\)", "t": "text"}, {"c": "\\(-28\\)", "t": "text"}, {"c": "\\(39\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When we multiply a number by 1, the result is the same number. What happens when we multiply a number by \u22121? Let\u2019s multiply a positive number and then a negative number by \u22121 to see what we get.

                                                          ", "content": [{"c": "When we multiply a number by", "t": "text"}, {"c": "1", "t": "equation-inline"}, {"c": ", the result is the same number. What happens when we multiply a number by", "t": "text"}, {"c": "\u22121", "t": "equation-inline"}, {"c": "? Let\u2019s multiply a positive number and then a negative number by", "t": "text"}, {"c": "\u22121", "t": "equation-inline"}, {"c": "to see what we get.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(\u22121\\), we get its opposite!

                                                          ", "content": [{"c": "\\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\] Each time we multiply a number by \\(\u22121\\), we get its opposite!", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          MULTIPLICATION BY \u22121

                                                          ", "content": [{"c": "MULTIPLICATION BY \u22121", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u22121a=\u2212a", "content": {"math_content": "\u22121a=\u2212a", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Multiplying a number by \u22121 gives its opposite.

                                                          ", "content": [{"c": "Multiplying a number by", "t": "text"}, {"c": "\u22121", "t": "equation-inline"}, {"c": "gives its opposite.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \\(-1(-11)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1 \\cdot 7\\)", "t": "text"}]], [[{"c": "\\(-1(-11)\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1\\cdot 9\\)
                                                          2. \\(-1\\cdot(-17)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1\\cdot 9\\)", "t": "text"}]], [[{"c": "\\(-1\\cdot(-17)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(17\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-9\\)", "t": "text"}, {"c": "\\(17\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Multiply:

                                                          ", "content": [{"c": "Multiply:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-1\\cdot 8\\)
                                                          2. \\(-1\\cdot(-16)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-1\\cdot 8\\)", "t": "text"}]], [[{"c": "\\(-1\\cdot(-16)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-8\\)
                                                          2. \\(16\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-8\\)", "t": "text"}, {"c": "\\(16\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Divide Integers

                                                          ", "content": {"title_content": "Divide Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          ", "content": [{"c": "What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Division follows the same rules as multiplication!

                                                          ", "content": [{"c": "Division follows the same rules as multiplication!", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For division of two signed numbers, when the:

                                                          ", "content": [{"c": "For division of two signed numbers, when the:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • signs are the same, the quotient is positive.
                                                          • signs are different, the quotient is negative.
                                                          ", "content": {"items": [[[{"c": "signs are the ", "t": "text"}, {"c": "same", "t": "text"}, {"c": ", the quotient is ", "t": "text"}, {"c": "positive", "t": "text"}, {"c": ".", "t": "text"}]], [[{"c": "signs are ", "t": "text"}, {"c": "different", "t": "text"}, {"c": ", the quotient is ", "t": "text"}, {"c": "negative", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": false}}, {"type": "paragraph", "raw_content": "

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          ", "content": [{"c": "And remember that we can always check the answer of a division problem by multiplying.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For multiplication and division of two signed numbers:

                                                          ", "content": [{"c": "For multiplication and division of two signed numbers:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          • If the signs are the same, the result is positive.
                                                          • If the signs are different, the result is negative.
                                                          ", "content": {"items": [[[{"c": "If the signs are the same, the result is positive.", "t": "text"}]], [[{"c": "If the signs are different, the result is negative.", "t": "text"}]]], "ordered": false}}, {"type": "table", "raw_content": "
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          ", "content": {"html": "
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          ", "is_complex": true, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          ", "content": {"html": "
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          ", "is_complex": true, "table_nest_level": "1"}}, {"type": "list", "raw_content": "
                                                          1. \\(-27\\div 3\\)
                                                          2. \\(-100\\div (-4)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-27\\div 3\\)", "t": "text"}]], [[{"c": "\\(-100\\div (-4)\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Divide:

                                                          ", "content": [{"c": "Divide:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-42\\div 6\\)
                                                          2. \\(-117\\div (-3)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-42\\div 6\\)", "t": "text"}]], [[{"c": "\\(-117\\div (-3)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-7\\)
                                                          2. \\(39\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-7\\)", "t": "text"}, {"c": "\\(39\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Divide:

                                                          ", "content": [{"c": "Divide:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(-63\\div 7\\)
                                                          2. \\(-115\\div (-5)\\)
                                                          ", "content": {"items": [[[{"c": "\\(-63\\div 7\\)", "t": "text"}]], [[{"c": "\\(-115\\div (-5)\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(23\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-9\\)", "t": "text"}, {"c": "\\(23\\)", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Simplify Expressions with Integers

                                                          ", "content": {"title_content": "Simplify Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          ", "content": [{"c": "What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          ", "content": [{"c": "Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          7(-2)+4(-7)-6

                                                          ", "content": [{"c": "7(-2)+4(-7)-6", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          8(-3)+5(-7)-4

                                                          ", "content": [{"c": "8(-3)+5(-7)-4", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -63

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-63", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          9(-3)+7(-8)-1

                                                          ", "content": [{"c": "9(-3)+7(-8)-1", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -84

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-84", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-2)^{4}\\)
                                                          2. \\(-2^{4}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-2)^{4}\\)", "t": "text"}]], [[{"c": "\\(-2^{4}\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the (\u22122) to the 4^{th} power. In part (2), the exponent means to raise just the 2 to the 4^{th} power and then take the opposite.

                                                          ", "content": [{"c": "Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the", "t": "text"}, {"c": "(\u22122)", "t": "equation-inline"}, {"c": "to the", "t": "text"}, {"c": "4^{th}", "t": "equation-inline"}, {"c": "power. In part (2), the exponent means to raise just the", "t": "text"}, {"c": "2", "t": "equation-inline"}, {"c": "to the", "t": "text"}, {"c": "4^{th}", "t": "equation-inline"}, {"c": "power and then take the opposite.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-3)^{4}\\)
                                                          2. \\(-3^{4}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-3)^{4}\\)", "t": "text"}]], [[{"c": "\\(-3^{4}\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(81\\)
                                                          2. \\(-81\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(81\\)", "t": "text"}, {"c": "\\(-81\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\((-7)^{2}\\)
                                                          2. \\(-7^{2}\\)
                                                          ", "content": {"items": [[[{"c": "\\((-7)^{2}\\)", "t": "text"}]], [[{"c": "\\(-7^{2}\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(49\\)
                                                          2. \\(-49\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(49\\)", "t": "text"}, {"c": "\\(-49\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The next example reminds us to simplify inside parentheses first.

                                                          ", "content": [{"c": "The next example reminds us to simplify inside parentheses first.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          12-3(9 - 12)

                                                          ", "content": [{"c": "12-3(9 - 12)", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}", "content": {"math_content": "\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          17 - 4(8 - 11)

                                                          ", "content": [{"c": "17 - 4(8 - 11)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          29

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "29", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          16 - 6(7 - 13)

                                                          ", "content": [{"c": "16 - 6(7 - 13)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          52

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "52", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          8(-9)\\div (-2)^{3}

                                                          ", "content": [{"c": "8(-9)\\div (-2)^{3}", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          12(-9)\\div (-3)^{3}

                                                          ", "content": [{"c": "12(-9)\\div (-3)^{3}", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          4

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "4", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          18(-4)\\div (-2)^{3}

                                                          ", "content": [{"c": "18(-4)\\div (-2)^{3}", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          9

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "9", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          -30\\div 2 + (-3)(-7)

                                                          ", "content": [{"c": "-30\\div 2 + (-3)(-7)", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          -27\\div 3 + (-5)(-6)

                                                          ", "content": [{"c": "-27\\div 3 + (-5)(-6)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          21

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "21", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Simplify:

                                                          ", "content": [{"c": "Simplify:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          -32\\div 4 + (-2)(-7)

                                                          ", "content": [{"c": "-32\\div 4 + (-2)(-7)", "t": "equation-inline"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          6

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "6", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Evaluate Variable Expressions with Integers

                                                          ", "content": {"title_content": "Evaluate Variable Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          ", "content": [{"c": "Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          When n=\u22125, evaluate:

                                                          ", "content": [{"c": "When", "t": "text"}, {"c": "n=\u22125", "t": "equation-inline"}, {"c": ", evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(n+1\\)
                                                          2. \\(\u2212n+1\\).
                                                          ", "content": {"items": [[[{"c": "\\(n+1\\)", "t": "text"}]], [[{"c": "\\(\u2212n+1\\).", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When n=\u22128, evaluate:

                                                          ", "content": [{"c": "When", "t": "text"}, {"c": "n=\u22128", "t": "equation-inline"}, {"c": ", evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(n+2\\)
                                                          2. \\(\u2212n+2\\).
                                                          ", "content": {"items": [[[{"c": "\\(n+2\\)", "t": "text"}]], [[{"c": "\\(\u2212n+2\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-6\\)
                                                          2. \\(10\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-6\\)", "t": "text"}, {"c": "\\(10\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When y=\u22129, evaluate:

                                                          ", "content": [{"c": "When", "t": "text"}, {"c": "y=\u22129", "t": "equation-inline"}, {"c": ", evaluate:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(y+8\\)
                                                          2. \\(\u2212y+8\\).
                                                          ", "content": {"items": [[[{"c": "\\(y+8\\)", "t": "text"}]], [[{"c": "\\(\u2212y+8\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-1\\)
                                                          2. \\(17\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-1\\)", "t": "text"}, {"c": "\\(17\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate (x+y)^{2} when x = -18 and y = 24.

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "(x+y)^{2}", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x = -18", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "y = 24", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate (x+y)^{2} when x = -15 and y = 29.

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "(x+y)^{2}", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x = -15", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "y = 29", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          196

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "196", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate (x+y)^{3} when x = -8 and y = 10.

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "(x+y)^{3}", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x = -8", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "y = 10", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          8

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "8", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate 20 -z when

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "20 -z ", "t": "equation-inline"}, {"c": "when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(z = 12\\)
                                                          2. \\(z = -12\\)
                                                          ", "content": {"items": [[[{"c": "\\(z = 12\\)", "t": "text"}]], [[{"c": "\\(z = -12\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate 17 - k when

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "17 - k", "t": "equation-inline"}, {"c": "when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(k = 19\\)
                                                          2. \\(k = -19\\)
                                                          ", "content": {"items": [[[{"c": "\\(k = 19\\)", "t": "text"}]], [[{"c": "\\(k = -19\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-2\\)
                                                          2. \\(36\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-2\\)", "t": "text"}, {"c": "\\(36\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate -5 - b when

                                                          ", "content": [{"c": "Evaluate", "t": "text"}, {"c": "-5 - b", "t": "equation-inline"}, {"c": "when", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\(b = 14\\)
                                                          2. \\(b = -14\\)
                                                          ", "content": {"items": [[[{"c": "\\(b = 14\\)", "t": "text"}]], [[{"c": "\\(b = -14\\)", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(-19\\)
                                                          2. \\(9\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(-19\\)", "t": "text"}, {"c": "\\(9\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          2x^{2} + 3x + 8 when x = 4.

                                                          ", "content": [{"c": "2x^{2} + 3x + 8", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x = 4", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Substitute 4 for x. Use parentheses to show multiplication.

                                                          ", "content": [{"c": "Substitute", "t": "text"}, {"c": "4", "t": "equation-inline"}, {"c": "for", "t": "text"}, {"c": "x", "t": "equation-inline"}, {"c": ". Use parentheses to show multiplication.", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          3x^{2} - 2x + 6 when x =-3.

                                                          ", "content": [{"c": "3x^{2} - 2x + 6", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x =-3", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          39

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "39", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Evaluate:

                                                          ", "content": [{"c": "Evaluate:", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          4x^{2} - x - 5 when x = -2.

                                                          ", "content": [{"c": "4x^{2} - x - 5", "t": "equation-inline"}, {"c": "when", "t": "text"}, {"c": "x = -2", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          13

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "13", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Translate Phrases to Expressions with Integers

                                                          ", "content": {"title_content": "Translate Phrases to Expressions with Integers", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          ", "content": [{"c": "Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of 8 and \u221212, increased by 3.

                                                          ", "content": [{"c": "Translate and simplify: the sum of", "t": "text"}, {"c": "8", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u221212", "t": "equation-inline"}, {"c": ", increased by", "t": "text"}, {"c": "3", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of 9 and \u221216, increased by 4.

                                                          ", "content": [{"c": "Translate and simplify: the sum of", "t": "text"}, {"c": "9", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u221216", "t": "equation-inline"}, {"c": ", increased by", "t": "text"}, {"c": "4", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          (9 + (-16)) + 4 - 3

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "(9 + (-16)) + 4 - 3", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify: the sum of -8 and \u221212, increased by 7.

                                                          ", "content": [{"c": "Translate and simplify: the sum of", "t": "text"}, {"c": "-8", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u221212", "t": "equation-inline"}, {"c": ", increased by", "t": "text"}, {"c": "7", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          (-8 + (-12)) + 7 - 13

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "(-8 + (-12)) + 7 - 13", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          ", "content": [{"c": "When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          ", "content": {"html": "
                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          Be careful to get a and b in the right order!

                                                          ", "content": [{"c": "Be careful to get a and b in the right order!", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Translate and then simplify

                                                          ", "content": [{"c": "Translate and then simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(13\\) and \\(\u221221\\)
                                                          2. subtract \\(24\\) from \\(\u221219\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(13\\) and \\(\u221221\\)", "t": "text"}]], [[{"c": "subtract \\(24\\) from \\(\u221219\\).", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]
                                                          ", "content": {"items": [[[{"c": "\\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]", "t": "text"}]], [[{"c": "\\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify

                                                          ", "content": [{"c": "Translate and simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(14\\) and \\(\u221223\\)
                                                          2. subtract \\(21\\) from \\(\u221217\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(14\\) and \\(\u221223\\)", "t": "text"}]], [[{"c": "subtract \\(21\\) from \\(\u221217\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \\(-17 - 21; -38\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(14 - (-23); 37\\)", "t": "text"}, {"c": "\\(-17 - 21; -38\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate and simplify

                                                          ", "content": [{"c": "Translate and simplify", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          1. the difference of \\(11\\) and \\(\u221219\\)
                                                          2. subtract \\(18\\) from \\(\u221211\\).
                                                          ", "content": {"items": [[[{"c": "the difference of \\(11\\) and \\(\u221219\\)", "t": "text"}]], [[{"c": "subtract \\(18\\) from \\(\u221211\\).", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          Answer
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \\(-11 - 18; -29\\)
                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "\\(11 - (-19); 30\\)", "t": "text"}, {"c": "\\(-11 - 18; -29\\)", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201cproduct\u201d and for division is \u201cquotient.\u201d

                                                          ", "content": [{"c": "Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201c product \u201d and for division is \u201c quotient.\u201d", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of \u22122 and 14.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of", "t": "text"}, {"c": "\u22122", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "14", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of \u22125 and 12.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of", "t": "text"}, {"c": "\u22125", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "12", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -5(12); -60

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-5(12); -60", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the product of 8 and -13.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the product of", "t": "text"}, {"c": "8", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "-13", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -8(13); -104

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-8(13); -104", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221256 and \u22127.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of", "t": "text"}, {"c": "\u221256", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u22127", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}", "content": {"math_content": "\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221263 and \u22129.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of", "t": "text"}, {"c": "\u221263", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u22129", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -63\\div (-9); 7

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-63\\div (-9); 7", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221272 and \u22129.

                                                          ", "content": [{"c": "Translate to an algebraic expression and simplify if possible: the quotient of", "t": "text"}, {"c": "\u221272", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "\u22129", "t": "equation-inline"}, {"c": ".", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          -72\\div (-9); 8

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "-72\\div (-9); 8", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Use Integers in Applications

                                                          ", "content": {"title_content": "Use Integers in Applications", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          ", "content": [{"c": "We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          ", "content": [{"c": "How to Apply a Strategy to Solve Applications with Integers", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Urbana, Illinois one morning was 11 degrees. By mid-afternoon, the temperature had dropped to \u22129 degrees. What was the difference of the morning and afternoon temperatures?

                                                          ", "content": [{"c": "The temperature in Urbana, Illinois one morning was", "t": "text"}, {"c": "11", "t": "equation-inline"}, {"c": "degrees. By mid-afternoon, the temperature had dropped to", "t": "text"}, {"c": "\u22129", "t": "equation-inline"}, {"c": "degrees. What was the difference of the morning and afternoon temperatures?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.
                                                          ", "content": {"html": "
                                                          Step 1
                                                          Step 2the difference of the morning and afternoon temperatures
                                                          Step 3the difference of \\(11\\) and \\(-9\\)
                                                          Step 4.\\(11 - (-9)\\)
                                                          Step 5\\(20\\)
                                                          Step 6The difference in temperatures was 20 degrees.
                                                          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Anchorage, Alaska one morning was 15 degrees. By mid-afternoon the temperature had dropped to 30 degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          ", "content": [{"c": "The temperature in Anchorage, Alaska one morning was", "t": "text"}, {"c": "15", "t": "equation-inline"}, {"c": "degrees. By mid-afternoon the temperature had dropped to", "t": "text"}, {"c": "30", "t": "equation-inline"}, {"c": "degrees below zero. What was the difference in the morning and afternoon temperatures?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The difference in temperatures was 45 degrees.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The difference in temperatures was ", "t": "text"}, {"c": "45", "t": "equation-inline"}, {"c": " degrees.", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The temperature in Denver was \u22126 degrees at lunchtime. By sunset the temperature had dropped to \u221215 degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          ", "content": [{"c": "The temperature in Denver was", "t": "text"}, {"c": "\u22126", "t": "equation-inline"}, {"c": "degrees at lunchtime. By sunset the temperature had dropped to", "t": "text"}, {"c": "\u221215", "t": "equation-inline"}, {"c": "degrees. What was the difference in the lunchtime and sunset temperatures?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The difference in temperatures was 9 degrees.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The difference in temperatures was ", "t": "text"}, {"c": "9", "t": "equation-inline"}, {"c": " degrees.", "t": "text"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. Identify what we are asked to find.
                                                          3. Write a phrase that gives the information to find it.
                                                          4. Translate the phrase to an expression.
                                                          5. Simplify the expression.
                                                          6. Answer the question with a complete sentence.
                                                          ", "content": {"items": [[[{"c": "Read the problem. Make sure all the words and ideas are understood", "t": "text"}]], [[{"c": "Identify what we are asked to find.", "t": "text"}]], [[{"c": "Write a phrase that gives the information to find it.", "t": "text"}]], [[{"c": "Translate the phrase to an expression.", "t": "text"}]], [[{"c": "Simplify the expression.", "t": "text"}]], [[{"c": "Answer the question with a complete sentence.", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          ", "content": [{"c": "The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Solution

                                                          ", "content": [{"c": "Solution", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.
                                                          ", "content": {"html": "
                                                          Step 1
                                                          Step 2the number of yards lost
                                                          Step 3three times a \\(15\\)-yard penalty
                                                          Step 4.\\(3(-15)\\)
                                                          Step 5\\(-45\\)
                                                          Step 6The team lost \\(45\\) yards.
                                                          ", "is_complex": false, "table_nest_level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of 15 yards. What is the number of yards lost due to penalties?

                                                          ", "content": [{"c": "The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of", "t": "text"}, {"c": "15", "t": "equation-inline"}, {"c": "yards. What is the number of yards lost due to penalties?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          The Bears lost 105 yards.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "The Bears lost ", "t": "text"}, {"c": "105", "t": "equation-inline"}, {"c": " yards.", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          ", "content": [{"c": "Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          Answer

                                                          A $16 fee was deducted from his checking account.

                                                          ", "content": {"items": [[[{"c": "Answer", "t": "text"}]], [[{"c": "A $16 fee was deducted from his checking account.", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Key Concepts

                                                          ", "content": {"title_content": "Key Concepts", "level": "2"}}, {"type": "list", "raw_content": "
                                                          • Multiplication and Division of Two Signed Numbers
                                                            • Same signs\u2014Product is positive
                                                            • Different signs\u2014Product is negative
                                                          • Strategy for Applications
                                                            1. Identify what you are asked to find.
                                                            2. Write a phrase that gives the information to find it.
                                                            3. Translate the phrase to an expression.
                                                            4. Simplify the expression.
                                                            5. Answer the question with a complete sentence.
                                                          ", "content": {"items": [[[{"c": "Multiplication and Division of Two Signed Numbers", "t": "text"}, {"c": "Same signs\u2014Product is positive", "t": "text"}, {"c": "Different signs\u2014Product is negative", "t": "text"}]], [[{"c": "Strategy for Applications", "t": "text"}, {"c": "Identify what you are asked to find.", "t": "text"}, {"c": "Write a phrase that gives the information to find it.", "t": "text"}, {"c": "Translate the phrase to an expression.", "t": "text"}, {"c": "Simplify the expression.", "t": "text"}, {"c": "Answer the question with a complete sentence.", "t": "text"}]]], "ordered": false}}]], "main_html": "

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          Page ID
                                                          30345
                                                        • \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}

                                                          \\newcommand{\\id}{\\mathrm{id}} \\newcommand{\\Span}{\\mathrm{span}}

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\newcommand{\\range}{\\mathrm{range}\\,}

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}} \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}

                                                          \\newcommand{\\Argument}{\\mathrm{Arg}} \\newcommand{\\norm}[1]{\\| #1 \\|}

                                                          \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}

                                                          \\newcommand{\\Span}{\\mathrm{span}}

                                                          \\newcommand{\\id}{\\mathrm{id}}

                                                          \\newcommand{\\Span}{\\mathrm{span}}

                                                          \\newcommand{\\kernel}{\\mathrm{null}\\,}

                                                          \\newcommand{\\range}{\\mathrm{range}\\,}

                                                          \\newcommand{\\RealPart}{\\mathrm{Re}}

                                                          \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}

                                                          \\newcommand{\\Argument}{\\mathrm{Arg}}

                                                          \\newcommand{\\norm}[1]{\\| #1 \\|}

                                                          \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}

                                                          \\newcommand{\\Span}{\\mathrm{span}} \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}

                                                          \\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow

                                                          \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow

                                                          \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vectorC}[1]{\\textbf{#1}}\u00a0

                                                          \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}\u00a0

                                                          \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}\u00a0

                                                          \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}}

                                                          \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}\u00a0

                                                          \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}

                                                          \n\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                        • By the end of this section, you will be able to:

                                                          • Multiply integers
                                                          • Divide integers
                                                          • Simplify expressions with integers
                                                          • Evaluate variable expressions with integers
                                                          • Translate English phrases to algebraic expressions
                                                          • Use integers in applications

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          Multiply Integers

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          We remember that a\\cdot b means add a,\\, b times. Here, we are using the model just to help us discover the pattern.

                                                          \"Two
                                                          Figure \\(\\PageIndex{1}\\)

                                                          The next two examples are more interesting.

                                                          What does it mean to multiply 5 by \u22123? It means subtract 5, 3 times. Looking at subtraction as \u201ctaking away,\u201d it means to take away 5, 3 times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away 5 three times.

                                                          \"This
                                                          Figure \\(\\PageIndex{2}\\)

                                                          In summary:

                                                          \\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          • signs are the same, the product is positive.
                                                          • signs are different, the product is negative.

                                                          We\u2019ll put this all together in the chart below.

                                                          For multiplication of two signed numbers:

                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)

                                                          Multiply:

                                                          1. \\(-9\\cdot 3\\)
                                                          2. \\(-2(-5)\\)
                                                          3. \\(4(-8)\\)
                                                          4. \\(7\\cdot 6\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]

                                                          Multiply:

                                                          1. \\(-6\\cdot 8\\)
                                                          2. \\(-4(-7)\\)
                                                          3. \\(9(-7)\\)
                                                          4. \\(5\\cdot 12\\)
                                                          Answer
                                                          1. \\(-48\\)
                                                          2. \\(28\\)
                                                          3. \\(-63\\)
                                                          4. \\(60\\)

                                                          Multiply:

                                                          1. \\(-8\\cdot 7\\)
                                                          2. \\(-6(-9)\\)
                                                          3. \\(7(-4)\\)
                                                          4. \\(3\\cdot 13\\)
                                                          Answer
                                                          1. \\(-56\\)
                                                          2. \\(54\\)
                                                          3. \\(-28\\)
                                                          4. \\(39\\)

                                                          When we multiply a number by 1, the result is the same number. What happens when we multiply a number by \u22121? Let\u2019s multiply a positive number and then a negative number by \u22121 to see what we get.

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(\u22121\\), we get its opposite!

                                                          MULTIPLICATION BY \u22121

                                                          \u22121a=\u2212a

                                                          Multiplying a number by \u22121 gives its opposite.

                                                          Multiply:

                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \\(-1(-11)\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]

                                                          Multiply:

                                                          1. \\(-1\\cdot 9\\)
                                                          2. \\(-1\\cdot(-17)\\)
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(17\\)

                                                          Multiply:

                                                          1. \\(-1\\cdot 8\\)
                                                          2. \\(-1\\cdot(-16)\\)
                                                          Answer
                                                          1. \\(-8\\)
                                                          2. \\(16\\)

                                                          Divide Integers

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          \\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}

                                                          Division follows the same rules as multiplication!

                                                          For division of two signed numbers, when the:

                                                          • signs are the same, the quotient is positive.
                                                          • signs are different, the quotient is negative.

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          For multiplication and division of two signed numbers:

                                                          • If the signs are the same, the result is positive.
                                                          • If the signs are different, the result is negative.
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          1. \\(-27\\div 3\\)
                                                          2. \\(-100\\div (-4)\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]

                                                          Divide:

                                                          1. \\(-42\\div 6\\)
                                                          2. \\(-117\\div (-3)\\)
                                                          Answer
                                                          1. \\(-7\\)
                                                          2. \\(39\\)

                                                          Divide:

                                                          1. \\(-63\\div 7\\)
                                                          2. \\(-115\\div (-5)\\)
                                                          Answer
                                                          1. \\(-9\\)
                                                          2. \\(23\\)

                                                          Simplify Expressions with Integers

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          Let\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          Simplify:

                                                          7(-2)+4(-7)-6

                                                          Solution

                                                          \\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}

                                                          Simplify:

                                                          8(-3)+5(-7)-4

                                                          Answer

                                                          -63

                                                          Simplify:

                                                          9(-3)+7(-8)-1

                                                          Answer

                                                          -84

                                                          Simplify:

                                                          1. \\((-2)^{4}\\)
                                                          2. \\(-2^{4}\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the (\u22122) to the 4^{th} power. In part (2), the exponent means to raise just the 2 to the 4^{th} power and then take the opposite.

                                                          Simplify:

                                                          1. \\((-3)^{4}\\)
                                                          2. \\(-3^{4}\\)
                                                          Answer
                                                          1. \\(81\\)
                                                          2. \\(-81\\)

                                                          Simplify:

                                                          1. \\((-7)^{2}\\)
                                                          2. \\(-7^{2}\\)
                                                          Answer
                                                          1. \\(49\\)
                                                          2. \\(-49\\)

                                                          The next example reminds us to simplify inside parentheses first.

                                                          Simplify:

                                                          12-3(9 - 12)

                                                          Solution

                                                          \\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}

                                                          Simplify:

                                                          17 - 4(8 - 11)

                                                          Answer

                                                          29

                                                          Simplify:

                                                          16 - 6(7 - 13)

                                                          Answer

                                                          52

                                                          Simplify:

                                                          8(-9)\\div (-2)^{3}

                                                          Solution

                                                          \\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}

                                                          Simplify:

                                                          12(-9)\\div (-3)^{3}

                                                          Answer

                                                          4

                                                          Simplify:

                                                          18(-4)\\div (-2)^{3}

                                                          Answer

                                                          9

                                                          Simplify:

                                                          -30\\div 2 + (-3)(-7)

                                                          Solution

                                                          \\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}

                                                          Simplify:

                                                          -27\\div 3 + (-5)(-6)

                                                          Answer

                                                          21

                                                          Simplify:

                                                          -32\\div 4 + (-2)(-7)

                                                          Answer

                                                          6

                                                          Evaluate Variable Expressions with Integers

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          When n=\u22125, evaluate:

                                                          1. \\(n+1\\)
                                                          2. \\(\u2212n+1\\).

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]

                                                          When n=\u22128, evaluate:

                                                          1. \\(n+2\\)
                                                          2. \\(\u2212n+2\\).
                                                          Answer
                                                          1. \\(-6\\)
                                                          2. \\(10\\)

                                                          When y=\u22129, evaluate:

                                                          1. \\(y+8\\)
                                                          2. \\(\u2212y+8\\).
                                                          Answer
                                                          1. \\(-1\\)
                                                          2. \\(17\\)

                                                          Evaluate (x+y)^{2} when x = -18 and y = 24.

                                                          Solution

                                                          \\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}

                                                          Evaluate (x+y)^{2} when x = -15 and y = 29.

                                                          Answer

                                                          196

                                                          Evaluate (x+y)^{3} when x = -8 and y = 10.

                                                          Answer

                                                          8

                                                          Evaluate 20 -z when

                                                          1. \\(z = 12\\)
                                                          2. \\(z = -12\\)

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]

                                                          Evaluate 17 - k when

                                                          1. \\(k = 19\\)
                                                          2. \\(k = -19\\)
                                                          Answer
                                                          1. \\(-2\\)
                                                          2. \\(36\\)

                                                          Evaluate -5 - b when

                                                          1. \\(b = 14\\)
                                                          2. \\(b = -14\\)
                                                          Answer
                                                          1. \\(-19\\)
                                                          2. \\(9\\)

                                                          Evaluate:

                                                          2x^{2} + 3x + 8 when x = 4.

                                                          Solution

                                                          Substitute 4 for x. Use parentheses to show multiplication.

                                                          \\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}

                                                          Evaluate:

                                                          3x^{2} - 2x + 6 when x =-3.

                                                          Answer

                                                          39

                                                          Evaluate:

                                                          4x^{2} - x - 5 when x = -2.

                                                          Answer

                                                          13

                                                          Translate Phrases to Expressions with Integers

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          Translate and simplify: the sum of 8 and \u221212, increased by 3.

                                                          Solution

                                                          \\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}

                                                          Translate and simplify: the sum of 9 and \u221216, increased by 4.

                                                          Answer

                                                          (9 + (-16)) + 4 - 3

                                                          Translate and simplify: the sum of -8 and \u221212, increased by 7.

                                                          Answer

                                                          (-8 + (-12)) + 7 - 13

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          \\(a\u2212b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)

                                                          Be careful to get a and b in the right order!

                                                          Translate and then simplify

                                                          1. the difference of \\(13\\) and \\(\u221221\\)
                                                          2. subtract \\(24\\) from \\(\u221219\\).

                                                          Solution

                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]

                                                          Translate and simplify

                                                          1. the difference of \\(14\\) and \\(\u221223\\)
                                                          2. subtract \\(21\\) from \\(\u221217\\).
                                                          Answer
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \\(-17 - 21; -38\\)

                                                          Translate and simplify

                                                          1. the difference of \\(11\\) and \\(\u221219\\)
                                                          2. subtract \\(18\\) from \\(\u221211\\).
                                                          Answer
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \\(-11 - 18; -29\\)

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201cproduct\u201d and for division is \u201cquotient.\u201d

                                                          Translate to an algebraic expression and simplify if possible: the product of \u22122 and 14.

                                                          Solution

                                                          \\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}

                                                          Translate to an algebraic expression and simplify if possible: the product of \u22125 and 12.

                                                          Answer

                                                          -5(12); -60

                                                          Translate to an algebraic expression and simplify if possible: the product of 8 and -13.

                                                          Answer

                                                          -8(13); -104

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221256 and \u22127.

                                                          Solution

                                                          \\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221263 and \u22129.

                                                          Answer

                                                          -63\\div (-9); 7

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \u221272 and \u22129.

                                                          Answer

                                                          -72\\div (-9); 8

                                                          Use Integers in Applications

                                                          We\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          The temperature in Urbana, Illinois one morning was 11 degrees. By mid-afternoon, the temperature had dropped to \u22129 degrees. What was the difference of the morning and afternoon temperatures?

                                                          Solution

                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.

                                                          The temperature in Anchorage, Alaska one morning was 15 degrees. By mid-afternoon the temperature had dropped to 30 degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          Answer

                                                          The difference in temperatures was 45 degrees.

                                                          The temperature in Denver was \u22126 degrees at lunchtime. By sunset the temperature had dropped to \u221215 degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          Answer

                                                          The difference in temperatures was 9 degrees.

                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. Identify what we are asked to find.
                                                          3. Write a phrase that gives the information to find it.
                                                          4. Translate the phrase to an expression.
                                                          5. Simplify the expression.
                                                          6. Answer the question with a complete sentence.

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          Solution

                                                          Step 1. Read the problem. Make sure all the words and ideas are understood.
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of 15 yards. What is the number of yards lost due to penalties?

                                                          Answer

                                                          The Bears lost 105 yards.

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          Answer

                                                          A $16 fee was deducted from his checking account.

                                                          Key Concepts

                                                          • Multiplication and Division of Two Signed Numbers
                                                            • Same signs\u2014Product is positive
                                                            • Different signs\u2014Product is negative
                                                          • Strategy for Applications
                                                            1. Identify what you are asked to find.
                                                            2. Write a phrase that gives the information to find it.
                                                            3. Translate the phrase to an expression.
                                                            4. Simplify the expression.
                                                            5. Answer the question with a complete sentence.
                                                          ", "statics": {"title": 8, "list": 72, "list.text": 185, "paragraph": 118, "paragraph.equation-inline": 109, "paragraph.text": 170, "image": 2, "equation-interline": 12, "table": 7, "table.complex": 2, "list.equation-inline": 21}, "url": "https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers", "content": "# 1.5: Multiply and Divide Integers\n\n1. Last updated\n\n1. Page ID\n2. 30345\n\n$\\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}$ $\\newcommand{\\id}{\\mathrm{id}}$ $\\newcommand{\\Span}{\\mathrm{span}}$ ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) $\\newcommand{\\range}{\\mathrm{range}\\,}$ $\\newcommand{\\RealPart}{\\mathrm{Re}}$ $\\newcommand{\\ImaginaryPart}{\\mathrm{Im}}$ $\\newcommand{\\Argument}{\\mathrm{Arg}}$ $\\newcommand{\\norm}[1]{\\| #1 \\|}$ $\\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}$ $\\newcommand{\\Span}{\\mathrm{span}}$ $\\newcommand{\\id}{\\mathrm{id}}$ $\\newcommand{\\Span}{\\mathrm{span}}$ $\\newcommand{\\kernel}{\\mathrm{null}\\,}$ $\\newcommand{\\range}{\\mathrm{range}\\,}$ $\\newcommand{\\RealPart}{\\mathrm{Re}}$ $\\newcommand{\\ImaginaryPart}{\\mathrm{Im}}$ $\\newcommand{\\Argument}{\\mathrm{Arg}}$ $\\newcommand{\\norm}[1]{\\| #1 \\|}$ $\\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}$ $\\newcommand{\\Span}{\\mathrm{span}}$ $\\newcommand{\\AA}{\\unicode[.8,0]{x212B}}$ $\\newcommand{\\vectorA}[1]{\\vec{#1}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow$ $\\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}\u00a0\u00a0\u00a0\u00a0\u00a0 % arrow$ $\\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vectorC}[1]{\\textbf{#1}}$ $\\newcommand{\\vectorD}[1]{\\overrightarrow{#1}}$ $\\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}}$ $\\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}}$ $\\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}}\u00a0}$ $\\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash\u00a0{#1}}}$ \\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\\\ \\#5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}\\#1 \\\\ \\#2 \\\\ \\#3 \\\\ \\#4 \\\\ \\#5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}\\#1 \\amp \\#2 \\\\ \\#3 \\amp \\#4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{\\#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{\\#1\\right\\}_{\\#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{\\#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{\\#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|\\#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)\n\nBy the end of this section, you will be able to:\n\n- Multiply integers\n- Divide integers\n- Simplify expressions with integers\n- Evaluate variable expressions with integers\n- Translate English phrases to algebraic expressions\n- Use integers in applications\n\nA more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.\n\n## Multiply Integers\n\nSince multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let\u2019s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.\n\nWe remember that $a\\cdot b$ means add $a,\\, b$ times. Here, we are using the model just to help us discover the pattern.\n\nThe next two examples are more interesting.\n\nWhat does it mean to multiply $5$ by $\u22123$ ? It means subtract $5, 3$ times. Looking at subtraction as \u201ctaking away,\u201d it means to take away $5, 3$ times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away $5$ three times.\n\nIn summary:\n\n$$\n\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\n$$\n\nNotice that for multiplication of two signed numbers, when the:\n\n- signs are the same , the product is positive .\n- signs are different , the product is negative .\n\nWe\u2019ll put this all together in the chart below.\n\nFor multiplication of two signed numbers:\n\n| Same signs | Product | Example |\n|---|---|---|\n| Two positives | Positive | \\(7\\cdot 4 = 28\\) |\n| Two negatives | Positive | \\(-8(-6) = 48\\) |\n\n| Different signs | Product | Example |\n|---|---|---|\n| Positives \\(\\cdot\\) negative | Negative | \\(7(-9) = -63\\) |\n| Negative \\(\\cdot\\) positives | Negative | \\(-5\\cdot 10= -50\\) |\n\nMultiply:\n\n1. \\(-9\\cdot 3\\)\n2. \\(-2(-5)\\)\n3. \\(4(-8)\\)\n4. \\(7\\cdot 6\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]\n3. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]\n4. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]\n\nMultiply:\n\n1. \\(-6\\cdot 8\\)\n2. \\(-4(-7)\\)\n3. \\(9(-7)\\)\n4. \\(5\\cdot 12\\)\n\n1. Answer\n2. \\(-48\\) \\(28\\) \\(-63\\) \\(60\\)\n\nMultiply:\n\n1. \\(-8\\cdot 7\\)\n2. \\(-6(-9)\\)\n3. \\(7(-4)\\)\n4. \\(3\\cdot 13\\)\n\n1. Answer\n2. \\(-56\\) \\(54\\) \\(-28\\) \\(39\\)\n\nWhen we multiply a number by $1$ , the result is the same number. What happens when we multiply a number by $\u22121$ ? Let\u2019s multiply a positive number and then a negative number by $\u22121$ to see what we get.\n\n\\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\] Each time we multiply a number by \\(\u22121\\), we get its opposite!\n\nMULTIPLICATION BY \u22121\n\n$$\n\u22121a=\u2212a\n$$\n\nMultiplying a number by $\u22121$ gives its opposite.\n\nMultiply:\n\n1. \\(-1 \\cdot 7\\)\n2. \\(-1(-11)\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]\n\nMultiply:\n\n1. \\(-1\\cdot 9\\)\n2. \\(-1\\cdot(-17)\\)\n\n1. Answer\n2. \\(-9\\) \\(17\\)\n\nMultiply:\n\n1. \\(-1\\cdot 8\\)\n2. \\(-1\\cdot(-16)\\)\n\n1. Answer\n2. \\(-8\\) \\(16\\)\n\n## Divide Integers\n\nWhat about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.\n\n$$\n\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\n$$\n\nDivision follows the same rules as multiplication!\n\nFor division of two signed numbers, when the:\n\n- signs are the same , the quotient is positive .\n- signs are different , the quotient is negative .\n\nAnd remember that we can always check the answer of a division problem by multiplying.\n\nFor multiplication and division of two signed numbers:\n\n- If the signs are the same, the result is positive.\n- If the signs are different, the result is negative.\n\n
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          \n\n
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          \n\n1. \\(-27\\div 3\\)\n2. \\(-100\\div (-4)\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]\n\nDivide:\n\n1. \\(-42\\div 6\\)\n2. \\(-117\\div (-3)\\)\n\n1. Answer\n2. \\(-7\\) \\(39\\)\n\nDivide:\n\n1. \\(-63\\div 7\\)\n2. \\(-115\\div (-5)\\)\n\n1. Answer\n2. \\(-9\\) \\(23\\)\n\n## Simplify Expressions with Integers\n\nWhat happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?\n\nLet\u2019s try some examples. We\u2019ll simplify expressions that use all four operations with integers\u2014addition, subtraction, multiplication, and division. Remember to follow the order of operations.\n\nSimplify:\n\n$7(-2)+4(-7)-6$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\n$$\n\nSimplify:\n\n$8(-3)+5(-7)-4$\n\n1. Answer\n2. $-63$\n\nSimplify:\n\n$9(-3)+7(-8)-1$\n\n1. Answer\n2. $-84$\n\nSimplify:\n\n1. \\((-2)^{4}\\)\n2. \\(-2^{4}\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]\n\nNotice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the $(\u22122)$ to the $4^{th}$ power. In part (2), the exponent means to raise just the $2$ to the $4^{th}$ power and then take the opposite.\n\nSimplify:\n\n1. \\((-3)^{4}\\)\n2. \\(-3^{4}\\)\n\n1. Answer\n2. \\(81\\) \\(-81\\)\n\nSimplify:\n\n1. \\((-7)^{2}\\)\n2. \\(-7^{2}\\)\n\n1. Answer\n2. \\(49\\) \\(-49\\)\n\nThe next example reminds us to simplify inside parentheses first.\n\nSimplify:\n\n$12-3(9 - 12)$\n\nSolution\n\n$$\n\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\n$$\n\nSimplify:\n\n$17 - 4(8 - 11)$\n\n1. Answer\n2. $29$\n\nSimplify:\n\n$16 - 6(7 - 13)$\n\n1. Answer\n2. $52$\n\nSimplify:\n\n$8(-9)\\div (-2)^{3}$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\n$$\n\nSimplify:\n\n$12(-9)\\div (-3)^{3}$\n\n1. Answer\n2. $4$\n\nSimplify:\n\n$18(-4)\\div (-2)^{3}$\n\n1. Answer\n2. $9$\n\nSimplify:\n\n$-30\\div 2 + (-3)(-7)$\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\n$$\n\nSimplify:\n\n$-27\\div 3 + (-5)(-6)$\n\n1. Answer\n2. $21$\n\nSimplify:\n\n$-32\\div 4 + (-2)(-7)$\n\n1. Answer\n2. $6$\n\n## Evaluate Variable Expressions with Integers\n\nRemember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.\n\nWhen $n=\u22125$ , evaluate:\n\n1. \\(n+1\\)\n2. \\(\u2212n+1\\).\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1\u00a0\\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{-\u00a0{\\color{red}{(-5)}}\u00a0+1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]\n\nWhen $n=\u22128$ , evaluate:\n\n1. \\(n+2\\)\n2. \\(\u2212n+2\\).\n\n1. Answer\n2. \\(-6\\) \\(10\\)\n\nWhen $y=\u22129$ , evaluate:\n\n1. \\(y+8\\)\n2. \\(\u2212y+8\\).\n\n1. Answer\n2. \\(-1\\) \\(17\\)\n\nEvaluate $(x+y)^{2}$ when $x = -18$ and $y = 24$ .\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\n$$\n\nEvaluate $(x+y)^{2}$ when $x = -15$ and $y = 29$ .\n\n1. Answer\n2. $196$\n\nEvaluate $(x+y)^{3}$ when $x = -8$ and $y = 10$ .\n\n1. Answer\n2. $8$\n\nEvaluate $20 -z$ when\n\n1. \\(z = 12\\)\n2. \\(z = -12\\)\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]\n\nEvaluate $17 - k$ when\n\n1. \\(k = 19\\)\n2. \\(k = -19\\)\n\n1. Answer\n2. \\(-2\\) \\(36\\)\n\nEvaluate $-5 - b$ when\n\n1. \\(b = 14\\)\n2. \\(b = -14\\)\n\n1. Answer\n2. \\(-19\\) \\(9\\)\n\nEvaluate:\n\n$2x^{2} + 3x + 8$ when $x = 4$ .\n\nSolution\n\nSubstitute $4$ for $x$ . Use parentheses to show multiplication.\n\n$$\n\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\n$$\n\nEvaluate:\n\n$3x^{2} - 2x + 6$ when $x =-3$ .\n\n1. Answer\n2. $39$\n\nEvaluate:\n\n$4x^{2} - x - 5$ when $x = -2$ .\n\n1. Answer\n2. $13$\n\n## Translate Phrases to Expressions with Integers\n\nOur earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.\n\nTranslate and simplify: the sum of $8$ and $\u221212$ , increased by $3$ .\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\n$$\n\nTranslate and simplify: the sum of $9$ and $\u221216$ , increased by $4$ .\n\n1. Answer\n2. $(9 + (-16)) + 4 - 3$\n\nTranslate and simplify: the sum of $-8$ and $\u221212$ , increased by $7$ .\n\n1. Answer\n2. $(-8 + (-12)) + 7 - 13$\n\nWhen we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.\n\n| \\(a\u2212b\\) |\n|---|\n| \\(a\\) minus \\(b\\) |\n\nBe careful to get a and b in the right order!\n\nTranslate and then simplify\n\n1. the difference of \\(13\\) and \\(\u221221\\)\n2. subtract \\(24\\) from \\(\u221219\\).\n\nSolution\n\n1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]\n2. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]\n\nTranslate and simplify\n\n1. the difference of \\(14\\) and \\(\u221223\\)\n2. subtract \\(21\\) from \\(\u221217\\).\n\n1. Answer\n2. \\(14 - (-23); 37\\) \\(-17 - 21; -38\\)\n\nTranslate and simplify\n\n1. the difference of \\(11\\) and \\(\u221219\\)\n2. subtract \\(18\\) from \\(\u221211\\).\n\n1. Answer\n2. \\(11 - (-19); 30\\) \\(-11 - 18; -29\\)\n\nOnce again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is \u201c product \u201d and for division is \u201c quotient.\u201d\n\nTranslate to an algebraic expression and simplify if possible: the product of $\u22122$ and $14$ .\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\n$$\n\nTranslate to an algebraic expression and simplify if possible: the product of $\u22125$ and $12$ .\n\n1. Answer\n2. $-5(12); -60$\n\nTranslate to an algebraic expression and simplify if possible: the product of $8$ and $-13$ .\n\n1. Answer\n2. $-8(13); -104$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of $\u221256$ and $\u22127$ .\n\nSolution\n\n$$\n\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\n$$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of $\u221263$ and $\u22129$ .\n\n1. Answer\n2. $-63\\div (-9); 7$\n\nTranslate to an algebraic expression and simplify if possible: the quotient of $\u221272$ and $\u22129$ .\n\n1. Answer\n2. $-72\\div (-9); 8$\n\n## Use Integers in Applications\n\nWe\u2019ll outline a plan to solve applications. It\u2019s hard to find something if we don\u2019t know what we\u2019re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we\u2019ll write a phrase that gives the information to find it. We\u2019ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.\n\nHow to Apply a Strategy to Solve Applications with Integers\n\nThe temperature in Urbana, Illinois one morning was $11$ degrees. By mid-afternoon, the temperature had dropped to $\u22129$ degrees. What was the difference of the morning and afternoon temperatures?\n\nSolution\n\n| Step 1 | |\n|---|---|\n| Step 2 | the difference of the morning and afternoon temperatures |\n| Step 3 | the difference of \\(11\\) and \\(-9\\) |\n| Step 4. | \\(11 - (-9)\\) |\n| Step 5 | \\(20\\) |\n| Step 6 | The difference in temperatures was 20 degrees. |\n\nThe temperature in Anchorage, Alaska one morning was $15$ degrees. By mid-afternoon the temperature had dropped to $30$ degrees below zero. What was the difference in the morning and afternoon temperatures?\n\n1. Answer\n2. The difference in temperatures was $45$ degrees.\n\nThe temperature in Denver was $\u22126$ degrees at lunchtime. By sunset the temperature had dropped to $\u221215$ degrees. What was the difference in the lunchtime and sunset temperatures?\n\n1. Answer\n2. The difference in temperatures was $9$ degrees.\n\n1. Read the problem. Make sure all the words and ideas are understood\n2. Identify what we are asked to find.\n3. Write a phrase that gives the information to find it.\n4. Translate the phrase to an expression.\n5. Simplify the expression.\n6. Answer the question with a complete sentence.\n\nThe Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?\n\nSolution\n\n| Step 1 | |\n|---|---|\n| Step 2 | the number of yards lost |\n| Step 3 | three times a \\(15\\)-yard penalty |\n| Step 4. | \\(3(-15)\\) |\n| Step 5 | \\(-45\\) |\n| Step 6 | The team lost \\(45\\) yards. |\n\nThe Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of $15$ yards. What is the number of yards lost due to penalties?\n\n1. Answer\n2. The Bears lost $105$ yards.\n\nBill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?\n\n1. Answer\n2. A $16 fee was deducted from his checking account.\n\n## Key Concepts\n\n- Multiplication and Division of Two Signed Numbers Same signs\u2014Product is positive Different signs\u2014Product is negative\n- Strategy for Applications Identify what you are asked to find. Write a phrase that gives the information to find it. Translate the phrase to an expression. Simplify the expression. Answer the question with a complete sentence.\n", "html": "\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n 1.5: Multiply and Divide Integers - Mathematics LibreTexts\n\n\n \n\n \n\n\n \n\n\n \n \n\n\n \n\n\n\n\n\n\nSkip to main content
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \"Library
                                                          \n
                                                          \n\n
                                                           
                                                          \n\n
                                                          \n
                                                          \n\n\n\n
                                                          \n

                                                          Search

                                                          \n\n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n\n
                                                           
                                                          \n
                                                          \n\n
                                                          \n

                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Text Color

                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Text Size

                                                          \n
                                                          \n\n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Margin Size

                                                          \n
                                                          \n\n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n

                                                          Font Type

                                                          \n
                                                          \n\n
                                                          Enable Dyslexic Font
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n\n\n\n
                                                          \n
                                                          \n
                                                          \n

                                                           

                                                          \nx
                                                          \n\n
                                                          \n

                                                          selected template will load here

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          \n
                                                          \n
                                                          \n

                                                          Error

                                                          \n
                                                          \n\n
                                                          \n

                                                          This action is not available.

                                                          \n
                                                          \n\n
                                                           
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n\n\n\n
                                                          \n\n
                                                          \n\n
                                                          \n\n\n\n\n\n
                                                          1: Foundations
                                                          MTH 098 Elementary Algebra
                                                          { "1.5E:_Exercises" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          { "1.10:_Properties_of_Real_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.11:_Systems_of_Measurement" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.1:_Prelude_to_Foundations_of_Algebra" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.2:_Introduction_to_Whole_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.3:_Use_the_Language_of_Algebra" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.4:_Add_and_Subtract_Integers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.5:_Multiply_and_Divide_Integers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.6:_Visualize_Fractions" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.7:_Add_and_Subtract_Fractions" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.8:_Decimals" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "1.9:_The_Real_Numbers" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", Chapter_1_Review_Exercises : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          { "1:_Foundations" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "2:_Solving_Linear_Equations_and_Inequalities" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "3:_Math_Models" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "4:_Graphs" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "5:_Systems_of_Linear_Equations" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "6:_Polynomials" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()", "7:_Factoring" : "property get [Map MindTouch.Deki.Logic.ExtensionProcessorQueryProvider+<>c__DisplayClass230_0.<PageSubPageProperty>b__1]()" }
                                                          Mon, 06 Jan 2020 03:19:01 GMT
                                                          1.5: Multiply and Divide Integers
                                                          30345
                                                          30345
                                                          Paul Seeburger
                                                          { }
                                                          Anonymous
                                                          Anonymous
                                                          2
                                                          false
                                                          false
                                                          [ "article:topic", "license:ccby", "showtoc:no", "transcluded:yes", "source[1]-math-15120" ]
                                                          [ "article:topic", "license:ccby", "showtoc:no", "transcluded:yes", "source[1]-math-15120" ]
                                                          https://math.libretexts.org/@app/auth/3/login?returnto=https%3A%2F%2Fmath.libretexts.org%2FUnder_Construction%2FPurgatory%2FRemixer_University%2FUsername%253A_pseeburger%2FMTH_098_Elementary_Algebra%2F1%253A_Foundations%2F1.5%253A_Multiply_and_Divide_Integers
                                                          \n\n\n\n\n\n\n\n\n\n\n\n
                                                          \n \n
                                                          \n \"Mathematics\n
                                                          \n\n \n \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n\n

                                                          \n 1.5: Multiply and Divide Integers\n

                                                          \n\n\n\n\n \n\n\n
                                                          \n
                                                          \n\n\n\n\n\n
                                                        • Page ID
                                                          30345
                                                        • \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                          \n

                                                          \\( \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash {#1}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\id}{\\mathrm{id}}\\) \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          ( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\) \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\RealPart}{\\mathrm{Re}}\\) \\( \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Argument}{\\mathrm{Arg}}\\) \\( \\newcommand{\\norm}[1]{\\| #1 \\|}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\id}{\\mathrm{id}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\kernel}{\\mathrm{null}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\range}{\\mathrm{range}\\,}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\RealPart}{\\mathrm{Re}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\ImaginaryPart}{\\mathrm{Im}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Argument}{\\mathrm{Arg}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\norm}[1]{\\| #1 \\|}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\inner}[2]{\\langle #1, #2 \\rangle}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\Span}{\\mathrm{span}}\\) \\( \\newcommand{\\AA}{\\unicode[.8,0]{x212B}}\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorA}[1]{\\vec{#1}}      % arrow\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorAt}[1]{\\vec{\\text{#1}}}      % arrow\\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorB}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorC}[1]{\\textbf{#1}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorD}[1]{\\overrightarrow{#1}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectorDt}[1]{\\overrightarrow{\\text{#1}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vectE}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash{\\mathbf {#1}}}} \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecs}[1]{\\overset { \\scriptstyle \\rightharpoonup} {\\mathbf{#1}} } \\)

                                                          \n\n

                                                          \\( \\newcommand{\\vecd}[1]{\\overset{-\\!-\\!\\rightharpoonup}{\\vphantom{a}\\smash {#1}}} \\)

                                                          \n\\(\\newcommand{\\avec}{\\mathbf a}\\) \\(\\newcommand{\\bvec}{\\mathbf b}\\) \\(\\newcommand{\\cvec}{\\mathbf c}\\) \\(\\newcommand{\\dvec}{\\mathbf d}\\) \\(\\newcommand{\\dtil}{\\widetilde{\\mathbf d}}\\) \\(\\newcommand{\\evec}{\\mathbf e}\\) \\(\\newcommand{\\fvec}{\\mathbf f}\\) \\(\\newcommand{\\nvec}{\\mathbf n}\\) \\(\\newcommand{\\pvec}{\\mathbf p}\\) \\(\\newcommand{\\qvec}{\\mathbf q}\\) \\(\\newcommand{\\svec}{\\mathbf s}\\) \\(\\newcommand{\\tvec}{\\mathbf t}\\) \\(\\newcommand{\\uvec}{\\mathbf u}\\) \\(\\newcommand{\\vvec}{\\mathbf v}\\) \\(\\newcommand{\\wvec}{\\mathbf w}\\) \\(\\newcommand{\\xvec}{\\mathbf x}\\) \\(\\newcommand{\\yvec}{\\mathbf y}\\) \\(\\newcommand{\\zvec}{\\mathbf z}\\) \\(\\newcommand{\\rvec}{\\mathbf r}\\) \\(\\newcommand{\\mvec}{\\mathbf m}\\) \\(\\newcommand{\\zerovec}{\\mathbf 0}\\) \\(\\newcommand{\\onevec}{\\mathbf 1}\\) \\(\\newcommand{\\real}{\\mathbb R}\\) \\(\\newcommand{\\twovec}[2]{\\left[\\begin{array}{r}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\ctwovec}[2]{\\left[\\begin{array}{c}#1 \\\\ #2 \\end{array}\\right]}\\) \\(\\newcommand{\\threevec}[3]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\cthreevec}[3]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\end{array}\\right]}\\) \\(\\newcommand{\\fourvec}[4]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\cfourvec}[4]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\end{array}\\right]}\\) \\(\\newcommand{\\fivevec}[5]{\\left[\\begin{array}{r}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\cfivevec}[5]{\\left[\\begin{array}{c}#1 \\\\ #2 \\\\ #3 \\\\ #4 \\\\ #5 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\mattwo}[4]{\\left[\\begin{array}{rr}#1 \\amp #2 \\\\ #3 \\amp #4 \\\\ \\end{array}\\right]}\\) \\(\\newcommand{\\laspan}[1]{\\text{Span}\\{#1\\}}\\) \\(\\newcommand{\\bcal}{\\cal B}\\) \\(\\newcommand{\\ccal}{\\cal C}\\) \\(\\newcommand{\\scal}{\\cal S}\\) \\(\\newcommand{\\wcal}{\\cal W}\\) \\(\\newcommand{\\ecal}{\\cal E}\\) \\(\\newcommand{\\coords}[2]{\\left\\{#1\\right\\}_{#2}}\\) \\(\\newcommand{\\gray}[1]{\\color{gray}{#1}}\\) \\(\\newcommand{\\lgray}[1]{\\color{lightgray}{#1}}\\) \\(\\newcommand{\\rank}{\\operatorname{rank}}\\) \\(\\newcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\col}{\\text{Col}}\\) \\(\\renewcommand{\\row}{\\text{Row}}\\) \\(\\newcommand{\\nul}{\\text{Nul}}\\) \\(\\newcommand{\\var}{\\text{Var}}\\) \\(\\newcommand{\\corr}{\\text{corr}}\\) \\(\\newcommand{\\len}[1]{\\left|#1\\right|}\\) \\(\\newcommand{\\bbar}{\\overline{\\bvec}}\\) \\(\\newcommand{\\bhat}{\\widehat{\\bvec}}\\) \\(\\newcommand{\\bperp}{\\bvec^\\perp}\\) \\(\\newcommand{\\xhat}{\\widehat{\\xvec}}\\) \\(\\newcommand{\\vhat}{\\widehat{\\vvec}}\\) \\(\\newcommand{\\uhat}{\\widehat{\\uvec}}\\) \\(\\newcommand{\\what}{\\widehat{\\wvec}}\\) \\(\\newcommand{\\Sighat}{\\widehat{\\Sigma}}\\) \\(\\newcommand{\\lt}{<}\\) \\(\\newcommand{\\gt}{>}\\) \\(\\newcommand{\\amp}{&}\\) \\(\\definecolor{fillinmathshade}{gray}{0.9}\\)
                                                          \n
                                                          \n \n \n
                                                          \n
                                                          \n\t\t\t\t
                                                          \n
                                                          Learning Objectives
                                                          \n\n

                                                          By the end of this section, you will be able to:

                                                          \n\n
                                                            \n
                                                          • Multiply integers
                                                          • \n
                                                          • Divide integers
                                                          • \n
                                                          • Simplify expressions with integers
                                                          • \n
                                                          • Evaluate variable expressions with integers
                                                          • \n
                                                          • Translate English phrases to algebraic expressions
                                                          • \n
                                                          • Use integers in applications
                                                          • \n
                                                          \n
                                                          \n\n

                                                          A more thorough introduction to the topics covered in this section can be found in the Prealgebra chapter, Integers.

                                                          \n\n

                                                          Multiply Integers

                                                          \n\n

                                                          Since multiplication is mathematical shorthand for repeated addition, our model can easily be applied to show multiplication of integers. Let’s look at this concrete model to see what patterns we notice. We will use the same examples that we used for addition and subtraction. Here, we will use the model just to help us discover the pattern.

                                                          \n\n

                                                          We remember that \\(a\\cdot b\\) means add \\(a,\\, b\\) times. Here, we are using the model just to help us discover the pattern.

                                                          \n\n
                                                          \"Two\n
                                                          Figure \\(\\PageIndex{1}\\)
                                                          \n
                                                          \n\n

                                                          The next two examples are more interesting.

                                                          \n\n

                                                          What does it mean to multiply \\(5\\) by \\(−3\\)? It means subtract \\(5, 3\\) times. Looking at subtraction as “taking away,” it means to take away \\(5, 3\\) times. But there is nothing to take away, so we start by adding neutral pairs on the workspace. Then we take away \\(5\\) three times.

                                                          \n\n
                                                          \"This\n
                                                          Figure \\(\\PageIndex{2}\\)
                                                          \n
                                                          \n\n

                                                          In summary:

                                                          \n\n

                                                          \\[\\begin{array} {ll} {5 \\cdot 3 = 15} &{-5(3) = -15} \\\\ {5(-3) = -15} &{(-5)(-3) = 15} \\end{array}\\]

                                                          \n\n

                                                          Notice that for multiplication of two signed numbers, when the:

                                                          \n\n
                                                            \n
                                                          • signs are the same, the product is positive.
                                                          • \n
                                                          • signs are different, the product is negative.
                                                          • \n
                                                          \n\n

                                                          We’ll put this all together in the chart below.

                                                          \n\n
                                                          \n
                                                          MULTIPLICATION OF SIGNED NUMBERS
                                                          \n\n

                                                          For multiplication of two signed numbers:

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Same signsProductExample
                                                          Two positivesPositive\\(7\\cdot 4 = 28\\)
                                                          Two negativesPositive\\(-8(-6) = 48\\)
                                                          Table \\(\\PageIndex{1}\\)
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Different signsProductExample
                                                          Positives \\(\\cdot\\) negativeNegative\\(7(-9) = -63\\)
                                                          Negative \\(\\cdot\\) positivesNegative\\(-5\\cdot 10= -50\\)
                                                          Table \\(\\PageIndex{2}\\)
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{1}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-9\\cdot 3\\)
                                                          2. \n
                                                          3. \\(-2(-5)\\)
                                                          4. \n
                                                          5. \\(4(-8)\\)
                                                          6. \n
                                                          7. \\(7\\cdot 6\\)
                                                          8. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-9\\cdot 3} \\\\ {\\text{Multiply, noting that the signs are different, so the product is negative.}} &{-27} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-2(-5)} \\\\ {\\text{Multiply, noting that the signs are same, so the product is positive.}} &{10} \\end{array}\\]
                                                          4. \n
                                                          5. \\[\\begin{array} {ll} {} &{4(-8)} \\\\ {\\text{Multiply, with different signs.}} &{-32} \\end{array}\\]
                                                          6. \n
                                                          7. \\[\\begin{array} {ll} {} &{7\\cdot 6} \\\\ {\\text{Multiply, with different signs.}} &{42} \\end{array}\\]
                                                          8. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{2}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-6\\cdot 8\\)
                                                          2. \n
                                                          3. \\(-4(-7)\\)
                                                          4. \n
                                                          5. \\(9(-7)\\)
                                                          6. \n
                                                          7. \\(5\\cdot 12\\)
                                                          8. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-48\\)
                                                          2. \n
                                                          3. \\(28\\)
                                                          4. \n
                                                          5. \\(-63\\)
                                                          6. \n
                                                          7. \\(60\\)
                                                          8. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{3}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-8\\cdot 7\\)
                                                          2. \n
                                                          3. \\(-6(-9)\\)
                                                          4. \n
                                                          5. \\(7(-4)\\)
                                                          6. \n
                                                          7. \\(3\\cdot 13\\)
                                                          8. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-56\\)
                                                          2. \n
                                                          3. \\(54\\)
                                                          4. \n
                                                          5. \\(-28\\)
                                                          6. \n
                                                          7. \\(39\\)
                                                          8. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          When we multiply a number by \\(1\\), the result is the same number. What happens when we multiply a number by \\(−1\\)? Let’s multiply a positive number and then a negative number by \\(−1\\) to see what we get.

                                                          \n\n

                                                          \\[\\begin{array} {lll} {} &{-1\\cdot 4} &{-1(-3)}\\\\ {\\text{Multiply.}} &{-4} &{3} \\\\ {} &{-4\\text{ is the opposite of 4.}} &{3\\text{ is the opposite of } -3} \\end{array}\\]
                                                          \nEach time we multiply a number by \\(−1\\), we get its opposite!

                                                          \n\n
                                                          \n
                                                           
                                                          \n\n

                                                          MULTIPLICATION BY −1

                                                          \n\n

                                                          \\[−1a=−a\\]

                                                          \n\n

                                                          Multiplying a number by \\(−1\\) gives its opposite.

                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{4}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1 \\cdot 7\\)
                                                          2. \n
                                                          3. \\(-1(-11)\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-1\\cdot 7} \\\\ {\\text{Multiply, noting that the signs are different}} &{-7} \\\\ {\\text{so the product is negative.}} &{-7\\text{ is the opposite of 7.}} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-1(-11)} \\\\ {\\text{Multiply, noting that the signs are different}} &{11} \\\\ {\\text{so the product is positive.}} &{11\\text{ is the opposite of -11.}} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{5}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1\\cdot 9\\)
                                                          2. \n
                                                          3. \\(-1\\cdot(-17)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-9\\)
                                                          2. \n
                                                          3. \\(17\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{6}\\)
                                                          \n\n

                                                          Multiply:

                                                          \n\n
                                                            \n
                                                          1. \\(-1\\cdot 8\\)
                                                          2. \n
                                                          3. \\(-1\\cdot(-16)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-8\\)
                                                          2. \n
                                                          3. \\(16\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Divide Integers

                                                          \n\n

                                                          What about division? Division is the inverse operation of multiplication. So, \\(15\\div 3=5\\) because \\(5 \\cdot 3 = 15\\). In words, this expression says that \\(15\\) can be divided into three groups of five each because adding five three times gives \\(15\\). Look at some examples of multiplying integers, to figure out the rules for dividing integers.

                                                          \n\n

                                                          \\[\\begin{array} {ll} {5\\cdot 3 = 15\\text{ so }15\\div 3 = 5} &{-5(3) = -15\\text{ so }-15\\div 3 = -5} \\\\ {(-5)(-3) = 15\\text{ so }15\\div (-3) = -5} &{5(-3) = -15\\text{ so }-15\\div (-3) = 5} \\end{array}\\]

                                                          \n\n

                                                          Division follows the same rules as multiplication!

                                                          \n\n

                                                          For division of two signed numbers, when the:

                                                          \n\n
                                                            \n
                                                          • signs are the same, the quotient is positive.
                                                          • \n
                                                          • signs are different, the quotient is negative.
                                                          • \n
                                                          \n\n

                                                          And remember that we can always check the answer of a division problem by multiplying.

                                                          \n\n
                                                          \n
                                                          MULTIPLICATION AND DIVISION OF SIGNED NUMBERS
                                                          \n\n

                                                          For multiplication and division of two signed numbers:

                                                          \n\n
                                                            \n
                                                          • If the signs are the same, the result is positive.
                                                          • \n
                                                          • If the signs are different, the result is negative.
                                                          • \n
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Same signsResult
                                                          Two positivesPositive
                                                          Two negativesPositive
                                                          If the signs are the same, the result is positive.
                                                          Table \\(\\PageIndex{3}\\)
                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Different signsResult
                                                          Positive and negativeNegative
                                                          Negative and positiveNegative
                                                          If the signs are different, the result is negative.
                                                          Table \\(\\PageIndex{4}\\)
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{7}\\)
                                                          \n\n
                                                            \n
                                                          1. \\(-27\\div 3\\)
                                                          2. \n
                                                          3. \\(-100\\div (-4)\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{-27 \\div 3} \\\\ {\\text{Divide, with different signs, the quotient is}} &{-9} \\\\ {\\text{negative.}} &{} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-100 \\div (-4)} \\\\ {\\text{Divide, with signs that are the same the}} &{25} \\\\ {\\text{ quotient is negative.}} &{} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{8}\\)
                                                          \n\n

                                                          Divide:

                                                          \n\n
                                                            \n
                                                          1. \\(-42\\div 6\\)
                                                          2. \n
                                                          3. \\(-117\\div (-3)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-7\\)
                                                          2. \n
                                                          3. \\(39\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{9}\\)
                                                          \n\n

                                                          Divide:

                                                          \n\n
                                                            \n
                                                          1. \\(-63\\div 7\\)
                                                          2. \n
                                                          3. \\(-115\\div (-5)\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-9\\)
                                                          2. \n
                                                          3. \\(23\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Simplify Expressions with Integers

                                                          \n\n

                                                          What happens when there are more than two numbers in an expression? The order of operations still applies when negatives are included. Remember My Dear Aunt Sally?

                                                          \n\n

                                                          Let’s try some examples. We’ll simplify expressions that use all four operations with integers—addition, subtraction, multiplication, and division. Remember to follow the order of operations.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{10}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(7(-2)+4(-7)-6\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{7(-2)+4(-7)-6} \\\\ {\\text{Multiply first.}} &{-14+(-28)-6} \\\\ {\\text{Add.}} &{-42-6} \\\\{\\text{Subtract}} &{-48} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{11}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(8(-3)+5(-7)-4\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-63\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{12}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(9(-3)+7(-8)-1\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-84\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{13}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-2)^{4}\\)
                                                          2. \n
                                                          3. \\(-2^{4}\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{(-2)^{4}} \\\\ {\\text{Write in expanded form.}} &{(-2)(-2)(-2)(-2)} \\\\ {\\text{Multiply}} &{4(-2)(-2)} \\\\{\\text{Multiply}} &{-8(-2)} \\\\{\\text{Multiply}} &{16} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{-2^{4}} \\\\ {\\text{Write in expanded form. We are asked to find the opposite of }2^{4}.} &{-(2\\cdot 2\\cdot 2 \\cdot 2)} \\\\ {\\text{Multiply}} &{-(4\\cdot 2\\cdot 2)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Multiply}} &{-16} \\end{array}\\]
                                                          4. \n
                                                          \n\n

                                                          Notice the difference in parts (1) and (2). In part (1), the exponent means to raise what is in the parentheses, the \\((−2)\\) to the \\(4^{th}\\) power. In part (2), the exponent means to raise just the \\(2\\) to the \\(4^{th}\\) power and then take the opposite.

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{14}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-3)^{4}\\)
                                                          2. \n
                                                          3. \\(-3^{4}\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(81\\)
                                                          2. \n
                                                          3. \\(-81\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{15}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n
                                                            \n
                                                          1. \\((-7)^{2}\\)
                                                          2. \n
                                                          3. \\(-7^{2}\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(49\\)
                                                          2. \n
                                                          3. \\(-49\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          The next example reminds us to simplify inside parentheses first.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{16}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(12-3(9 - 12)\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {llll} {} &{12-3(9 - 12)} \\\\ {\\text{Subtract parentheses first}} &{12-3(-3)} \\\\ {\\text{Multiply.}} &{12-(-9)} \\\\{\\text{Multiply}} &{-(8\\cdot 2)} \\\\{\\text{Subtract}} &{21} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{17}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(17 - 4(8 - 11)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(29\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{18}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(16 - 6(7 - 13)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(52\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{19}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(8(-9)\\div (-2)^{3}\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{8(-9)\\div(-2)^{3}} \\\\ {\\text{Exponents first}} &{8(-9)\\div(-8)} \\\\ {\\text{Multiply.}} &{-72\\div (-8)} \\\\{\\text{Divide}} &{9} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{20}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(12(-9)\\div (-3)^{3}\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(4\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{21}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(18(-4)\\div (-2)^{3}\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(9\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{22}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-30\\div 2 + (-3)(-7)\\)

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{-30\\div 2 + (-3)(-7)} \\\\ {\\text{Multiply and divide left to right, so divide first.}} &{-15+(-3)(-7)} \\\\ {\\text{Multiply.}} &{-15+ 21} \\\\{\\text{Add}} &{6} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{23}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-27\\div 3 + (-5)(-6)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(21\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{24}\\)
                                                          \n\n

                                                          Simplify:

                                                          \n\n

                                                          \\(-32\\div 4 + (-2)(-7)\\)

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(6\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Evaluate Variable Expressions with Integers

                                                          \n\n

                                                          Remember that to evaluate an expression means to substitute a number for the variable in the expression. Now we can use negative numbers as well as positive numbers.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{25}\\)
                                                          \n\n

                                                          When \\(n=−5\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(n+1\\)
                                                          2. \n
                                                          3. \\(−n+1\\).
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{\\color{red}{-5}}+1 \\\\ {\\text{Simplify.}} &{-4} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{n+ 1} \\\\ {\\text{Substitute }{ \\color{red}{-5}}\\text{ for } n} &{- {\\color{red}{(-5)}} +1} \\\\ {\\text{Simplify.}} &{5+1} \\\\{\\text{Add.}} &{6} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{26}\\)
                                                          \n\n

                                                          When \\(n=−8\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(n+2\\)
                                                          2. \n
                                                          3. \\(−n+2\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-6\\)
                                                          2. \n
                                                          3. \\(10\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{27}\\)
                                                          \n\n

                                                          When \\(y=−9\\), evaluate:

                                                          \n\n
                                                            \n
                                                          1. \\(y+8\\)
                                                          2. \n
                                                          3. \\(−y+8\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-1\\)
                                                          2. \n
                                                          3. \\(17\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{28}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -18\\) and \\(y = 24\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{(x+y)^{2}} \\\\ {\\text{Substitute }-18\\text{ for }x \\text{ and } 24 \\text{ for } y} &{(-18 + 24)^{2}} \\\\ {\\text{Add inside parentheses}} &{(6)^{2}} \\\\{\\text{Simplify.}} &{36} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{29}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{2}\\) when \\(x = -15\\) and \\(y = 29\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(196\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{30}\\)
                                                          \n\n

                                                          Evaluate \\((x+y)^{3}\\) when \\(x = -8\\) and \\(y = 10\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(8\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{31}\\)
                                                          \n\n

                                                          Evaluate \\(20 -z \\) when

                                                          \n\n
                                                            \n
                                                          1. \\(z = 12\\)
                                                          2. \n
                                                          3. \\(z = -12\\)
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }12\\text{ for }z.} &{20 - 12} \\\\ {\\text{Subtract}} &{8} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &{20 - z} \\\\ {\\text{Substitute }-12\\text{ for }z.} &{20 - (-12)} \\\\ {\\text{Subtract}} &{32} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{32}\\)
                                                          \n\n

                                                          Evaluate \\(17 - k\\) when

                                                          \n\n
                                                            \n
                                                          1. \\(k = 19\\)
                                                          2. \n
                                                          3. \\(k = -19\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-2\\)
                                                          2. \n
                                                          3. \\(36\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{33}\\)
                                                          \n\n

                                                          Evaluate \\(-5 - b\\) when

                                                          \n\n
                                                            \n
                                                          1. \\(b = 14\\)
                                                          2. \n
                                                          3. \\(b = -14\\)
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(-19\\)
                                                          2. \n
                                                          3. \\(9\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{34}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(2x^{2} + 3x + 8\\) when \\(x = 4\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          Substitute \\(4\\) for \\(x\\). Use parentheses to show multiplication.

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{2x^{2} + 3x + 8} \\\\ {\\text{Substitute }} &{2(4)^{2} + 3(4) + 8} \\\\ {\\text{Evaluate exponents.}} &{2(16) + 3(4) + 8} \\\\ {\\text{Multiply.}} &{32 + 12 + 8} \\\\{\\text{Add.}} &{52} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{35}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(3x^{2} - 2x + 6\\) when \\(x =-3\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(39\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{36}\\)
                                                          \n\n

                                                          Evaluate:

                                                          \n\n

                                                          \\(4x^{2} - x - 5\\) when \\(x = -2\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(13\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Translate Phrases to Expressions with Integers

                                                          \n\n

                                                          Our earlier work translating English to algebra also applies to phrases that include both positive and negative numbers.

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{37}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(8\\) and \\(−12\\), increased by \\(3\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{sum} \\text{of 8 and -12, increased by 3}} \\\\ {\\text{Translate.}} &{[8 + (-12)] + 3} \\\\ {\\text{Simplify. Be careful not to confuse the}} &{(-4) + 3} \\\\{\\text{brackets with an absolute value sign.}} \\\\{\\text{Add.}} &{-1} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{38}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(9\\) and \\(−16\\), increased by \\(4\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\((9 + (-16)) + 4 - 3\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{39}\\)
                                                          \n\n

                                                          Translate and simplify: the sum of \\(-8\\) and \\(−12\\), increased by \\(7\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\((-8 + (-12)) + 7 - 13\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          When we first introduced the operation symbols, we saw that the expression may be read in several ways. They are listed in the chart below.

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n
                                                          \\(a−b\\)
                                                          \\(a\\) minus \\(b\\)
                                                          \n the difference of \\(a\\) and \\(b\\)
                                                          \n \\(b\\) subtracted from \\(a\\)
                                                          \n \\(b\\) less than \\(a\\)
                                                          Table \\(\\PageIndex{5}\\)
                                                          \n\n

                                                          Be careful to get a and b in the right order!

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{40}\\)
                                                          \n\n

                                                          Translate and then simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(13\\) and \\(−21\\)
                                                          2. \n
                                                          3. subtract \\(24\\) from \\(−19\\).
                                                          4. \n
                                                          \n\n

                                                          Solution

                                                          \n\n
                                                            \n
                                                          1. \\[\\begin{array} {ll} {} &{\\text{the } \\textbf{difference } \\text{of 13 and -21}} \\\\ {\\text{Translate.}} &{13 - (-21)} \\\\ {\\text{Simplify.}} &{34} \\end{array}\\]
                                                          2. \n
                                                          3. \\[\\begin{array} {ll} {} &\\textbf{subtract }24 \\textbf{ from }-19 \\\\ {\\text{Translate.}} &{-19 - 24} \\\\ {\\text{Remember, subtract b from a means }a - b} &{} \\\\{\\text{Simplify.}} &{-43} \\end{array}\\]
                                                          4. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{41}\\)
                                                          \n\n

                                                          Translate and simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(14\\) and \\(−23\\)
                                                          2. \n
                                                          3. subtract \\(21\\) from \\(−17\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(14 - (-23); 37\\)
                                                          2. \n
                                                          3. \\(-17 - 21; -38\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{42}\\)
                                                          \n\n

                                                          Translate and simplify

                                                          \n\n
                                                            \n
                                                          1. the difference of \\(11\\) and \\(−19\\)
                                                          2. \n
                                                          3. subtract \\(18\\) from \\(−11\\).
                                                          4. \n
                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n
                                                            \n
                                                          1. \\(11 - (-19); 30\\)
                                                          2. \n
                                                          3. \\(-11 - 18; -29\\)
                                                          4. \n
                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Once again, our prior work translating English to algebra transfers to phrases that include both multiplying and dividing integers. Remember that the key word for multiplication is “product” and for division is “quotient.”

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{43}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(−2\\) and \\(14\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the product of }-2 \\text{ and } 14} \\\\ {\\text{Translate.}} &{(-2)(14)} \\\\{\\text{Simplify.}} &{-28} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{44}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(−5\\) and \\(12\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-5(12); -60\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{45}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the product of \\(8\\) and \\(-13\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-8(13); -104\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{46}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−56\\) and \\(−7\\).

                                                          \n\n

                                                          Solution

                                                          \n\n

                                                          \\[\\begin{array} {ll} {} &{\\text{the quotient of }-56 \\text{ and } -7} \\\\ {\\text{Translate.}} &{-56\\div(-7)} \\\\{\\text{Simplify.}} &{8} \\end{array}\\]

                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{47}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−63\\) and \\(−9\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-63\\div (-9); 7\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{48}\\)
                                                          \n\n

                                                          Translate to an algebraic expression and simplify if possible: the quotient of \\(−72\\) and \\(−9\\).

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          \\(-72\\div (-9); 8\\)

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Use Integers in Applications

                                                          \n\n

                                                          We’ll outline a plan to solve applications. It’s hard to find something if we don’t know what we’re looking for or what to call it! So when we solve an application, we first need to determine what the problem is asking us to find. Then we’ll write a phrase that gives the information to find it. We’ll translate the phrase into an expression and then simplify the expression to get the answer. Finally, we summarize the answer in a sentence to make sure it makes sense.

                                                          \n\n

                                                          How to Apply a Strategy to Solve Applications with Integers

                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{49}\\)
                                                          \n\n

                                                          The temperature in Urbana, Illinois one morning was \\(11\\) degrees. By mid-afternoon, the temperature had dropped to \\(−9\\) degrees. What was the difference of the morning and afternoon temperatures?

                                                          \n\n

                                                          Solution

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood. 
                                                          Step 2. Identify what we are asked to find.the difference of the morning and afternoon temperatures
                                                          Step 3. Write a phrase that gives the information to find it.the difference of \\(11\\) and \\(-9\\)
                                                          Step 4. Translate the phrase to an expression.\\(11 - (-9)\\)
                                                          Step 5. Simplify the expression.\\(20\\)
                                                          Step 6. Write a complete sentence that answers the question.The difference in temperatures was 20 degrees.
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{50}\\)
                                                          \n\n

                                                          The temperature in Anchorage, Alaska one morning was \\(15\\) degrees. By mid-afternoon the temperature had dropped to \\(30\\) degrees below zero. What was the difference in the morning and afternoon temperatures?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The difference in temperatures was \\(45\\) degrees.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{51}\\)
                                                          \n\n

                                                          The temperature in Denver was \\(−6\\) degrees at lunchtime. By sunset the temperature had dropped to \\(−15\\) degrees. What was the difference in the lunchtime and sunset temperatures?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The difference in temperatures was \\(9\\) degrees.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          APPLY A STRATEGY TO SOLVE APPLICATIONS WITH INTEGERS.
                                                          \n\n
                                                            \n
                                                          1. Read the problem. Make sure all the words and ideas are understood
                                                          2. \n
                                                          3. Identify what we are asked to find.
                                                          4. \n
                                                          5. Write a phrase that gives the information to find it.
                                                          6. \n
                                                          7. Translate the phrase to an expression.
                                                          8. \n
                                                          9. Simplify the expression.
                                                          10. \n
                                                          11. Answer the question with a complete sentence.
                                                          12. \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Example \\(\\PageIndex{52}\\)
                                                          \n\n

                                                          The Mustangs football team received three penalties in the third quarter. Each penalty gave them a loss of fifteen yards. What is the number of yards lost?

                                                          \n\n

                                                          Solution

                                                          \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                          Step 1. Read the problem. Make sure all the words and ideas are understood. 
                                                          Step 2. Identify what we are asked to find.the number of yards lost
                                                          Step 3. Write a phrase that gives the information to find it.three times a \\(15\\)-yard penalty
                                                          Step 4. Translate the phrase to an expression.\\(3(-15)\\)
                                                          Step 5. Simplify the expression.\\(-45\\)
                                                          Step 6. Write a complete sentence that answers the question.The team lost \\(45\\) yards.
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{53}\\)
                                                          \n\n

                                                          The Bears played poorly and had seven penalties in the game. Each penalty resulted in a loss of \\(15\\) yards. What is the number of yards lost due to penalties?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          The Bears lost \\(105\\) yards.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n
                                                          \n
                                                          Try It \\(\\PageIndex{54}\\)
                                                          \n\n

                                                          Bill uses the ATM on campus because it is convenient. However, each time he uses it he is charged a $2 fee. Last month he used the ATM eight times. How much was his total fee for using the ATM?

                                                          \n\n
                                                          \n
                                                          Answer
                                                          \n
                                                          \n

                                                          A $16 fee was deducted from his checking account.

                                                          \n
                                                          \n
                                                          \n
                                                          \n\n

                                                          Key Concepts

                                                          \n\n
                                                            \n
                                                          • Multiplication and Division of Two Signed Numbers\n\n
                                                              \n
                                                            • Same signs—Product is positive
                                                            • \n
                                                            • Different signs—Product is negative
                                                            • \n
                                                            \n
                                                          • \n
                                                          • Strategy for Applications\n
                                                              \n
                                                            1. Identify what you are asked to find.
                                                            2. \n
                                                            3. Write a phrase that gives the information to find it.
                                                            4. \n
                                                            5. Translate the phrase to an expression.
                                                            6. \n
                                                            7. Simplify the expression.
                                                            8. \n
                                                            9. Answer the question with a complete sentence.
                                                            10. \n
                                                            \n
                                                          • \n
                                                          \n
                                                          \n\t\t\t\t
                                                          \n\n\n\n\n
                                                          \n\n\n\n\n\n\n\n\n

                                                          1.5: Multiply and Divide Integers is shared under a CC BY license and was authored, remixed, and/or curated by LibreTexts.

                                                          \n\n\n\n\n
                                                          \n
                                                          \n\n\n
                                                          \n \n
                                                          • Was this article helpful?
                                                          \n \n \n
                                                          \n\n
                                                          \n
                                                          \n \n \n
                                                          \n
                                                          \n
                                                          \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"} diff --git a/bench/data/groundtruth/math_mathjax_mathml_1.jsonl b/bench/data/groundtruth/math_mathjax_mathml_1.jsonl index 34161cf5..8a05af8e 100644 --- a/bench/data/groundtruth/math_mathjax_mathml_1.jsonl +++ b/bench/data/groundtruth/math_mathjax_mathml_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "title", "raw_content": "

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          ", "content": {"title_content": "MathJax v3 beta: MathML input, HTML output test", "level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          \n When\n a\\ne 0, there are two solutions toa{x}^{2}+bx+c=0and they are

                                                          ", "content": [{"c": "When", "t": "text"}, {"c": "a\\ne 0", "t": "equation-inline"}, {"c": ", there are two solutions to", "t": "text"}, {"c": "a{x}^{2}+bx+c=0", "t": "equation-inline"}, {"c": "and they are", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x=\u2212b\u00b1b2\u22124ac2a.", "content": {"math_content": "x=\\frac{-b\u00b1\\sqrt{{b}^{2}-4ac}}{2a}\\text{.}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The Lorenz Equations

                                                          ", "content": {"title_content": "The Lorenz Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "x\u02d9=\u03c3(y\u2212x)y\u02d9=\u03c1x\u2212y\u2212xzz\u02d9=\u2212\u03b2z+xy", "content": {"math_content": "\\begin{array}{rl}\\stackrel{\u02d9}{x}& =\\sigma \\left(y-x\\right)\\\\ \\stackrel{\u02d9}{y}& =\\rho x-y-xz\\\\ \\stackrel{\u02d9}{z}& =-\\beta z+xy\\end{array}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The Cauchy-Schwarz Inequality

                                                          ", "content": {"title_content": "The Cauchy-Schwarz Inequality", "level": "2"}}, {"type": "equation-interline", "raw_content": "(\u2211k=1nakbk)2\u2264(\u2211k=1nak2)(\u2211k=1nbk2)", "content": {"math_content": "{\\left(\\sum _{k=1}^{n}{a}_{k}{b}_{k}\\right)}^{\\phantom{\\rule{negativethinmathspace}{0ex}}\\phantom{\\rule{negativethinmathspace}{0ex}}2}\\le \\left(\\sum _{k=1}^{n}{a}_{k}^{2}\\right)\\left(\\sum _{k=1}^{n}{b}_{k}^{2}\\right)", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          A Cross Product Formula

                                                          ", "content": {"title_content": "A Cross Product Formula", "level": "2"}}, {"type": "equation-interline", "raw_content": "V1\u00d7V2=|ijk\u2202X\u2202u\u2202Y\u2202u0\u2202X\u2202v\u2202Y\u2202v0|", "content": {"math_content": "{\\mathbf{V}}_{1}\u00d7{\\mathbf{V}}_{2}=|\\begin{array}{ccc}\\mathbf{i}& \\mathbf{j}& \\mathbf{k}\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }u}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }u}& 0\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }v}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }v}& 0\\end{array}|", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The probability of getting kheads when flippingncoins is:

                                                          ", "content": {"title_content": "The probability of getting k heads when flipping n coins is:", "level": "2"}}, {"type": "equation-interline", "raw_content": "P(E)=(nk)pk(1\u2212p)n\u2212k", "content": {"math_content": "P\\left(E\\right)=\\left(\\genfrac{}{}{0}{}{n}{k}\\right){p}^{k}\\left(1-p{\\right)}^{n-k}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          An Identity of Ramanujan

                                                          ", "content": {"title_content": "An Identity of Ramanujan", "level": "2"}}, {"type": "equation-interline", "raw_content": "1(\u03d55\u2212\u03d5)e25\u03c0=1+e\u22122\u03c01+e\u22124\u03c01+e\u22126\u03c01+e\u22128\u03c01+\u2026", "content": {"math_content": "\\frac{1}{\\left(\\sqrt{\\varphi \\sqrt{5}}-\\varphi \\right){e}^{\\frac{2}{5}\\pi }}=1+\\frac{{e}^{-2\\pi }}{1+\\frac{{e}^{-4\\pi }}{1+\\frac{{e}^{-6\\pi }}{1+\\frac{{e}^{-8\\pi }}{1+\\dots }}}}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          A Rogers-Ramanujan Identity

                                                          ", "content": {"title_content": "A Rogers-Ramanujan Identity", "level": "2"}}, {"type": "equation-interline", "raw_content": "1+q2(1\u2212q)+q6(1\u2212q)(1\u2212q2)+\u22ef=\u220fj=0\u221e1(1\u2212q5j+2)(1\u2212q5j+3),for\u00a0|q|<1.", "content": {"math_content": "1+\\frac{{q}^{2}}{\\left(1-q\\right)}+\\frac{{q}^{6}}{\\left(1-q\\right)\\left(1-{q}^{2}\\right)}+\\cdots =\\prod _{j=0}^{\\mathrm{\\infty }}\\frac{1}{\\left(1-{q}^{5j+2}\\right)\\left(1-{q}^{5j+3}\\right)},\\phantom{\\rule{1em}{0ex}}\\phantom{\\rule{1em}{0ex}}\\text{for\u00a0}|q|<1.", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          Maxwell's Equations

                                                          ", "content": {"title_content": "Maxwell's Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "\u2207\u00d7B\u2192\u22121c\u2202E\u2192\u2202t=4\u03c0cj\u2192\u2207\u22c5E\u2192=4\u03c0\u03c1\u2207\u00d7E\u2192+1c\u2202B\u2192\u2202t=0\u2192\u2207\u22c5B\u2192=0", "content": {"math_content": "\\begin{array}{rl}\\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{B}}-\\phantom{\\rule{thinmathspace}{0ex}}\\frac{1}{c}\\phantom{\\rule{thinmathspace}{0ex}}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{E}}}{\\mathrm{\\partial }t}& =\\frac{4\\pi }{c}\\stackrel{\\to }{\\mathbf{j}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{E}}& =4\\pi \\rho \\\\ \\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{E}}\\phantom{\\rule{thinmathspace}{0ex}}+\\phantom{\\rule{thinmathspace}{0ex}}\\frac{1}{c}\\phantom{\\rule{thinmathspace}{0ex}}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{B}}}{\\mathrm{\\partial }t}& =\\stackrel{\\to }{\\mathbf{0}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{B}}& =0\\end{array}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          In-line Mathematics

                                                          ", "content": {"title_content": "In-line Mathematics", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+\\left(1+x{\\right)}^{2}is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          ", "content": [{"c": "Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression", "t": "text"}, {"c": "\\sqrt{3x-1}+\\left(1+x{\\right)}^{2}", "t": "equation-inline"}, {"c": "is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.", "t": "text"}]}]], "main_html": "

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          \n When\n a\\ne 0, there are two solutions toa{x}^{2}+bx+c=0and they are

                                                          x=\u2212b\u00b1b2\u22124ac2a.

                                                          The Lorenz Equations

                                                          x\u02d9=\u03c3(y\u2212x)y\u02d9=\u03c1x\u2212y\u2212xzz\u02d9=\u2212\u03b2z+xy

                                                          The Cauchy-Schwarz Inequality

                                                          (\u2211k=1nakbk)2\u2264(\u2211k=1nak2)(\u2211k=1nbk2)

                                                          A Cross Product Formula

                                                          V1\u00d7V2=|ijk\u2202X\u2202u\u2202Y\u2202u0\u2202X\u2202v\u2202Y\u2202v0|

                                                          The probability of getting kheads when flippingncoins is:

                                                          P(E)=(nk)pk(1\u2212p)n\u2212k

                                                          An Identity of Ramanujan

                                                          1(\u03d55\u2212\u03d5)e25\u03c0=1+e\u22122\u03c01+e\u22124\u03c01+e\u22126\u03c01+e\u22128\u03c01+\u2026

                                                          A Rogers-Ramanujan Identity

                                                          1+q2(1\u2212q)+q6(1\u2212q)(1\u2212q2)+\u22ef=\u220fj=0\u221e1(1\u2212q5j+2)(1\u2212q5j+3),for\u00a0|q|<1.

                                                          Maxwell's Equations

                                                          \u2207\u00d7B\u2192\u22121c\u2202E\u2192\u2202t=4\u03c0cj\u2192\u2207\u22c5E\u2192=4\u03c0\u03c1\u2207\u00d7E\u2192+1c\u2202B\u2192\u2202t=0\u2192\u2207\u22c5B\u2192=0

                                                          In-line Mathematics

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+\\left(1+x{\\right)}^{2}is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          ", "statics": {"title": 9, "paragraph": 2, "paragraph.text": 5, "paragraph.equation-inline": 3, "equation-interline": 8}, "url": "https://mathjax.github.io/MathJax-demos-web/mml-chtml.html", "content": "# MathJax v3 beta: MathML input, HTML output test\n\nWhen $a\\ne 0$ , there are two solutions to $a{x}^{2}+bx+c=0$ and they are\n\n$$\nx=\\frac{-b\u00b1\\sqrt{{b}^{2}-4ac}}{2a}\\text{.}\n$$\n\n## The Lorenz Equations\n\n$$\n\\begin{array}{rl}\\stackrel{\u02d9}{x}& =\\sigma \\left(y-x\\right)\\\\ \\stackrel{\u02d9}{y}& =\\rho x-y-xz\\\\ \\stackrel{\u02d9}{z}& =-\\beta z+xy\\end{array}\n$$\n\n## The Cauchy-Schwarz Inequality\n\n$$\n{\\left(\\sum _{k=1}^{n}{a}_{k}{b}_{k}\\right)}^{\\phantom{\\rule{negativethinmathspace}{0ex}}\\phantom{\\rule{negativethinmathspace}{0ex}}2}\\le \\left(\\sum _{k=1}^{n}{a}_{k}^{2}\\right)\\left(\\sum _{k=1}^{n}{b}_{k}^{2}\\right)\n$$\n\n## A Cross Product Formula\n\n$$\n{\\mathbf{V}}_{1}\u00d7{\\mathbf{V}}_{2}=|\\begin{array}{ccc}\\mathbf{i}& \\mathbf{j}& \\mathbf{k}\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }u}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }u}& 0\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }v}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }v}& 0\\end{array}|\n$$\n\n## The probability of getting k heads when flipping n coins is:\n\n$$\nP\\left(E\\right)=\\left(\\genfrac{}{}{0}{}{n}{k}\\right){p}^{k}\\left(1-p{\\right)}^{n-k}\n$$\n\n## An Identity of Ramanujan\n\n$$\n\\frac{1}{\\left(\\sqrt{\\varphi \\sqrt{5}}-\\varphi \\right){e}^{\\frac{2}{5}\\pi }}=1+\\frac{{e}^{-2\\pi }}{1+\\frac{{e}^{-4\\pi }}{1+\\frac{{e}^{-6\\pi }}{1+\\frac{{e}^{-8\\pi }}{1+\\dots }}}}\n$$\n\n## A Rogers-Ramanujan Identity\n\n$$\n1+\\frac{{q}^{2}}{\\left(1-q\\right)}+\\frac{{q}^{6}}{\\left(1-q\\right)\\left(1-{q}^{2}\\right)}+\\cdots =\\prod _{j=0}^{\\mathrm{\\infty }}\\frac{1}{\\left(1-{q}^{5j+2}\\right)\\left(1-{q}^{5j+3}\\right)},\\phantom{\\rule{1em}{0ex}}\\phantom{\\rule{1em}{0ex}}\\text{for\u00a0}|q|<1.\n$$\n\n## Maxwell's Equations\n\n$$\n\\begin{array}{rl}\\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{B}}-\\phantom{\\rule{thinmathspace}{0ex}}\\frac{1}{c}\\phantom{\\rule{thinmathspace}{0ex}}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{E}}}{\\mathrm{\\partial }t}& =\\frac{4\\pi }{c}\\stackrel{\\to }{\\mathbf{j}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{E}}& =4\\pi \\rho \\\\ \\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{E}}\\phantom{\\rule{thinmathspace}{0ex}}+\\phantom{\\rule{thinmathspace}{0ex}}\\frac{1}{c}\\phantom{\\rule{thinmathspace}{0ex}}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{B}}}{\\mathrm{\\partial }t}& =\\stackrel{\\to }{\\mathbf{0}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{B}}& =0\\end{array}\n$$\n\n## In-line Mathematics\n\nFinally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+\\left(1+x{\\right)}^{2}$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.\n", "html": "\n\n\n\n \n \n \n MathJax v3 with MathML input and HTML output\n \n\n\n

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          \n

                                                          \n When\n \n a\n \n 0\n , there are two solutions to\n \n a\n \n x\n 2\n \n +\n b\n x\n +\n c\n =\n 0\n \n and they are\n \n x\n =\n \n \n \n \n b\n ±\n \n \n b\n 2\n \n \n 4\n a\n c\n \n \n \n 2\n a\n \n \n \n .\n \n

                                                          \n\n

                                                          The Lorenz Equations

                                                          \n\n \n \n \n \n \n \n x\n ˙\n \n \n \n \n \n =\n σ\n (\n y\n \n x\n )\n \n \n \n \n \n \n y\n ˙\n \n \n \n \n \n =\n ρ\n x\n \n y\n \n x\n z\n \n \n \n \n \n \n z\n ˙\n \n \n \n \n \n =\n \n β\n z\n +\n x\n y\n \n \n \n \n\n

                                                          The Cauchy-Schwarz Inequality

                                                          \n\n \n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n a\n k\n \n \n b\n k\n \n \n )\n \n \n \n \n 2\n \n \n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n a\n k\n 2\n \n \n )\n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n b\n k\n 2\n \n \n )\n \n \n

                                                          A Cross Product Formula

                                                          \n\n \n \n \n V\n \n 1\n \n ×\n \n \n V\n \n 2\n \n =\n \n |\n \n \n \n \n i\n \n \n \n \n j\n \n \n \n \n k\n \n \n \n \n \n \n \n \n X\n \n \n \n u\n \n \n \n \n \n \n \n Y\n \n \n \n u\n \n \n \n \n 0\n \n \n \n \n \n \n \n X\n \n \n \n v\n \n \n \n \n \n \n \n Y\n \n \n \n v\n \n \n \n \n 0\n \n \n \n |\n \n \n\n

                                                          The probability of getting \n k\n heads when flipping \n n\n coins is:

                                                          \n\n \n P\n (\n E\n )\n =\n \n \n \n (\n \n \n n\n k\n \n \n )\n \n \n \n \n p\n k\n \n (\n 1\n \n p\n \n )\n \n n\n \n k\n \n \n \n\n

                                                          An Identity of Ramanujan

                                                          \n\n \n \n 1\n \n (\n \n ϕ\n \n 5\n \n \n \n ϕ\n )\n \n e\n \n \n 2\n 5\n \n π\n \n \n \n \n =\n 1\n +\n \n \n e\n \n \n 2\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 4\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 6\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 8\n π\n \n \n \n 1\n +\n \n \n \n \n \n \n \n \n \n \n

                                                          A Rogers-Ramanujan Identity

                                                          \n\n \n 1\n +\n \n \n q\n 2\n \n \n (\n 1\n \n q\n )\n \n \n +\n \n \n q\n 6\n \n \n (\n 1\n \n q\n )\n (\n 1\n \n \n q\n 2\n \n )\n \n \n +\n \n =\n \n \n \n j\n =\n 0\n \n \n \n \n \n \n 1\n \n (\n 1\n \n \n q\n \n 5\n j\n +\n 2\n \n \n )\n (\n 1\n \n \n q\n \n 5\n j\n +\n 3\n \n \n )\n \n \n ,\n \n \n \n for \n \n \n |\n \n q\n \n |\n \n <\n 1\n \n \n .\n \n

                                                          Maxwell's Equations

                                                          \n\n \n \n \n \n \n ×\n \n \n \n B\n \n \n \n \n \n \n \n 1\n c\n \n \n \n \n \n \n \n \n E\n \n \n \n \n \n \n \n t\n \n \n \n \n \n =\n \n \n 4\n π\n \n c\n \n \n \n \n j\n \n \n \n \n \n \n \n \n \n \n \n \n \n E\n \n \n \n \n \n \n \n =\n 4\n π\n ρ\n \n \n \n \n \n ×\n \n \n \n E\n \n \n \n \n \n +\n \n \n 1\n c\n \n \n \n \n \n \n \n \n B\n \n \n \n \n \n \n \n t\n \n \n \n \n \n =\n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n B\n \n \n \n \n \n \n \n =\n 0\n \n \n \n \n\n

                                                          In-line Mathematics

                                                          \n\n

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \n \n 3\n x\n \n 1\n \n +\n (\n 1\n +\n x\n \n )\n 2\n \n is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          \n\n\n\n"} +{"content_list": [[{"type": "title", "raw_content": "

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          ", "content": {"title_content": "MathJax v3 beta: MathML input, HTML output test", "level": "1"}}, {"type": "paragraph", "raw_content": "

                                                          \n When\n a\\ne 0, there are two solutions toa{x}^{2}+bx+c=0and they are

                                                          ", "content": [{"c": "When", "t": "text"}, {"c": "a\\ne 0", "t": "equation-inline"}, {"c": ", there are two solutions to", "t": "text"}, {"c": "a{x}^{2}+bx+c=0", "t": "equation-inline"}, {"c": "and they are", "t": "text"}]}, {"type": "equation-interline", "raw_content": "x=\u2212b\u00b1b2\u22124ac2a.", "content": {"math_content": "x=\\frac{-b\u00b1\\sqrt{{b}^{2}-4ac}}{2a}\\text{.}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The Lorenz Equations

                                                          ", "content": {"title_content": "The Lorenz Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "x\u02d9=\u03c3(y\u2212x)y\u02d9=\u03c1x\u2212y\u2212xzz\u02d9=\u2212\u03b2z+xy", "content": {"math_content": "\\begin{array}{rl}\\stackrel{\u02d9}{x}& =\\sigma \\left(y-x\\right)\\\\ \\stackrel{\u02d9}{y}& =\\rho x-y-xz\\\\ \\stackrel{\u02d9}{z}& =-\\beta z+xy\\end{array}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The Cauchy-Schwarz Inequality

                                                          ", "content": {"title_content": "The Cauchy-Schwarz Inequality", "level": "2"}}, {"type": "equation-interline", "raw_content": "(\u2211k=1nakbk)2\u2264(\u2211k=1nak2)(\u2211k=1nbk2)", "content": {"math_content": "{\\left(\\sum _{k=1}^{n}{a}_{k}{b}_{k}\\right)}^{2}\\le \\left(\\sum _{k=1}^{n}{a}_{k}^{2}\\right)\\left(\\sum _{k=1}^{n}{b}_{k}^{2}\\right)", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          A Cross Product Formula

                                                          ", "content": {"title_content": "A Cross Product Formula", "level": "2"}}, {"type": "equation-interline", "raw_content": "V1\u00d7V2=|ijk\u2202X\u2202u\u2202Y\u2202u0\u2202X\u2202v\u2202Y\u2202v0|", "content": {"math_content": "{\\mathbf{V}}_{1}\u00d7{\\mathbf{V}}_{2}=|\\begin{array}{ccc}\\mathbf{i}& \\mathbf{j}& \\mathbf{k}\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }u}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }u}& 0\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }v}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }v}& 0\\end{array}|", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          The probability of getting kheads when flippingncoins is:

                                                          ", "content": {"title_content": "The probability of getting k heads when flipping n coins is:", "level": "2"}}, {"type": "equation-interline", "raw_content": "P(E)=(nk)pk(1\u2212p)n\u2212k", "content": {"math_content": "P\\left(E\\right)=\\left(\\genfrac{}{}{0}{}{n}{k}\\right){p}^{k}{\\left(1-p\\right)}^{n-k}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          An Identity of Ramanujan

                                                          ", "content": {"title_content": "An Identity of Ramanujan", "level": "2"}}, {"type": "equation-interline", "raw_content": "1(\u03d55\u2212\u03d5)e25\u03c0=1+e\u22122\u03c01+e\u22124\u03c01+e\u22126\u03c01+e\u22128\u03c01+\u2026", "content": {"math_content": "\\frac{1}{\\left(\\sqrt{\\varphi \\sqrt{5}}-\\varphi \\right){e}^{\\frac{2}{5}\\pi }}=1+\\frac{{e}^{-2\\pi }}{1+\\frac{{e}^{-4\\pi }}{1+\\frac{{e}^{-6\\pi }}{1+\\frac{{e}^{-8\\pi }}{1+\\dots }}}}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          A Rogers-Ramanujan Identity

                                                          ", "content": {"title_content": "A Rogers-Ramanujan Identity", "level": "2"}}, {"type": "equation-interline", "raw_content": "1+q2(1\u2212q)+q6(1\u2212q)(1\u2212q2)+\u22ef=\u220fj=0\u221e1(1\u2212q5j+2)(1\u2212q5j+3),for\u00a0|q|<1.", "content": {"math_content": "1+\\frac{{q}^{2}}{\\left(1-q\\right)}+\\frac{{q}^{6}}{\\left(1-q\\right)\\left(1-{q}^{2}\\right)}+\\cdots =\\prod _{j=0}^{\\mathrm{\\infty }}\\frac{1}{\\left(1-{q}^{5j+2}\\right)\\left(1-{q}^{5j+3}\\right)},\\text{for\u00a0}|q|<1.", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          Maxwell's Equations

                                                          ", "content": {"title_content": "Maxwell's Equations", "level": "2"}}, {"type": "equation-interline", "raw_content": "\u2207\u00d7B\u2192\u22121c\u2202E\u2192\u2202t=4\u03c0cj\u2192\u2207\u22c5E\u2192=4\u03c0\u03c1\u2207\u00d7E\u2192+1c\u2202B\u2192\u2202t=0\u2192\u2207\u22c5B\u2192=0", "content": {"math_content": "\\begin{array}{rl}\\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{B}}-\\frac{1}{c}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{E}}}{\\mathrm{\\partial }t}& =\\frac{4\\pi }{c}\\stackrel{\\to }{\\mathbf{j}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{E}}& =4\\pi \\rho \\\\ \\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{E}}+\\frac{1}{c}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{B}}}{\\mathrm{\\partial }t}& =\\stackrel{\\to }{\\mathbf{0}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{B}}& =0\\end{array}", "math_type": "mathml", "by": "mathjax"}}, {"type": "title", "raw_content": "

                                                          In-line Mathematics

                                                          ", "content": {"title_content": "In-line Mathematics", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+{\\left(1+x\\right)}^{2}is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          ", "content": [{"c": "Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression", "t": "text"}, {"c": "\\sqrt{3x-1}+{\\left(1+x\\right)}^{2}", "t": "equation-inline"}, {"c": "is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.", "t": "text"}]}]], "main_html": "

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          \n When\n a\\ne 0, there are two solutions toa{x}^{2}+bx+c=0and they are

                                                          x=\u2212b\u00b1b2\u22124ac2a.

                                                          The Lorenz Equations

                                                          x\u02d9=\u03c3(y\u2212x)y\u02d9=\u03c1x\u2212y\u2212xzz\u02d9=\u2212\u03b2z+xy

                                                          The Cauchy-Schwarz Inequality

                                                          (\u2211k=1nakbk)2\u2264(\u2211k=1nak2)(\u2211k=1nbk2)

                                                          A Cross Product Formula

                                                          V1\u00d7V2=|ijk\u2202X\u2202u\u2202Y\u2202u0\u2202X\u2202v\u2202Y\u2202v0|

                                                          The probability of getting kheads when flippingncoins is:

                                                          P(E)=(nk)pk(1\u2212p)n\u2212k

                                                          An Identity of Ramanujan

                                                          1(\u03d55\u2212\u03d5)e25\u03c0=1+e\u22122\u03c01+e\u22124\u03c01+e\u22126\u03c01+e\u22128\u03c01+\u2026

                                                          A Rogers-Ramanujan Identity

                                                          1+q2(1\u2212q)+q6(1\u2212q)(1\u2212q2)+\u22ef=\u220fj=0\u221e1(1\u2212q5j+2)(1\u2212q5j+3),for\u00a0|q|<1.

                                                          Maxwell's Equations

                                                          \u2207\u00d7B\u2192\u22121c\u2202E\u2192\u2202t=4\u03c0cj\u2192\u2207\u22c5E\u2192=4\u03c0\u03c1\u2207\u00d7E\u2192+1c\u2202B\u2192\u2202t=0\u2192\u2207\u22c5B\u2192=0

                                                          In-line Mathematics

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \\sqrt{3x-1}+{\\left(1+x\\right)}^{2}is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          ", "statics": {"title": 9, "paragraph": 2, "paragraph.text": 5, "paragraph.equation-inline": 3, "equation-interline": 8}, "url": "https://mathjax.github.io/MathJax-demos-web/mml-chtml.html", "content": "# MathJax v3 beta: MathML input, HTML output test\n\nWhen $a\\ne 0$ , there are two solutions to $a{x}^{2}+bx+c=0$ and they are\n\n$$\nx=\\frac{-b\u00b1\\sqrt{{b}^{2}-4ac}}{2a}\\text{.}\n$$\n\n## The Lorenz Equations\n\n$$\n\\begin{array}{rl}\\stackrel{\u02d9}{x}& =\\sigma \\left(y-x\\right)\\\\ \\stackrel{\u02d9}{y}& =\\rho x-y-xz\\\\ \\stackrel{\u02d9}{z}& =-\\beta z+xy\\end{array}\n$$\n\n## The Cauchy-Schwarz Inequality\n\n$$\n{\\left(\\sum _{k=1}^{n}{a}_{k}{b}_{k}\\right)}^{2}\\le \\left(\\sum _{k=1}^{n}{a}_{k}^{2}\\right)\\left(\\sum _{k=1}^{n}{b}_{k}^{2}\\right)\n$$\n\n## A Cross Product Formula\n\n$$\n{\\mathbf{V}}_{1}\u00d7{\\mathbf{V}}_{2}=|\\begin{array}{ccc}\\mathbf{i}& \\mathbf{j}& \\mathbf{k}\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }u}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }u}& 0\\\\ \\frac{\\mathrm{\\partial }X}{\\mathrm{\\partial }v}& \\frac{\\mathrm{\\partial }Y}{\\mathrm{\\partial }v}& 0\\end{array}|\n$$\n\n## The probability of getting k heads when flipping n coins is:\n\n$$\nP\\left(E\\right)=\\left(\\genfrac{}{}{0}{}{n}{k}\\right){p}^{k}{\\left(1-p\\right)}^{n-k}\n$$\n\n## An Identity of Ramanujan\n\n$$\n\\frac{1}{\\left(\\sqrt{\\varphi \\sqrt{5}}-\\varphi \\right){e}^{\\frac{2}{5}\\pi }}=1+\\frac{{e}^{-2\\pi }}{1+\\frac{{e}^{-4\\pi }}{1+\\frac{{e}^{-6\\pi }}{1+\\frac{{e}^{-8\\pi }}{1+\\dots }}}}\n$$\n\n## A Rogers-Ramanujan Identity\n\n$$\n1+\\frac{{q}^{2}}{\\left(1-q\\right)}+\\frac{{q}^{6}}{\\left(1-q\\right)\\left(1-{q}^{2}\\right)}+\\cdots =\\prod _{j=0}^{\\mathrm{\\infty }}\\frac{1}{\\left(1-{q}^{5j+2}\\right)\\left(1-{q}^{5j+3}\\right)},\\text{for\u00a0}|q|<1.\n$$\n\n## Maxwell's Equations\n\n$$\n\\begin{array}{rl}\\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{B}}-\\frac{1}{c}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{E}}}{\\mathrm{\\partial }t}& =\\frac{4\\pi }{c}\\stackrel{\\to }{\\mathbf{j}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{E}}& =4\\pi \\rho \\\\ \\mathrm{\\nabla }\u00d7\\stackrel{\\to }{\\mathbf{E}}+\\frac{1}{c}\\frac{\\mathrm{\\partial }\\stackrel{\\to }{\\mathbf{B}}}{\\mathrm{\\partial }t}& =\\stackrel{\\to }{\\mathbf{0}}\\\\ \\mathrm{\\nabla }\\cdot \\stackrel{\\to }{\\mathbf{B}}& =0\\end{array}\n$$\n\n## In-line Mathematics\n\nFinally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression $\\sqrt{3x-1}+{\\left(1+x\\right)}^{2}$ is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.\n", "html": "\n\n\n\n \n \n \n MathJax v3 with MathML input and HTML output\n \n\n\n

                                                          MathJax v3 beta: MathML input, HTML output test

                                                          \n

                                                          \n When\n \n a\n \n 0\n , there are two solutions to\n \n a\n \n x\n 2\n \n +\n b\n x\n +\n c\n =\n 0\n \n and they are\n \n x\n =\n \n \n \n \n b\n ±\n \n \n b\n 2\n \n \n 4\n a\n c\n \n \n \n 2\n a\n \n \n \n .\n \n

                                                          \n\n

                                                          The Lorenz Equations

                                                          \n\n \n \n \n \n \n \n x\n ˙\n \n \n \n \n \n =\n σ\n (\n y\n \n x\n )\n \n \n \n \n \n \n y\n ˙\n \n \n \n \n \n =\n ρ\n x\n \n y\n \n x\n z\n \n \n \n \n \n \n z\n ˙\n \n \n \n \n \n =\n \n β\n z\n +\n x\n y\n \n \n \n \n\n

                                                          The Cauchy-Schwarz Inequality

                                                          \n\n \n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n a\n k\n \n \n b\n k\n \n \n )\n \n \n \n \n 2\n \n \n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n a\n k\n 2\n \n \n )\n \n \n (\n \n \n \n \n k\n =\n 1\n \n n\n \n \n b\n k\n 2\n \n \n )\n \n \n

                                                          A Cross Product Formula

                                                          \n\n \n \n \n V\n \n 1\n \n ×\n \n \n V\n \n 2\n \n =\n \n |\n \n \n \n \n i\n \n \n \n \n j\n \n \n \n \n k\n \n \n \n \n \n \n \n \n X\n \n \n \n u\n \n \n \n \n \n \n \n Y\n \n \n \n u\n \n \n \n \n 0\n \n \n \n \n \n \n \n X\n \n \n \n v\n \n \n \n \n \n \n \n Y\n \n \n \n v\n \n \n \n \n 0\n \n \n \n |\n \n \n\n

                                                          The probability of getting \n k\n heads when flipping \n n\n coins is:

                                                          \n\n \n P\n (\n E\n )\n =\n \n \n \n (\n \n \n n\n k\n \n \n )\n \n \n \n \n p\n k\n \n (\n 1\n \n p\n \n )\n \n n\n \n k\n \n \n \n\n

                                                          An Identity of Ramanujan

                                                          \n\n \n \n 1\n \n (\n \n ϕ\n \n 5\n \n \n \n ϕ\n )\n \n e\n \n \n 2\n 5\n \n π\n \n \n \n \n =\n 1\n +\n \n \n e\n \n \n 2\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 4\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 6\n π\n \n \n \n 1\n +\n \n \n e\n \n \n 8\n π\n \n \n \n 1\n +\n \n \n \n \n \n \n \n \n \n \n

                                                          A Rogers-Ramanujan Identity

                                                          \n\n \n 1\n +\n \n \n q\n 2\n \n \n (\n 1\n \n q\n )\n \n \n +\n \n \n q\n 6\n \n \n (\n 1\n \n q\n )\n (\n 1\n \n \n q\n 2\n \n )\n \n \n +\n \n =\n \n \n \n j\n =\n 0\n \n \n \n \n \n \n 1\n \n (\n 1\n \n \n q\n \n 5\n j\n +\n 2\n \n \n )\n (\n 1\n \n \n q\n \n 5\n j\n +\n 3\n \n \n )\n \n \n ,\n \n \n \n for \n \n \n |\n \n q\n \n |\n \n <\n 1\n \n \n .\n \n

                                                          Maxwell's Equations

                                                          \n\n \n \n \n \n \n ×\n \n \n \n B\n \n \n \n \n \n \n \n 1\n c\n \n \n \n \n \n \n \n \n E\n \n \n \n \n \n \n \n t\n \n \n \n \n \n =\n \n \n 4\n π\n \n c\n \n \n \n \n j\n \n \n \n \n \n \n \n \n \n \n \n \n \n E\n \n \n \n \n \n \n \n =\n 4\n π\n ρ\n \n \n \n \n \n ×\n \n \n \n E\n \n \n \n \n \n +\n \n \n 1\n c\n \n \n \n \n \n \n \n \n B\n \n \n \n \n \n \n \n t\n \n \n \n \n \n =\n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n B\n \n \n \n \n \n \n \n =\n 0\n \n \n \n \n\n

                                                          In-line Mathematics

                                                          \n\n

                                                          Finally, while display equations look good for a page of samples, the\n ability to mix math and text in a paragraph is also important. This\n expression \n \n 3\n x\n \n 1\n \n +\n (\n 1\n +\n x\n \n )\n 2\n \n is an example of an inline equation. As\n you see, MathJax equations can be used this way as well, without unduly\n disturbing the spacing between lines.

                                                          \n\n\n\n"} diff --git a/bench/data/groundtruth/math_none_mathml_1.jsonl b/bench/data/groundtruth/math_none_mathml_1.jsonl index e16dffa8..0501d3e2 100644 --- a/bench/data/groundtruth/math_none_mathml_1.jsonl +++ b/bench/data/groundtruth/math_none_mathml_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

                                                          In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by {\\displaystyle \\sigma ^{2}}, {\\displaystyle s^{2}}, {\\displaystyle \\operatorname {Var} (X)}, {\\displaystyle V(X)}, or {\\displaystyle \\mathbb {V} (X)}.[1]

                                                          ", "content": [{"c": "In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation(SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by", "t": "text"}, {"c": "{\\displaystyle \\sigma ^{2}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle s^{2}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle V(X)}", "t": "equation-inline"}, {"c": ", or", "t": "text"}, {"c": "{\\displaystyle \\mathbb {V} (X)}", "t": "equation-inline"}, {"c": ".[ 1]", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.
                                                          ", "content": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Comparison_standard_deviations.svg/400px-Comparison_standard_deviations.svg.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                          An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                          ", "content": [{"c": "An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                          ", "content": [{"c": "There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                          ", "content": [{"c": "The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                          Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                          ", "content": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Variance_visualisation.svg/220px-Variance_visualisation.svg.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "list", "raw_content": "
                                                          1. A frequency distribution is constructed.
                                                          2. The centroid of the distribution gives its mean.
                                                          3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                          4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.
                                                          ", "content": {"items": [[[{"c": "A frequency distribution is constructed.", "t": "text"}]], [[{"c": "The centroid of the distribution gives its mean.", "t": "text"}]], [[{"c": "A square with sides equal to the difference of each value from the mean is formed for each value.", "t": "text"}]], [[{"c": "Arranging the squares into a rectangle with one side equal to the number of values, ", "t": "text"}, {"c": "n", "t": "text"}, {"c": ", results in the other side being the distribution's variance, ", "t": "text"}, {"c": "\u03c3", "t": "text"}, {"c": "2", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Definition

                                                          ", "content": {"title_content": "Definition", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The variance of a random variable {\\displaystyle X} is the expected value of the squared deviation from the mean of {\\displaystyle X}, {\\displaystyle \\mu =\\operatorname {E} [X]}:\n

                                                          ", "content": [{"c": "The variance of a random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is the expected value of the squared deviation from the mean of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle \\mu =\\operatorname {E} [X]}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                          ", "content": [{"c": "This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The variance is also equivalent to the second cumulant of a probability distribution that generates {\\displaystyle X}. The variance is typically designated as {\\displaystyle \\operatorname {Var} (X)}, or sometimes as {\\displaystyle V(X)} or {\\displaystyle \\mathbb {V} (X)}, or symbolically as {\\displaystyle \\sigma _{X}^{2}} or simply {\\displaystyle \\sigma ^{2}} (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                          ", "content": [{"c": "The variance is also equivalent to the second cumulant of a probability distribution that generates", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ". The variance is typically designated as", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)}", "t": "equation-inline"}, {"c": ", or sometimes as", "t": "text"}, {"c": "{\\displaystyle V(X)}", "t": "equation-inline"}, {"c": "or", "t": "text"}, {"c": "{\\displaystyle \\mathbb {V} (X)}", "t": "equation-inline"}, {"c": ", or symbolically as", "t": "text"}, {"c": "{\\displaystyle \\sigma _{X}^{2}}", "t": "equation-inline"}, {"c": "or simply", "t": "text"}, {"c": "{\\displaystyle \\sigma ^{2}}", "t": "equation-inline"}, {"c": "(pronounced \" sigma squared\"). The expression for the variance can be expanded as follows:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                          ", "content": [{"c": "In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Discrete random variable

                                                          ", "content": {"title_content": "Discrete random variable", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If the generator of random variable {\\displaystyle X} is discrete with probability mass function{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}, then\n

                                                          ", "content": [{"c": "If the generator of random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is discrete with probability mass function", "t": "text"}, {"c": "{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}", "t": "equation-inline"}, {"c": ", then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\mu } is the expected value. That is,\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the expected value. That is,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                          ", "content": [{"c": "(When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The variance of a collection of {\\displaystyle n} equally likely values can be written as\n

                                                          ", "content": [{"c": "The variance of a collection of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "equally likely values can be written as", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\mu } is the average value. That is,\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the average value. That is,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The variance of a set of {\\displaystyle n} equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]

                                                          ", "content": [{"c": "The variance of a set of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[ 2]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Absolutely continuous random variable

                                                          ", "content": {"title_content": "Absolutely continuous random variable", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If the random variable {\\displaystyle X} has a probability density function{\\displaystyle f(x)}, and {\\displaystyle F(x)} is the corresponding cumulative distribution function, then\n

                                                          ", "content": [{"c": "If the random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "has a probability density function", "t": "text"}, {"c": "{\\displaystyle f(x)}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "{\\displaystyle F(x)}", "t": "equation-inline"}, {"c": "is the corresponding cumulative distribution function, then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          or equivalently,\n

                                                          ", "content": [{"c": "or equivalently,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\mu } is the expected value of {\\displaystyle X} given by\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the expected value of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          In these formulas, the integrals with respect to {\\displaystyle dx} and {\\displaystyle dF(x)}\nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                          ", "content": [{"c": "In these formulas, the integrals with respect to", "t": "text"}, {"c": "{\\displaystyle dx}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle dF(x)}", "t": "equation-inline"}, {"c": "are Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If the function {\\displaystyle x^{2}f(x)} is Riemann-integrable on every finite interval {\\displaystyle [a,b]\\subset \\mathbb {R} ,} then\n

                                                          ", "content": [{"c": "If the function", "t": "text"}, {"c": "{\\displaystyle x^{2}f(x)}", "t": "equation-inline"}, {"c": "is Riemann-integrable on every finite interval", "t": "text"}, {"c": "{\\displaystyle [a,b]\\subset \\mathbb {R} ,}", "t": "equation-inline"}, {"c": "then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where the integral is an improper Riemann integral.\n

                                                          ", "content": [{"c": "where the integral is an improper Riemann integral.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Examples

                                                          ", "content": {"title_content": "Examples", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Exponential distribution

                                                          ", "content": {"title_content": "Exponential distribution", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                          ", "content": [{"c": "The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle f(x)=\\lambda e^{-\\lambda x}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          on the interval [0, \u221e). Its mean can be shown to be\n

                                                          ", "content": [{"c": "on the interval[0, \u221e). Its mean can be shown to be", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Using integration by parts and making use of the expected value already calculated, we have:\n

                                                          ", "content": [{"c": "Using integration by parts and making use of the expected value already calculated, we have:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Thus, the variance of X is given by\n

                                                          ", "content": [{"c": "Thus, the variance of X is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Fair dice

                                                          ", "content": {"title_content": "Fair dice", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is {\\displaystyle (1+2+3+4+5+6)/6=7/2.} Therefore, the variance of X is\n

                                                          ", "content": [{"c": "A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is", "t": "text"}, {"c": "{\\displaystyle (1+2+3+4+5+6)/6=7/2.}", "t": "equation-inline"}, {"c": "Therefore, the variance of X is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                          ", "content": [{"c": "The general formula for the variance of the outcome, X, of an n-sided die is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Commonly used probability distributions

                                                          ", "content": {"title_content": "Commonly used probability distributions", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The following table lists the variance for some commonly used probability distributions.\n

                                                          ", "content": [{"c": "The following table lists the variance for some commonly used probability distributions.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                          Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                          Binomial distributionPr(X=k)=(nk)pk(1\u2212p)n\u2212k{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}np{\\displaystyle np}np(1\u2212p){\\displaystyle np(1-p)}
                                                          Geometric distributionPr(X=k)=(1\u2212p)k\u22121p{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}1p{\\displaystyle {\\frac {1}{p}}}(1\u2212p)p2{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                          Normal distributionf(x\u2223\u03bc,\u03c32)=12\u03c0\u03c32e\u2212(x\u2212\u03bc)22\u03c32{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\u03bc{\\displaystyle \\mu }\u03c32{\\displaystyle \\sigma ^{2}}
                                                          Uniform distribution (continuous)f(x\u2223a,b)={1b\u2212afor a\u2264x\u2264b,0for x<a or x>b{\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}a+b2{\\displaystyle {\\frac {a+b}{2}}}(b\u2212a)212{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                          Exponential distributionf(x\u2223\u03bb)=\u03bbe\u2212\u03bbx{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}1\u03bb{\\displaystyle {\\frac {1}{\\lambda }}}1\u03bb2{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                          Poisson distributionf(k\u2223\u03bb)=e\u2212\u03bb\u03bbkk!{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\u03bb{\\displaystyle \\lambda }\u03bb{\\displaystyle \\lambda }
                                                          ", "content": {"html": "
                                                          Name of the probability distributionProbability distribution functionMeanVariance
                                                          Binomial distributionPr<br>(<br>X<br>=<br>k<br>)<br>=<br>(<br>n<br>k<br>)<br>p<br>k<br>(<br>1<br>\u2212<br>p<br>)<br>n<br>\u2212<br>k<br>{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}n<br>p<br>{\\displaystyle np}n<br>p<br>(<br>1<br>\u2212<br>p<br>)<br>{\\displaystyle np(1-p)}
                                                          Geometric distributionPr<br>(<br>X<br>=<br>k<br>)<br>=<br>(<br>1<br>\u2212<br>p<br>)<br>k<br>\u2212<br>1<br>p<br>{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}1<br>p<br>{\\displaystyle {\\frac {1}{p}}}(<br>1<br>\u2212<br>p<br>)<br>p<br>2<br>{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                          Normal distributionf<br>(<br>x<br>\u2223<br>\u03bc<br>,<br>\u03c3<br>2<br>)<br>=<br>1<br>2<br>\u03c0<br>\u03c3<br>2<br>e<br>\u2212<br>(<br>x<br>\u2212<br>\u03bc<br>)<br>2<br>2<br>\u03c3<br>2<br>{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\u03bc<br>{\\displaystyle \\mu }\u03c3<br>2<br>{\\displaystyle \\sigma ^{2}}
                                                          Uniform distribution (continuous)f<br>(<br>x<br>\u2223<br>a<br>,<br>b<br>)<br>=<br>{<br>1<br>b<br>\u2212<br>a<br>for<br>a<br>\u2264<br>x<br>\u2264<br>b<br>,<br>0<br>for<br>x<br><<br>a<br>or<br>x<br>><br>b<br>{\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}a<br>+<br>b<br>2<br>{\\displaystyle {\\frac {a+b}{2}}}(<br>b<br>\u2212<br>a<br>)<br>2<br>12<br>{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                          Exponential distributionf<br>(<br>x<br>\u2223<br>\u03bb<br>)<br>=<br>\u03bb<br>e<br>\u2212<br>\u03bb<br>x<br>{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}1<br>\u03bb<br>{\\displaystyle {\\frac {1}{\\lambda }}}1<br>\u03bb<br>2<br>{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                          Poisson distributionf<br>(<br>k<br>\u2223<br>\u03bb<br>)<br>=<br>e<br>\u2212<br>\u03bb<br>\u03bb<br>k<br>k<br>!<br>{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\u03bb<br>{\\displaystyle \\lambda }\u03bb<br>{\\displaystyle \\lambda }
                                                          ", "is_complex": false}}, {"type": "title", "raw_content": "

                                                          Properties

                                                          ", "content": {"title_content": "Properties", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Basic properties

                                                          ", "content": {"title_content": "Basic properties", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Variance is non-negative because the squares are positive or zero:\n

                                                          ", "content": [{"c": "Variance is non-negative because the squares are positive or zero:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)\\geq 0.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)\\geq 0.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The variance of a constant is zero.\n

                                                          ", "content": [{"c": "The variance of a constant is zero.", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (a)=0.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (a)=0.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                          ", "content": [{"c": "Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Issues of finiteness

                                                          ", "content": {"title_content": "Issues of finiteness", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index{\\displaystyle k} satisfies {\\displaystyle 1<k\\leq 2.}

                                                          ", "content": [{"c": "If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index", "t": "text"}, {"c": "{\\displaystyle k}", "t": "equation-inline"}, {"c": "satisfies", "t": "text"}, {"c": "{\\displaystyle 1Decomposition", "content": {"title_content": "Decomposition", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The general formula for variance decomposition or the law of total variance is: If {\\displaystyle X} and {\\displaystyle Y} are two random variables, and the variance of {\\displaystyle X} exists, then\n

                                                          ", "content": [{"c": "The general formula for variance decomposition or the law of total variance is: If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": "are two random variables, and the variance of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "exists, then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The conditional expectation{\\displaystyle \\operatorname {E} (X\\mid Y)} of {\\displaystyle X} given {\\displaystyle Y}, and the conditional variance{\\displaystyle \\operatorname {Var} (X\\mid Y)} may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y=y)} given the event Y = y. This quantity depends on the particular value y; it is a function {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}. That same function evaluated at the random variable Y is the conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}

                                                          ", "content": [{"c": "The conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y)}", "t": "equation-inline"}, {"c": "of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "given", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": ", and the conditional variance", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X\\mid Y)}", "t": "equation-inline"}, {"c": "may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y=y)}", "t": "equation-inline"}, {"c": "given the event Y= y. This quantity depends on the particular value y; it is a function", "t": "text"}, {"c": "{\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}", "t": "equation-inline"}, {"c": ". That same function evaluated at the random variable Y is the conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                          In particular, if {\\displaystyle Y} is a discrete random variable assuming possible values {\\displaystyle y_{1},y_{2},y_{3}\\ldots } with corresponding probabilities {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}, then in the formula for total variance, the first term on the right-hand side becomes\n

                                                          ", "content": [{"c": "In particular, if", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": "is a discrete random variable assuming possible values", "t": "text"}, {"c": "{\\displaystyle y_{1},y_{2},y_{3}\\ldots }", "t": "equation-inline"}, {"c": "with corresponding probabilities", "t": "text"}, {"c": "{\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}", "t": "equation-inline"}, {"c": ", then in the formula for total variance, the first term on the right-hand side becomes", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}. Similarly, the second term on the right-hand side becomes\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}", "t": "equation-inline"}, {"c": ". Similarly, the second term on the right-hand side becomes", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]} and {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}. Thus the total variance is given by\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}", "t": "equation-inline"}, {"c": ". Thus the total variance is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                          ", "content": [{"c": "A similar formula is applied in analysis of variance, where the corresponding formula is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          here {\\displaystyle {\\mathit {MS}}} refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                          ", "content": [{"c": "here", "t": "text"}, {"c": "{\\displaystyle {\\mathit {MS}}}", "t": "equation-inline"}, {"c": "refers to the Mean of the Squares. In linear regression analysis the corresponding formula is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                          ", "content": [{"c": "This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Similar decompositions are possible for the sum of squared deviations (sum of squares, {\\displaystyle {\\mathit {SS}}}):\n

                                                          ", "content": [{"c": "Similar decompositions are possible for the sum of squared deviations (sum of squares,", "t": "text"}, {"c": "{\\displaystyle {\\mathit {SS}}}", "t": "equation-inline"}, {"c": "):", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}
                                                          {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}", "t": "equation-inline"}]], [[{"c": "{\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Calculation from the CDF

                                                          ", "content": {"title_content": "Calculation from the CDF", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution functionF using\n

                                                          ", "content": [{"c": "The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution function F using", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                          ", "content": [{"c": "This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Characteristic property

                                                          ", "content": {"title_content": "Characteristic property", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}. Conversely, if a continuous function {\\displaystyle \\varphi } satisfies {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)} for all random variables X, then it is necessarily of the form {\\displaystyle \\varphi (x)=ax^{2}+b}, where a > 0. This also holds in the multidimensional case.[3]

                                                          ", "content": [{"c": "The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e.", "t": "text"}, {"c": "{\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}", "t": "equation-inline"}, {"c": ". Conversely, if a continuous function", "t": "text"}, {"c": "{\\displaystyle \\varphi }", "t": "equation-inline"}, {"c": "satisfies", "t": "text"}, {"c": "{\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)}", "t": "equation-inline"}, {"c": "for all random variables X, then it is necessarily of the form", "t": "text"}, {"c": "{\\displaystyle \\varphi (x)=ax^{2}+b}", "t": "equation-inline"}, {"c": ", where a> 0. This also holds in the multidimensional case.[ 3]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Units of measurement

                                                          ", "content": {"title_content": "Units of measurement", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                          ", "content": [{"c": "Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is\u221a 2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                          ", "content": [{"c": "The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Propagation

                                                          ", "content": {"title_content": "Propagation", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Addition and multiplication by a constant

                                                          ", "content": {"title_content": "Addition and multiplication by a constant", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                          ", "content": [{"c": "Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                          ", "content": [{"c": "If all values are scaled by a constant, the variance is scaled by the square of that constant:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The variance of a sum of two random variables is given by\n

                                                          ", "content": [{"c": "The variance of a sum of two random variables is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where {\\displaystyle \\operatorname {Cov} (X,Y)} is the covariance.\n

                                                          ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Cov} (X,Y)}", "t": "equation-inline"}, {"c": "is the covariance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Linear combinations

                                                          ", "content": {"title_content": "Linear combinations", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          In general, for the sum of {\\displaystyle N} random variables {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}, the variance becomes:\n

                                                          ", "content": [{"c": "In general, for the sum of", "t": "text"}, {"c": "{\\displaystyle N}", "t": "equation-inline"}, {"c": "random variables", "t": "text"}, {"c": "{\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}", "t": "equation-inline"}, {"c": ", the variance becomes:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          see also general Bienaym\u00e9's identity.\n

                                                          ", "content": [{"c": "see also general Bienaym\u00e9's identity.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          These results lead to the variance of a linear combination as:\n

                                                          ", "content": [{"c": "These results lead to the variance of a linear combination as:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i

                                                          If the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are such that\n

                                                          ", "content": [{"c": "If the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{N}}", "t": "equation-inline"}, {"c": "are such that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                          ", "content": [{"c": "then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{N}}", "t": "equation-inline"}, {"c": "are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables {\\displaystyle X_{1},\\dots ,X_{n}} are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                          ", "content": [{"c": "Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{n}}", "t": "equation-inline"}, {"c": "are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Matrix notation for the variance of a linear combination

                                                          ", "content": {"title_content": "Matrix notation for the variance of a linear combination", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Define {\\displaystyle X} as a column vector of {\\displaystyle n} random variables {\\displaystyle X_{1},\\ldots ,X_{n}}, and {\\displaystyle c} as a column vector of {\\displaystyle n} scalars {\\displaystyle c_{1},\\ldots ,c_{n}}. Therefore, {\\displaystyle c^{\\mathsf {T}}X} is a linear combination of these random variables, where {\\displaystyle c^{\\mathsf {T}}} denotes the transpose of {\\displaystyle c}. Also let {\\displaystyle \\Sigma } be the covariance matrix of {\\displaystyle X}. The variance of {\\displaystyle c^{\\mathsf {T}}X} is then given by:[4]

                                                          ", "content": [{"c": "Define", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "as a column vector of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\ldots ,X_{n}}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "{\\displaystyle c}", "t": "equation-inline"}, {"c": "as a column vector of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "scalars", "t": "text"}, {"c": "{\\displaystyle c_{1},\\ldots ,c_{n}}", "t": "equation-inline"}, {"c": ". Therefore,", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}X}", "t": "equation-inline"}, {"c": "is a linear combination of these random variables, where", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}}", "t": "equation-inline"}, {"c": "denotes the transpose of", "t": "text"}, {"c": "{\\displaystyle c}", "t": "equation-inline"}, {"c": ". Also let", "t": "text"}, {"c": "{\\displaystyle \\Sigma }", "t": "equation-inline"}, {"c": "be the covariance matrix of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ". The variance of", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}X}", "t": "equation-inline"}, {"c": "is then given by:[ 4]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                          ", "content": [{"c": "This implies that the variance of the mean can be written as (with a column vector of ones)", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Sum of variables

                                                          ", "content": {"title_content": "Sum of variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Sum of uncorrelated variables

                                                          ", "content": {"title_content": "Sum of uncorrelated variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                          ", "content": [{"c": "One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                          ", "content": [{"c": "This statement is called the Bienaym\u00e9 formula[ 5] and was discovered in 1853.[ 6][ 7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c3 2, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                          ", "content": [{"c": "That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          To prove the initial statement, it suffices to show that\n

                                                          ", "content": [{"c": "To prove the initial statement, it suffices to show that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          The general result then follows by induction. Starting with the definition,\n

                                                          ", "content": [{"c": "The general result then follows by induction. Starting with the definition,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                          ", "content": [{"c": "Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Sum of correlated variables

                                                          ", "content": {"title_content": "Sum of correlated variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          Sum of correlated variables with fixed sample size
                                                          ", "content": {"title_content": "Sum of correlated variables with fixed sample size", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                          ", "content": [{"c": "In general, the variance of the sum of n variables is the sum of their covariances:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i

                                                          (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                          ", "content": [{"c": "(Note: The second equality comes from the fact that Cov( X i, X i) = Var( X i).)", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Here, {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )} is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                          ", "content": [{"c": "Here,", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )}", "t": "equation-inline"}, {"c": "is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                          ", "content": [{"c": "So, if the variables have equal variance \u03c3 2 and the average correlation of distinct variables is \u03c1, then the variance of their mean is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                          ", "content": [{"c": "This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                          ", "content": [{"c": "This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                          ", "content": [{"c": "Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          Sum of uncorrelated variables with random sample size
                                                          ", "content": {"title_content": "Sum of uncorrelated variables with random sample size", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                          ", "content": [{"c": "There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}[8]
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}", "t": "equation-inline"}, {"c": "[", "t": "text"}, {"c": "8", "t": "text"}, {"c": "]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          which follows from the law of total variance.\n

                                                          ", "content": [{"c": "which follows from the law of total variance.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If N has a Poisson distribution, then {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)} with estimator n = N. So, the estimator of {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)} becomes {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}, giving {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n(see standard error of the sample mean).\n

                                                          ", "content": [{"c": "If N has a Poisson distribution, then", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)}", "t": "equation-inline"}, {"c": "with estimator n= N. So, the estimator of", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)}", "t": "equation-inline"}, {"c": "becomes", "t": "text"}, {"c": "{\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}", "t": "equation-inline"}, {"c": ", giving", "t": "text"}, {"c": "{\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}", "t": "equation-inline"}, {"c": "(see standard error of the sample mean).", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Weighted sum of variables

                                                          ", "content": {"title_content": "Weighted sum of variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The scaling property and the Bienaym\u00e9 formula, along with the property of the covarianceCov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                          ", "content": [{"c": "The scaling property and the Bienaym\u00e9 formula, along with the property of the covariance Cov( aX, bY) = ab Cov( X, Y) jointly imply that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                          ", "content": [{"c": "This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The expression above can be extended to a weighted sum of multiple variables:\n

                                                          ", "content": [{"c": "The expression above can be extended to a weighted sum of multiple variables:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{Product of variables", "content": {"title_content": "Product of variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Product of independent variables

                                                          ", "content": {"title_content": "Product of independent variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If two variables X and Y are independent, the variance of their product is given by[9]

                                                          ", "content": [{"c": "If two variables X and Y are independent, the variance of their product is given by[ 9]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Equivalently, using the basic properties of expectation, it is given by\n

                                                          ", "content": [{"c": "Equivalently, using the basic properties of expectation, it is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Product of statistically dependent variables

                                                          ", "content": {"title_content": "Product of statistically dependent variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                          ", "content": [{"c": "In general, if two variables are statistically dependent, then the variance of their product is given by:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Arbitrary functions

                                                          ", "content": {"title_content": "Arbitrary functions", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                          ", "content": [{"c": "The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                          ", "content": [{"c": "provided that f is twice differentiable and that the mean and variance of X are finite.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Population variance and sample variance

                                                          ", "content": {"title_content": "Population variance and sample variance", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of nobservations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                          ", "content": [{"c": "Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of n observations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n,n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10]n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]

                                                          ", "content": [{"c": "The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and(uncorrected) sample variance\u2013 these are consistent estimators(they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n, n \u2212 1, n+ 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[ 10] n+ 1 minimizes mean squared error for the normal distribution,[ 11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[ 12]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                          ", "content": [{"c": "Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of ( n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n-1 instead of n, is called Bessel's correction.[ 10] The resulting estimator is unbiased and is called the(corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                          ", "content": [{"c": "Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n+ 1 (instead of n \u2212 1 or n) minimizes mean squared error.[ 11] The resulting estimator is biased, however, and is known as the biased sample variation.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Population variance

                                                          ", "content": {"title_content": "Population variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          In general, the population variance of a finitepopulation of size N with values xi is given by

                                                          ", "content": [{"c": "In general, the population variance of a finite population of size N with values x i is given by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03c32=1N\u2211i=1N(xi\u2212\u03bc)2=1N\u2211i=1N(xi2\u22122\u03bcxi+\u03bc2)=(1N\u2211i=1Nxi2)\u22122\u03bc(1N\u2211i=1Nxi)+\u03bc2=E\u2061[xi2]\u2212\u03bc2{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}", "content": {"math_content": "{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                          where the population mean is {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}} and {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}, where {\\textstyle \\operatorname {E} } is the expectation value operator.\n

                                                          ", "content": [{"c": "where the population mean is", "t": "text"}, {"c": "{\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}", "t": "equation-inline"}, {"c": ", where", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} }", "t": "equation-inline"}, {"c": "is the expectation value operator.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The population variance can also be computed using[13]

                                                          ", "content": [{"c": "The population variance can also be computed using[ 13]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i

                                                          (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because

                                                          ", "content": [{"c": "(The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because", "t": "text"}]}, {"type": "equation-interline", "raw_content": "12N2\u2211i,j=1N(xi\u2212xj)2=12N2\u2211i,j=1N(xi2\u22122xixj+xj2)=12N\u2211j=1N(1N\u2211i=1Nxi2)\u2212(1N\u2211i=1Nxi)(1N\u2211j=1Nxj)+12N\u2211i=1N(1N\u2211j=1Nxj2)=12(\u03c32+\u03bc2)\u2212\u03bc2+12(\u03c32+\u03bc2)=\u03c32.{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}", "content": {"math_content": "{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                          The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                          ", "content": [{"c": "The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Sample variance

                                                          ", "content": {"title_content": "Sample variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Biased sample variance

                                                          ", "content": {"title_content": "Biased sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                          ", "content": [{"c": "In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[ 14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          We take a sample with replacement of n values Y1, ..., Yn from the population of size {\\textstyle N}, where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                          ", "content": [{"c": "We take a sample with replacement of n values Y 1, ..., Y n from the population of size", "t": "text"}, {"c": "{\\textstyle N}", "t": "equation-inline"}, {"c": ", where n< N, and estimate the variance on the basis of this sample.[ 15] Directly taking the variance of the sample data gives the average of the squared deviations:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}[16]
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i

                                                          (See the section Population variance for the derivation of this formula.) Here, {\\displaystyle {\\overline {Y}}} denotes the sample mean:\n

                                                          ", "content": [{"c": "(See the section Population variance for the derivation of this formula.) Here,", "t": "text"}, {"c": "{\\displaystyle {\\overline {Y}}}", "t": "equation-inline"}, {"c": "denotes the sample mean:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Since the Yi are selected randomly, both {\\displaystyle {\\overline {Y}}} and {\\displaystyle {\\tilde {S}}_{Y}^{2}} are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For {\\displaystyle {\\tilde {S}}_{Y}^{2}} this gives:\n

                                                          ", "content": [{"c": "Since the Y i are selected randomly, both", "t": "text"}, {"c": "{\\displaystyle {\\overline {Y}}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples { Y i} of size n from the population. For", "t": "text"}, {"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "this gives:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Here {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}} derived in the section Population variance and {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}} due to independency of {\\textstyle Y_{i}} and {\\textstyle Y_{j}} are used.\n

                                                          ", "content": [{"c": "Here", "t": "text"}, {"c": "{\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}}", "t": "equation-inline"}, {"c": "derived in the section Population variance and", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}}", "t": "equation-inline"}, {"c": "due to independency of", "t": "text"}, {"c": "{\\textstyle Y_{i}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\textstyle Y_{j}}", "t": "equation-inline"}, {"c": "are used.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Hence {\\textstyle {\\tilde {S}}_{Y}^{2}} gives an estimate of the population variance that is biased by a factor of {\\textstyle {\\frac {n-1}{n}}} as the expectation value of {\\textstyle {\\tilde {S}}_{Y}^{2}} is smaller than the population variance (true variance) by that factor. For this reason, {\\textstyle {\\tilde {S}}_{Y}^{2}} is referred to as the biased sample variance.\n

                                                          ", "content": [{"c": "Hence", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "gives an estimate of the population variance that is biased by a factor of", "t": "text"}, {"c": "{\\textstyle {\\frac {n-1}{n}}}", "t": "equation-inline"}, {"c": "as the expectation value of", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "is smaller than the population variance (true variance) by that factor. For this reason,", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "is referred to as the biased sample variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Unbiased sample variance

                                                          ", "content": {"title_content": "Unbiased sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Correcting for this bias yields the unbiased sample variance, denoted {\\displaystyle S^{2}}:\n

                                                          ", "content": [{"c": "Correcting for this bias yields the unbiased sample variance, denoted", "t": "text"}, {"c": "{\\displaystyle S^{2}}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                          ", "content": [{"c": "Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                          ", "content": [{"c": "The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation(the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                          ", "content": [{"c": "The unbiased sample variance is a U-statistic for the function \u0192( y 1, y 2) = ( y 1 \u2212 y 2) 2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                          Example
                                                          ", "content": {"title_content": "Example", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                          ", "content": [{"c": "For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Distribution of the sample variance

                                                          ", "content": {"title_content": "Distribution of the sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample varianceS2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]

                                                          ", "content": [{"c": "Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Y i are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample variance S 2 follows a scaled chi-squared distribution(see also: asymptotic properties and an elementary proof):[ 17]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                          ", "content": [{"c": "where \u03c3 2 is the population variance. As a direct consequence, it follows that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          and[18]

                                                          ", "content": [{"c": "and[ 18]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]

                                                          ", "content": [{"c": "If Y i are independent and identically distributed, but not necessarily normally distributed, then[ 19]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                          ", "content": [{"c": "where \u03ba is the kurtosis of the distribution and \u03bc 4 is the fourth central moment.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]

                                                          ", "content": [{"c": "If the conditions of the law of large numbers hold for the squared observations, S 2 is a consistent estimator of \u03c3 2. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[ 20][ 21][ 22]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Samuelson's inequality

                                                          ", "content": {"title_content": "Samuelson's inequality", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}

                                                          ", "content": [{"c": "Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[ 23] Values must lie within the limits", "t": "text"}, {"c": "{\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}", "t": "equation-inline"}]}, {"type": "title", "raw_content": "

                                                          Relations with the harmonic and arithmetic means

                                                          ", "content": {"title_content": "Relations with the harmonic and arithmetic means", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                          ", "content": [{"c": "It has been shown[ 24] that for a sample { y i} of positive real numbers,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and {\\displaystyle \\sigma _{y}^{2}} is the (biased) variance of the sample.\n

                                                          ", "content": [{"c": "where y max is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and", "t": "text"}, {"c": "{\\displaystyle \\sigma _{y}^{2}}", "t": "equation-inline"}, {"c": "is the (biased) variance of the sample.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          This bound has been improved, and it is known that variance is bounded by\n

                                                          ", "content": [{"c": "This bound has been improved, and it is known that variance is bounded by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          where ymin is the minimum of the sample.[25]

                                                          ", "content": [{"c": "where y min is the minimum of the sample.[ 25]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Tests of equality of variances

                                                          ", "content": {"title_content": "Tests of equality of variances", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                          ", "content": [{"c": "The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                          ", "content": [{"c": "Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                          ", "content": [{"c": "The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                          ", "content": [{"c": "Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Moment of inertia

                                                          ", "content": {"title_content": "Moment of inertia", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of {\\displaystyle \\Sigma } is given by\n

                                                          ", "content": [{"c": "The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[ 26] It is because of this analogy that such things as the variance are called moments of probability distributions.[ 26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of", "t": "text"}, {"c": "{\\displaystyle \\Sigma }", "t": "equation-inline"}, {"c": "is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                          ", "content": [{"c": "This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                          That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                          ", "content": [{"c": "That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                          {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}
                                                          ", "content": {"items": [[[{"c": "{\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                          Semivariance

                                                          ", "content": {"title_content": "Semivariance", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:

                                                          ", "content": [{"c": "The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "Semivariance=1n\u2211i:xi<\u03bc(xi\u2212\u03bc)2{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}", "content": {"math_content": "{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                          It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]

                                                          ", "content": [{"c": "It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[ 27]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                          ", "content": [{"c": "For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Etymology

                                                          ", "content": {"title_content": "Etymology", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "The term variance was first introduced by Ronald Fisher in his 1918 paper The Correlation Between Relatives on the Supposition of Mendelian Inheritance:[ 28]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations {\\displaystyle \\sigma _{1}} and {\\displaystyle \\sigma _{2}}, it is found that the distribution, when both causes act together, has a standard deviation {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}. It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                          ", "content": [{"c": "The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations", "t": "text"}, {"c": "{\\displaystyle \\sigma _{1}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle \\sigma _{2}}", "t": "equation-inline"}, {"c": ", it is found that the distribution, when both causes act together, has a standard deviation", "t": "text"}, {"c": "{\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}", "t": "equation-inline"}, {"c": ". It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          Generalizations

                                                          ", "content": {"title_content": "Generalizations", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          For complex variables

                                                          ", "content": {"title_content": "For complex variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If {\\displaystyle x} is a scalar complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ,} then its variance is {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],} where {\\displaystyle x^{*}} is the complex conjugate of {\\displaystyle x.} This variance is a real scalar.\n

                                                          ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle x}", "t": "equation-inline"}, {"c": "is a scalar complex-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {C} ,}", "t": "equation-inline"}, {"c": "then its variance is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle x^{*}}", "t": "equation-inline"}, {"c": "is the complex conjugate of", "t": "text"}, {"c": "{\\displaystyle x.}", "t": "equation-inline"}, {"c": "This variance is a real scalar.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          For vector-valued random variables

                                                          ", "content": {"title_content": "For vector-valued random variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          As a matrix

                                                          ", "content": {"title_content": "As a matrix", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If {\\displaystyle X} is a vector-valued random variable, with values in {\\displaystyle \\mathbb {R} ^{n},} and thought of as a column vector, then a natural generalization of variance is {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],} where {\\displaystyle \\mu =\\operatorname {E} (X)} and {\\displaystyle X^{\\operatorname {T} }} is the transpose of {\\displaystyle X,} and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                          ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is a vector-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {R} ^{n},}", "t": "equation-inline"}, {"c": "and thought of as a column vector, then a natural generalization of variance is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu =\\operatorname {E} (X)}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle X^{\\operatorname {T} }}", "t": "equation-inline"}, {"c": "is the transpose of", "t": "text"}, {"c": "{\\displaystyle X,}", "t": "equation-inline"}, {"c": "and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix(or simply as the covariance matrix).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          If {\\displaystyle X} is a vector- and complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ^{n},} then the covariance matrix is{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],} where {\\displaystyle X^{\\dagger }} is the conjugate transpose of {\\displaystyle X.} This matrix is also positive semi-definite and square.\n

                                                          ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is a vector- and complex-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {C} ^{n},}", "t": "equation-inline"}, {"c": "then the covariance matrix is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle X^{\\dagger }}", "t": "equation-inline"}, {"c": "is the conjugate transpose of", "t": "text"}, {"c": "{\\displaystyle X.}", "t": "equation-inline"}, {"c": "This matrix is also positive semi-definite and square.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          As a scalar

                                                          ", "content": {"title_content": "As a scalar", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          Another generalization of variance for vector-valued random variables {\\displaystyle X}, which results in a scalar value rather than in a matrix, is the generalized variance{\\displaystyle \\det(C)}, the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]

                                                          ", "content": [{"c": "Another generalization of variance for vector-valued random variables", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ", which results in a scalar value rather than in a matrix, is the generalized variance", "t": "text"}, {"c": "{\\displaystyle \\det(C)}", "t": "equation-inline"}, {"c": ", the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[ 29]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                          A different generalization is obtained by considering the equation for the scalar variance, {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}, and reinterpreting {\\displaystyle (X-\\mu )^{2}} as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector {\\displaystyle X-\\mu } with itself. This results in {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),} which is the trace of the covariance matrix.\n

                                                          ", "content": [{"c": "A different generalization is obtained by considering the equation for the scalar variance,", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}", "t": "equation-inline"}, {"c": ", and reinterpreting", "t": "text"}, {"c": "{\\displaystyle (X-\\mu )^{2}}", "t": "equation-inline"}, {"c": "as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector", "t": "text"}, {"c": "{\\displaystyle X-\\mu }", "t": "equation-inline"}, {"c": "with itself. This results in", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),}", "t": "equation-inline"}, {"c": "which is the trace of the covariance matrix.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                          See also

                                                          ", "content": {"title_content": "See also", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                            ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                                            Types of variance

                                                            ", "content": {"title_content": "Types of variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                              ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                                              References

                                                              ", "content": {"title_content": "References", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                ", "content": {"items": [], "ordered": true}}]], "main_html": "

                                                                In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by {\\displaystyle \\sigma ^{2}}, {\\displaystyle s^{2}}, {\\displaystyle \\operatorname {Var} (X)}, {\\displaystyle V(X)}, or {\\displaystyle \\mathbb {V} (X)}.[1]

                                                                Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.

                                                                An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                                There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                                The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                                Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                                1. A frequency distribution is constructed.
                                                                2. The centroid of the distribution gives its mean.
                                                                3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                                4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.

                                                                Definition

                                                                The variance of a random variable {\\displaystyle X} is the expected value of the squared deviation from the mean of {\\displaystyle X}, {\\displaystyle \\mu =\\operatorname {E} [X]}:\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}

                                                                This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}

                                                                The variance is also equivalent to the second cumulant of a probability distribution that generates {\\displaystyle X}. The variance is typically designated as {\\displaystyle \\operatorname {Var} (X)}, or sometimes as {\\displaystyle V(X)} or {\\displaystyle \\mathbb {V} (X)}, or symbolically as {\\displaystyle \\sigma _{X}^{2}} or simply {\\displaystyle \\sigma ^{2}} (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}

                                                                In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                                Discrete random variable

                                                                If the generator of random variable {\\displaystyle X} is discrete with probability mass function{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}, then\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}

                                                                where {\\displaystyle \\mu } is the expected value. That is,\n

                                                                {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}

                                                                (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                                The variance of a collection of {\\displaystyle n} equally likely values can be written as\n

                                                                {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}

                                                                where {\\displaystyle \\mu } is the average value. That is,\n

                                                                {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}

                                                                The variance of a set of {\\displaystyle n} equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]

                                                                {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}

                                                                Absolutely continuous random variable

                                                                If the random variable {\\displaystyle X} has a probability density function{\\displaystyle f(x)}, and {\\displaystyle F(x)} is the corresponding cumulative distribution function, then\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}

                                                                or equivalently,\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}

                                                                where {\\displaystyle \\mu } is the expected value of {\\displaystyle X} given by\n

                                                                {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}

                                                                In these formulas, the integrals with respect to {\\displaystyle dx} and {\\displaystyle dF(x)}\nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                                If the function {\\displaystyle x^{2}f(x)} is Riemann-integrable on every finite interval {\\displaystyle [a,b]\\subset \\mathbb {R} ,} then\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}

                                                                where the integral is an improper Riemann integral.\n

                                                                Examples

                                                                Exponential distribution

                                                                The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                                {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}

                                                                on the interval [0, \u221e). Its mean can be shown to be\n

                                                                {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}

                                                                Using integration by parts and making use of the expected value already calculated, we have:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}

                                                                Thus, the variance of X is given by\n

                                                                {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}

                                                                Fair dice

                                                                A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is {\\displaystyle (1+2+3+4+5+6)/6=7/2.} Therefore, the variance of X is\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}

                                                                The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}

                                                                Commonly used probability distributions

                                                                The following table lists the variance for some commonly used probability distributions.\n

                                                                Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                                Binomial distributionPr(X=k)=(nk)pk(1\u2212p)n\u2212k{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}np{\\displaystyle np}np(1\u2212p){\\displaystyle np(1-p)}
                                                                Geometric distributionPr(X=k)=(1\u2212p)k\u22121p{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}1p{\\displaystyle {\\frac {1}{p}}}(1\u2212p)p2{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                                Normal distributionf(x\u2223\u03bc,\u03c32)=12\u03c0\u03c32e\u2212(x\u2212\u03bc)22\u03c32{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\u03bc{\\displaystyle \\mu }\u03c32{\\displaystyle \\sigma ^{2}}
                                                                Uniform distribution (continuous)f(x\u2223a,b)={1b\u2212afor a\u2264x\u2264b,0for x<a or x>b{\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}a+b2{\\displaystyle {\\frac {a+b}{2}}}(b\u2212a)212{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                                Exponential distributionf(x\u2223\u03bb)=\u03bbe\u2212\u03bbx{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}1\u03bb{\\displaystyle {\\frac {1}{\\lambda }}}1\u03bb2{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                                Poisson distributionf(k\u2223\u03bb)=e\u2212\u03bb\u03bbkk!{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\u03bb{\\displaystyle \\lambda }\u03bb{\\displaystyle \\lambda }

                                                                Properties

                                                                Basic properties

                                                                Variance is non-negative because the squares are positive or zero:\n

                                                                {\\displaystyle \\operatorname {Var} (X)\\geq 0.}

                                                                The variance of a constant is zero.\n

                                                                {\\displaystyle \\operatorname {Var} (a)=0.}

                                                                Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                                {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}

                                                                Issues of finiteness

                                                                If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index{\\displaystyle k} satisfies {\\displaystyle 1<k\\leq 2.}

                                                                Decomposition

                                                                The general formula for variance decomposition or the law of total variance is: If {\\displaystyle X} and {\\displaystyle Y} are two random variables, and the variance of {\\displaystyle X} exists, then\n

                                                                {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}

                                                                The conditional expectation{\\displaystyle \\operatorname {E} (X\\mid Y)} of {\\displaystyle X} given {\\displaystyle Y}, and the conditional variance{\\displaystyle \\operatorname {Var} (X\\mid Y)} may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y=y)} given the event Y = y. This quantity depends on the particular value y; it is a function {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}. That same function evaluated at the random variable Y is the conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}

                                                                In particular, if {\\displaystyle Y} is a discrete random variable assuming possible values {\\displaystyle y_{1},y_{2},y_{3}\\ldots } with corresponding probabilities {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}, then in the formula for total variance, the first term on the right-hand side becomes\n

                                                                {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}

                                                                where {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}. Similarly, the second term on the right-hand side becomes\n

                                                                {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}

                                                                where {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]} and {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}. Thus the total variance is given by\n

                                                                {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}

                                                                A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                                {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}

                                                                here {\\displaystyle {\\mathit {MS}}} refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                                {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}

                                                                This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                                Similar decompositions are possible for the sum of squared deviations (sum of squares, {\\displaystyle {\\mathit {SS}}}):\n

                                                                {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}
                                                                {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}

                                                                Calculation from the CDF

                                                                The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution functionF using\n

                                                                {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}

                                                                This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                                Characteristic property

                                                                The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}. Conversely, if a continuous function {\\displaystyle \\varphi } satisfies {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)} for all random variables X, then it is necessarily of the form {\\displaystyle \\varphi (x)=ax^{2}+b}, where a > 0. This also holds in the multidimensional case.[3]

                                                                Units of measurement

                                                                Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                                The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                                Propagation

                                                                Addition and multiplication by a constant

                                                                Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                                {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}

                                                                If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                                {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}

                                                                The variance of a sum of two random variables is given by\n

                                                                {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}
                                                                {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}

                                                                where {\\displaystyle \\operatorname {Cov} (X,Y)} is the covariance.\n

                                                                Linear combinations

                                                                In general, for the sum of {\\displaystyle N} random variables {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}, the variance becomes:\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}

                                                                see also general Bienaym\u00e9's identity.\n

                                                                These results lead to the variance of a linear combination as:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}

                                                                If the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are such that\n

                                                                {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}

                                                                then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}

                                                                Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables {\\displaystyle X_{1},\\dots ,X_{n}} are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                                Matrix notation for the variance of a linear combination

                                                                Define {\\displaystyle X} as a column vector of {\\displaystyle n} random variables {\\displaystyle X_{1},\\ldots ,X_{n}}, and {\\displaystyle c} as a column vector of {\\displaystyle n} scalars {\\displaystyle c_{1},\\ldots ,c_{n}}. Therefore, {\\displaystyle c^{\\mathsf {T}}X} is a linear combination of these random variables, where {\\displaystyle c^{\\mathsf {T}}} denotes the transpose of {\\displaystyle c}. Also let {\\displaystyle \\Sigma } be the covariance matrix of {\\displaystyle X}. The variance of {\\displaystyle c^{\\mathsf {T}}X} is then given by:[4]

                                                                {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}

                                                                This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                                {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}

                                                                Sum of variables

                                                                Sum of uncorrelated variables

                                                                One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}

                                                                This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                                {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}

                                                                That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                                To prove the initial statement, it suffices to show that\n

                                                                {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}

                                                                The general result then follows by induction. Starting with the definition,\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}

                                                                Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}

                                                                Sum of correlated variables

                                                                Sum of correlated variables with fixed sample size

                                                                In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}

                                                                (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                                Here, {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )} is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                                So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                                {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}

                                                                This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                                {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}

                                                                This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                                {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}

                                                                Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                                Sum of uncorrelated variables with random sample size

                                                                There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}[8]

                                                                which follows from the law of total variance.\n

                                                                If N has a Poisson distribution, then {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)} with estimator n = N. So, the estimator of {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)} becomes {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}, giving {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n(see standard error of the sample mean).\n

                                                                Weighted sum of variables

                                                                The scaling property and the Bienaym\u00e9 formula, along with the property of the covarianceCov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                                {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}

                                                                This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                                The expression above can be extended to a weighted sum of multiple variables:\n

                                                                {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}

                                                                Product of variables

                                                                Product of independent variables

                                                                If two variables X and Y are independent, the variance of their product is given by[9]

                                                                {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}

                                                                Equivalently, using the basic properties of expectation, it is given by\n

                                                                {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}

                                                                Product of statistically dependent variables

                                                                In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}

                                                                Arbitrary functions

                                                                The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                                {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}

                                                                provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                                Population variance and sample variance

                                                                Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of nobservations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                                The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n,n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10]n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]

                                                                Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                                Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                                Population variance

                                                                In general, the population variance of a finitepopulation of size N with values xi is given by

                                                                \u03c32=1N\u2211i=1N(xi\u2212\u03bc)2=1N\u2211i=1N(xi2\u22122\u03bcxi+\u03bc2)=(1N\u2211i=1Nxi2)\u22122\u03bc(1N\u2211i=1Nxi)+\u03bc2=E\u2061[xi2]\u2212\u03bc2{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}

                                                                where the population mean is {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}} and {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}, where {\\textstyle \\operatorname {E} } is the expectation value operator.\n

                                                                The population variance can also be computed using[13]

                                                                {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}

                                                                (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because

                                                                12N2\u2211i,j=1N(xi\u2212xj)2=12N2\u2211i,j=1N(xi2\u22122xixj+xj2)=12N\u2211j=1N(1N\u2211i=1Nxi2)\u2212(1N\u2211i=1Nxi)(1N\u2211j=1Nxj)+12N\u2211i=1N(1N\u2211j=1Nxj2)=12(\u03c32+\u03bc2)\u2212\u03bc2+12(\u03c32+\u03bc2)=\u03c32.{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}

                                                                The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                                Sample variance

                                                                Biased sample variance

                                                                In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                                We take a sample with replacement of n values Y1, ..., Yn from the population of size {\\textstyle N}, where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                                {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}[16]

                                                                (See the section Population variance for the derivation of this formula.) Here, {\\displaystyle {\\overline {Y}}} denotes the sample mean:\n

                                                                {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}

                                                                Since the Yi are selected randomly, both {\\displaystyle {\\overline {Y}}} and {\\displaystyle {\\tilde {S}}_{Y}^{2}} are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For {\\displaystyle {\\tilde {S}}_{Y}^{2}} this gives:\n

                                                                {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}

                                                                Here {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}} derived in the section Population variance and {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}} due to independency of {\\textstyle Y_{i}} and {\\textstyle Y_{j}} are used.\n

                                                                Hence {\\textstyle {\\tilde {S}}_{Y}^{2}} gives an estimate of the population variance that is biased by a factor of {\\textstyle {\\frac {n-1}{n}}} as the expectation value of {\\textstyle {\\tilde {S}}_{Y}^{2}} is smaller than the population variance (true variance) by that factor. For this reason, {\\textstyle {\\tilde {S}}_{Y}^{2}} is referred to as the biased sample variance.\n

                                                                Unbiased sample variance

                                                                Correcting for this bias yields the unbiased sample variance, denoted {\\displaystyle S^{2}}:\n

                                                                {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}

                                                                Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                                The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                                The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                                Example

                                                                For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                                Distribution of the sample variance

                                                                Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample varianceS2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]

                                                                {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}

                                                                where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                                {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}

                                                                and[18]

                                                                {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}

                                                                If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]

                                                                {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}

                                                                where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                                If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]

                                                                Samuelson's inequality

                                                                Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}

                                                                Relations with the harmonic and arithmetic means

                                                                It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                                {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}

                                                                where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and {\\displaystyle \\sigma _{y}^{2}} is the (biased) variance of the sample.\n

                                                                This bound has been improved, and it is known that variance is bounded by\n

                                                                {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}
                                                                {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}

                                                                where ymin is the minimum of the sample.[25]

                                                                Tests of equality of variances

                                                                The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                                Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                                The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                                Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                                Moment of inertia

                                                                The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of {\\displaystyle \\Sigma } is given by\n

                                                                {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}

                                                                This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                                {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}

                                                                That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                                {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}

                                                                Semivariance

                                                                The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:

                                                                Semivariance=1n\u2211i:xi<\u03bc(xi\u2212\u03bc)2{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}

                                                                It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]

                                                                For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                                Etymology

                                                                The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations {\\displaystyle \\sigma _{1}} and {\\displaystyle \\sigma _{2}}, it is found that the distribution, when both causes act together, has a standard deviation {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}. It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                                Generalizations

                                                                For complex variables

                                                                If {\\displaystyle x} is a scalar complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ,} then its variance is {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],} where {\\displaystyle x^{*}} is the complex conjugate of {\\displaystyle x.} This variance is a real scalar.\n

                                                                For vector-valued random variables

                                                                As a matrix

                                                                If {\\displaystyle X} is a vector-valued random variable, with values in {\\displaystyle \\mathbb {R} ^{n},} and thought of as a column vector, then a natural generalization of variance is {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],} where {\\displaystyle \\mu =\\operatorname {E} (X)} and {\\displaystyle X^{\\operatorname {T} }} is the transpose of {\\displaystyle X,} and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                                If {\\displaystyle X} is a vector- and complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ^{n},} then the covariance matrix is{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],} where {\\displaystyle X^{\\dagger }} is the conjugate transpose of {\\displaystyle X.} This matrix is also positive semi-definite and square.\n

                                                                As a scalar

                                                                Another generalization of variance for vector-valued random variables {\\displaystyle X}, which results in a scalar value rather than in a matrix, is the generalized variance{\\displaystyle \\det(C)}, the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]

                                                                A different generalization is obtained by considering the equation for the scalar variance, {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}, and reinterpreting {\\displaystyle (X-\\mu )^{2}} as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector {\\displaystyle X-\\mu } with itself. This results in {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),} which is the trace of the covariance matrix.\n

                                                                See also

                                                                  Types of variance

                                                                    References

                                                                      ", "statics": {"paragraph": 178, "paragraph.text": 297, "paragraph.equation-inline": 122, "image": 2, "list": 74, "list.text": 15, "title": 49, "list.equation-inline": 71, "table": 1, "equation-interline": 3}, "url": "https://en.m.wikipedia.org/wiki/Variance", "content": "In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation(SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by ${\\displaystyle \\sigma ^{2}}$ , ${\\displaystyle s^{2}}$ , ${\\displaystyle \\operatorname {Var} (X)}$ , ${\\displaystyle V(X)}$ , or ${\\displaystyle \\mathbb {V} (X)}$ .[ 1]\n\nAn advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n\nThere are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n\nThe two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n\n1. A frequency distribution is constructed.\n2. The centroid of the distribution gives its mean.\n3. A square with sides equal to the difference of each value from the mean is formed for each value.\n4. Arranging the squares into a rectangle with one side equal to the number of values, n , results in the other side being the distribution's variance, \u03c3 2 .\n\n## Definition\n\nedit\n\nThe variance of a random variable ${\\displaystyle X}$ is the expected value of the squared deviation from the mean of ${\\displaystyle X}$ , ${\\displaystyle \\mu =\\operatorname {E} [X]}$ :\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}$\n\nThis definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}$\n\nThe variance is also equivalent to the second cumulant of a probability distribution that generates ${\\displaystyle X}$ . The variance is typically designated as ${\\displaystyle \\operatorname {Var} (X)}$ , or sometimes as ${\\displaystyle V(X)}$ or ${\\displaystyle \\mathbb {V} (X)}$ , or symbolically as ${\\displaystyle \\sigma _{X}^{2}}$ or simply ${\\displaystyle \\sigma ^{2}}$ (pronounced \" sigma squared\"). The expression for the variance can be expanded as follows:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}$\n\nIn other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n\n### Discrete random variable\n\nedit\n\nIf the generator of random variable ${\\displaystyle X}$ is discrete with probability mass function ${\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}$ , then\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}$\n\nwhere ${\\displaystyle \\mu }$ is the expected value. That is,\n\n1. ${\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}$\n\n(When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n\nThe variance of a collection of ${\\displaystyle n}$ equally likely values can be written as\n\n1. ${\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}$\n\nwhere ${\\displaystyle \\mu }$ is the average value. That is,\n\n1. ${\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}$\n\nThe variance of a set of ${\\displaystyle n}$ equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[ 2]\n\n1. ${\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}$\n\n### Absolutely continuous random variable\n\nedit\n\nIf the random variable ${\\displaystyle X}$ has a probability density function ${\\displaystyle f(x)}$ , and ${\\displaystyle F(x)}$ is the corresponding cumulative distribution function, then\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}$\n\nor equivalently,\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}$\n\nwhere ${\\displaystyle \\mu }$ is the expected value of ${\\displaystyle X}$ given by\n\n1. ${\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}$\n\nIn these formulas, the integrals with respect to ${\\displaystyle dx}$ and ${\\displaystyle dF(x)}$ are Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n\nIf the function ${\\displaystyle x^{2}f(x)}$ is Riemann-integrable on every finite interval ${\\displaystyle [a,b]\\subset \\mathbb {R} ,}$ then\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}$\n\nwhere the integral is an improper Riemann integral.\n\n## Examples\n\nedit\n\n### Exponential distribution\n\nedit\n\nThe exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n\n1. ${\\displaystyle f(x)=\\lambda e^{-\\lambda x}}$\n\non the interval[0, \u221e). Its mean can be shown to be\n\n1. ${\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}$\n\nUsing integration by parts and making use of the expected value already calculated, we have:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}$\n\nThus, the variance of X is given by\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}$\n\n### Fair dice\n\nedit\n\nA fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is ${\\displaystyle (1+2+3+4+5+6)/6=7/2.}$ Therefore, the variance of X is\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}$\n\nThe general formula for the variance of the outcome, X, of an n-sided die is\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}$\n\n### Commonly used probability distributions\n\nedit\n\nThe following table lists the variance for some commonly used probability distributions.\n\n| Name of the probability distribution | Probability distribution function | Mean | Variance |\n|---|---|---|---|\n| Binomial distribution | Pr
                                                                      (
                                                                      X
                                                                      =
                                                                      k
                                                                      )
                                                                      =
                                                                      (
                                                                      n
                                                                      k
                                                                      )
                                                                      p
                                                                      k
                                                                      (
                                                                      1
                                                                      \u2212
                                                                      p
                                                                      )
                                                                      n
                                                                      \u2212
                                                                      k
                                                                      {\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}} | n
                                                                      p
                                                                      {\\displaystyle np} | n
                                                                      p
                                                                      (
                                                                      1
                                                                      \u2212
                                                                      p
                                                                      )
                                                                      {\\displaystyle np(1-p)} |\n| Geometric distribution | Pr
                                                                      (
                                                                      X
                                                                      =
                                                                      k
                                                                      )
                                                                      =
                                                                      (
                                                                      1
                                                                      \u2212
                                                                      p
                                                                      )
                                                                      k
                                                                      \u2212
                                                                      1
                                                                      p
                                                                      {\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p} | 1
                                                                      p
                                                                      {\\displaystyle {\\frac {1}{p}}} | (
                                                                      1
                                                                      \u2212
                                                                      p
                                                                      )
                                                                      p
                                                                      2
                                                                      {\\displaystyle {\\frac {(1-p)}{p^{2}}}} |\n| Normal distribution | f
                                                                      (
                                                                      x
                                                                      \u2223
                                                                      \u03bc
                                                                      ,
                                                                      \u03c3
                                                                      2
                                                                      )
                                                                      =
                                                                      1
                                                                      2
                                                                      \u03c0
                                                                      \u03c3
                                                                      2
                                                                      e
                                                                      \u2212
                                                                      (
                                                                      x
                                                                      \u2212
                                                                      \u03bc
                                                                      )
                                                                      2
                                                                      2
                                                                      \u03c3
                                                                      2
                                                                      {\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}} | \u03bc
                                                                      {\\displaystyle \\mu } | \u03c3
                                                                      2
                                                                      {\\displaystyle \\sigma ^{2}} |\n| Uniform distribution (continuous) | f
                                                                      (
                                                                      x
                                                                      \u2223
                                                                      a
                                                                      ,
                                                                      b
                                                                      )
                                                                      =
                                                                      {
                                                                      1
                                                                      b
                                                                      \u2212
                                                                      a
                                                                      for
                                                                      a
                                                                      \u2264
                                                                      x
                                                                      \u2264
                                                                      b
                                                                      ,
                                                                      0
                                                                      for
                                                                      x
                                                                      <
                                                                      a
                                                                      or
                                                                      x
                                                                      >
                                                                      b
                                                                      {\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}xb\\end{cases}}} | a
                                                                      +
                                                                      b
                                                                      2
                                                                      {\\displaystyle {\\frac {a+b}{2}}} | (
                                                                      b
                                                                      \u2212
                                                                      a
                                                                      )
                                                                      2
                                                                      12
                                                                      {\\displaystyle {\\frac {(b-a)^{2}}{12}}} |\n| Exponential distribution | f
                                                                      (
                                                                      x
                                                                      \u2223
                                                                      \u03bb
                                                                      )
                                                                      =
                                                                      \u03bb
                                                                      e
                                                                      \u2212
                                                                      \u03bb
                                                                      x
                                                                      {\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}} | 1
                                                                      \u03bb
                                                                      {\\displaystyle {\\frac {1}{\\lambda }}} | 1
                                                                      \u03bb
                                                                      2
                                                                      {\\displaystyle {\\frac {1}{\\lambda ^{2}}}} |\n| Poisson distribution | f
                                                                      (
                                                                      k
                                                                      \u2223
                                                                      \u03bb
                                                                      )
                                                                      =
                                                                      e
                                                                      \u2212
                                                                      \u03bb
                                                                      \u03bb
                                                                      k
                                                                      k
                                                                      !
                                                                      {\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}} | \u03bb
                                                                      {\\displaystyle \\lambda } | \u03bb
                                                                      {\\displaystyle \\lambda } |\n\n## Properties\n\nedit\n\n### Basic properties\n\nedit\n\nVariance is non-negative because the squares are positive or zero:\n\n1. ${\\displaystyle \\operatorname {Var} (X)\\geq 0.}$\n\nThe variance of a constant is zero.\n\n1. ${\\displaystyle \\operatorname {Var} (a)=0.}$\n\nConversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n\n1. ${\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}$\n\n### Issues of finiteness\n\nedit\n\nIf a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index ${\\displaystyle k}$ satisfies ${\\displaystyle 1 0. This also holds in the multidimensional case.[ 3]\n\n### Units of measurement\n\nedit\n\nUnlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is\u221a 2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n\nThe standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n\n## Propagation\n\nedit\n\n### Addition and multiplication by a constant\n\nedit\n\nVariance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n\n1. ${\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}$\n\nIf all values are scaled by a constant, the variance is scaled by the square of that constant:\n\n1. ${\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}$\n\nThe variance of a sum of two random variables is given by\n\n1. ${\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}$\n\n1. ${\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}$\n\nwhere ${\\displaystyle \\operatorname {Cov} (X,Y)}$ is the covariance.\n\n### Linear combinations\n\nedit\n\nIn general, for the sum of ${\\displaystyle N}$ random variables ${\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}$ , the variance becomes:\n\n1. ${\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}$\n\nsee also general Bienaym\u00e9's identity.\n\nThese results lead to the variance of a linear combination as:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i\n\n\n\nVariance - Wikipedia\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                      \n\t
                                                                      \n\t\t\n\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t\t\n\t\t\t\t
                                                                      \n\t\t\t\t\t\n\t\t\t\t\t\t\"Wikipedia\"\n\n\n\n\t\t\t\t\t\n\t\t\t\t
                                                                      \n\t\t\t\t\t
                                                                      \n\t\t\t\t
                                                                      \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t
                                                                      \n\t\t\t\t\n
                                                                      \n\t\t\n\t\t\t
                                                                      \n\t\t
                                                                      \n\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t
                                                                      \n\n\t\t\t
                                                                      \n\t\t\t\t
                                                                      \n\t\t\t\t\t

                                                                      Variance

                                                                      \n\t\t\t\t\t
                                                                      \n\t\t\t\t
                                                                      \n\t\t\t\t\t
                                                                        \n\t\t\t\t\t\t\t
                                                                      • \n\t\t\t\t\t\t\t\tArticle\n\t\t\t\t\t\t\t
                                                                      • \n\t\t\t\t\t\t\t
                                                                      • \n\t\t\t\t\t\t\t\tTalk\n\t\t\t\t\t\t\t
                                                                      • \n\t\t\t\t\t
                                                                      \n\t\t\t\t\n\n\t\t\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t\t
                                                                      \n
                                                                      This article is about the mathematical concept. For other uses, see Variance (disambiguation).
                                                                      \n

                                                                      In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n\"{\\displaystyle, \n \n \n \n \n s\n \n 2\n \n \n \n \n {\\displaystyle s^{2}}\n \n\"{\\displaystyle, \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\operatorname {Var} (X)}\n \n\"{\\displaystyle, \n \n \n \n V\n (\n X\n )\n \n \n {\\displaystyle V(X)}\n \n\"{\\displaystyle, or \n \n \n \n \n V\n \n (\n X\n )\n \n \n {\\displaystyle \\mathbb {V} (X)}\n \n\"{\\displaystyle.[1]\n

                                                                      Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.
                                                                      \n

                                                                      An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                                      There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                                      The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                                      \n

                                                                      Contents

                                                                      \n\n
                                                                      \n
                                                                      \n
                                                                      Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                                      1. A frequency distribution is constructed.
                                                                      2. The centroid of the distribution gives its mean.
                                                                      3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                                      4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.
                                                                      \n

                                                                      Definition

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The variance of a random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is the expected value of the squared deviation from the mean of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n , \n \n \n \n \u03bc\n =\n E\n \u2061\n [\n X\n ]\n \n \n {\\displaystyle \\mu =\\operatorname {E} [X]}\n \n :\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n ]\n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}\n \n 
                                                                      \n

                                                                      This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n Cov\n \u2061\n (\n X\n ,\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}\n \n 
                                                                      \n

                                                                      The variance is also equivalent to the second cumulant of a probability distribution that generates \n \n \n \n X\n \n \n {\\displaystyle X}\n \n . The variance is typically designated as \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\operatorname {Var} (X)}\n \n , or sometimes as \n \n \n \n V\n (\n X\n )\n \n \n {\\displaystyle V(X)}\n \n  or \n \n \n \n \n V\n \n (\n X\n )\n \n \n {\\displaystyle \\mathbb {V} (X)}\n \n , or symbolically as \n \n \n \n \n \u03c3\n \n X\n \n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{X}^{2}}\n \n  or simply \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n  (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n E\n \u2061\n [\n X\n ]\n \n )\n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n \u2212\n 2\n X\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n 2\n E\n \u2061\n [\n X\n ]\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n 2\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}\n \n 
                                                                      \n

                                                                      In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                                      \n

                                                                      Discrete random variable

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If the generator of random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is discrete with probability mass function \n \n \n \n \n x\n \n 1\n \n \n \u21a6\n \n p\n \n 1\n \n \n ,\n \n x\n \n 2\n \n \n \u21a6\n \n p\n \n 2\n \n \n ,\n \u2026\n ,\n \n x\n \n n\n \n \n \u21a6\n \n p\n \n n\n \n \n \n \n {\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}\n \n , then\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n p\n \n i\n \n \n \u22c5\n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}\n \n 
                                                                      \n

                                                                      where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the expected value. That is,\n

                                                                      \n
                                                                      \n \n \n \n \u03bc\n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n p\n \n i\n \n \n \n x\n \n i\n \n \n .\n \n \n {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}\n \n 
                                                                      \n

                                                                      (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                                      The variance of a collection of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  equally likely values can be written as\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}\n \n 
                                                                      \n

                                                                      where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the average value. That is,\n

                                                                      \n
                                                                      \n \n \n \n \u03bc\n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n x\n \n i\n \n \n .\n \n \n {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}\n \n 
                                                                      \n

                                                                      The variance of a set of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \n 1\n 2\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n 2\n \n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n \n \n \n \u2211\n \n j\n >\n i\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}\n \n 
                                                                      \n

                                                                      Absolutely continuous random variable

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If the random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  has a probability density function \n \n \n \n f\n (\n x\n )\n \n \n {\\displaystyle f(x)}\n \n , and \n \n \n \n F\n (\n x\n )\n \n \n {\\displaystyle F(x)}\n \n  is the corresponding cumulative distribution function, then\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u03c3\n \n 2\n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n (\n x\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n 2\n \u03bc\n \n \u222b\n \n \n R\n \n \n \n x\n f\n (\n x\n )\n \n d\n x\n +\n \n \u03bc\n \n 2\n \n \n \n \u222b\n \n \n R\n \n \n \n f\n (\n x\n )\n \n d\n x\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n 2\n \u03bc\n \n \u222b\n \n \n R\n \n \n \n x\n \n d\n F\n (\n x\n )\n +\n \n \u03bc\n \n 2\n \n \n \n \u222b\n \n \n R\n \n \n \n \n d\n F\n (\n x\n )\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n 2\n \u03bc\n \u22c5\n \u03bc\n +\n \n \u03bc\n \n 2\n \n \n \u22c5\n 1\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}\n \n 
                                                                      \n

                                                                      or equivalently,\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}\n \n 
                                                                      \n

                                                                      where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the expected value of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  given by\n

                                                                      \n
                                                                      \n \n \n \n \u03bc\n =\n \n \u222b\n \n \n R\n \n \n \n x\n f\n (\n x\n )\n \n d\n x\n =\n \n \u222b\n \n \n R\n \n \n \n x\n \n d\n F\n (\n x\n )\n .\n \n \n {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}\n \n 
                                                                      \n

                                                                      In these formulas, the integrals with respect to \n \n \n \n d\n x\n \n \n {\\displaystyle dx}\n \n  and \n \n \n \n d\n F\n (\n x\n )\n \n \n {\\displaystyle dF(x)}\n \n \nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                                      If the function \n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n \n {\\displaystyle x^{2}f(x)}\n \n  is Riemann-integrable on every finite interval \n \n \n \n [\n a\n ,\n b\n ]\n \u2282\n \n R\n \n ,\n \n \n {\\displaystyle [a,b]\\subset \\mathbb {R} ,}\n \n  then\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u222b\n \n \u2212\n \u221e\n \n \n +\n \u221e\n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}\n \n 
                                                                      \n

                                                                      where the integral is an improper Riemann integral.\n

                                                                      \n

                                                                      Examples

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Exponential distribution

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                                      \n
                                                                      \n \n \n \n f\n (\n x\n )\n =\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n \n {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}\n \n 
                                                                      \n

                                                                      on the interval [0, \u221e). Its mean can be shown to be\n

                                                                      \n
                                                                      \n \n \n \n E\n \u2061\n [\n X\n ]\n =\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n x\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n =\n \n \n 1\n \u03bb\n \n \n .\n \n \n {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}\n \n 
                                                                      \n

                                                                      Using integration by parts and making use of the expected value already calculated, we have:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \n \n \n =\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n \n x\n \n 2\n \n \n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n \n \n \n \n \n \n =\n \n \n [\n \n \u2212\n \n x\n \n 2\n \n \n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n ]\n \n \n 0\n \n \n \u221e\n \n \n +\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n 2\n x\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n \n \n \n \n \n \n =\n 0\n +\n \n \n 2\n \u03bb\n \n \n E\n \u2061\n [\n X\n ]\n \n \n \n \n \n \n =\n \n \n 2\n \n \u03bb\n \n 2\n \n \n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Thus, the variance of X is given by\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n =\n \n \n 2\n \n \u03bb\n \n 2\n \n \n \n \n \u2212\n \n \n (\n \n \n 1\n \u03bb\n \n \n )\n \n \n 2\n \n \n =\n \n \n 1\n \n \u03bb\n \n 2\n \n \n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}\n \n 
                                                                      \n

                                                                      Fair dice

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is \n \n \n \n (\n 1\n +\n 2\n +\n 3\n +\n 4\n +\n 5\n +\n 6\n )\n \n /\n \n 6\n =\n 7\n \n /\n \n 2.\n \n \n {\\displaystyle (1+2+3+4+5+6)/6=7/2.}\n \n  Therefore, the variance of X is\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n 6\n \n \n \n \n 1\n 6\n \n \n \n \n (\n \n i\n \u2212\n \n \n 7\n 2\n \n \n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n 1\n 6\n \n \n \n (\n \n (\n \u2212\n 5\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n \u2212\n 3\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n \u2212\n 1\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 1\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 3\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 5\n \n /\n \n 2\n \n )\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 35\n 12\n \n \n \u2248\n 2.92.\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}\n \n 
                                                                      \n

                                                                      The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n E\n \u2061\n \n (\n \n X\n \n 2\n \n \n )\n \n \u2212\n (\n E\n \u2061\n (\n X\n )\n \n )\n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n i\n \n 2\n \n \n \u2212\n \n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n i\n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n \n (\n n\n +\n 1\n )\n (\n 2\n n\n +\n 1\n )\n \n 6\n \n \n \u2212\n \n \n (\n \n \n \n n\n +\n 1\n \n 2\n \n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n \n \n n\n \n 2\n \n \n \u2212\n 1\n \n 12\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Commonly used probability distributions

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The following table lists the variance for some commonly used probability distributions.\n

                                                                      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                      Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                                      Binomial distribution\n\n \n \n \n Pr\n \n (\n X\n =\n k\n )\n =\n \n \n \n (\n \n \n n\n k\n \n \n )\n \n \n \n \n p\n \n k\n \n \n (\n 1\n \u2212\n p\n \n )\n \n n\n \u2212\n k\n \n \n \n \n {\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}\n \n \n\n \n \n \n n\n p\n \n \n {\\displaystyle np}\n \n \n\n \n \n \n n\n p\n (\n 1\n \u2212\n p\n )\n \n \n {\\displaystyle np(1-p)}\n \n \n
                                                                      Geometric distribution\n\n \n \n \n Pr\n \n (\n X\n =\n k\n )\n =\n (\n 1\n \u2212\n p\n \n )\n \n k\n \u2212\n 1\n \n \n p\n \n \n {\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}\n \n \n\n \n \n \n \n \n 1\n p\n \n \n \n \n {\\displaystyle {\\frac {1}{p}}}\n \n \n\n \n \n \n \n \n \n (\n 1\n \u2212\n p\n )\n \n \n p\n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\frac {(1-p)}{p^{2}}}}\n \n \n
                                                                      Normal distribution\n\n \n \n \n f\n \n (\n \n x\n \u2223\n \u03bc\n ,\n \n \u03c3\n \n 2\n \n \n \n )\n \n =\n \n \n 1\n \n 2\n \u03c0\n \n \u03c3\n \n 2\n \n \n \n \n \n \n e\n \n \u2212\n \n \n \n (\n x\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n 2\n \n \u03c3\n \n 2\n \n \n \n \n \n \n \n \n \n {\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\n \n \n\n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n \n\n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n \n
                                                                      Uniform distribution (continuous)\n\n \n \n \n f\n (\n x\n \u2223\n a\n ,\n b\n )\n =\n \n \n {\n \n \n \n \n \n 1\n \n b\n \u2212\n a\n \n \n \n \n \n \n for \n \n a\n \u2264\n x\n \u2264\n b\n ,\n \n \n \n \n 0\n \n \n \n for \n \n x\n <\n a\n \n or \n \n x\n >\n b\n \n \n \n \n \n \n \n \n {\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}\n \n \n\n \n \n \n \n \n \n a\n +\n b\n \n 2\n \n \n \n \n {\\displaystyle {\\frac {a+b}{2}}}\n \n \n\n \n \n \n \n \n \n (\n b\n \u2212\n a\n \n )\n \n 2\n \n \n \n 12\n \n \n \n \n {\\displaystyle {\\frac {(b-a)^{2}}{12}}}\n \n \n
                                                                      Exponential distribution\n\n \n \n \n f\n (\n x\n \u2223\n \u03bb\n )\n =\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n \n {\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}\n \n \n\n \n \n \n \n \n 1\n \u03bb\n \n \n \n \n {\\displaystyle {\\frac {1}{\\lambda }}}\n \n \n\n \n \n \n \n \n 1\n \n \u03bb\n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\frac {1}{\\lambda ^{2}}}}\n \n \n
                                                                      Poisson distribution\n\n \n \n \n f\n (\n k\n \u2223\n \u03bb\n )\n =\n \n \n \n \n e\n \n \u2212\n \u03bb\n \n \n \n \u03bb\n \n k\n \n \n \n \n k\n !\n \n \n \n \n \n {\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\n \n \n\n \n \n \n \u03bb\n \n \n {\\displaystyle \\lambda }\n \n \n\n \n \n \n \u03bb\n \n \n {\\displaystyle \\lambda }\n \n \n
                                                                      \n

                                                                      Properties

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Basic properties

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Variance is non-negative because the squares are positive or zero:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n \u2265\n 0.\n \n \n {\\displaystyle \\operatorname {Var} (X)\\geq 0.}\n \n 
                                                                      \n

                                                                      The variance of a constant is zero.\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n a\n )\n =\n 0.\n \n \n {\\displaystyle \\operatorname {Var} (a)=0.}\n \n 
                                                                      \n

                                                                      Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n 0\n \n \u27fa\n \n \u2203\n a\n :\n P\n (\n X\n =\n a\n )\n =\n 1.\n \n \n {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}\n \n 
                                                                      \n

                                                                      Issues of finiteness

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index \n \n \n \n k\n \n \n {\\displaystyle k}\n \n  satisfies \n \n \n \n 1\n <\n k\n \u2264\n 2.\n \n \n {\\displaystyle 1<k\\leq 2.}\n \n \n

                                                                      \n

                                                                      Decomposition

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The general formula for variance decomposition or the law of total variance is: If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  and \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n  are two random variables, and the variance of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  exists, then\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n [\n X\n ]\n =\n E\n \u2061\n (\n Var\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n +\n Var\n \u2061\n (\n E\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}\n \n 
                                                                      \n

                                                                      The conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n )\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y)}\n \n  of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  given \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n , and the conditional variance \n \n \n \n Var\n \u2061\n (\n X\n \u2223\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (X\\mid Y)}\n \n  may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n =\n y\n )\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y=y)}\n \n  given the event Y = y. This quantity depends on the particular value y; it is a function \n \n \n \n g\n (\n y\n )\n =\n E\n \u2061\n (\n X\n \u2223\n Y\n =\n y\n )\n \n \n {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}\n \n . That same function evaluated at the random variable Y is the conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n )\n =\n g\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}\n \n \n

                                                                      In particular, if \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n  is a discrete random variable assuming possible values \n \n \n \n \n y\n \n 1\n \n \n ,\n \n y\n \n 2\n \n \n ,\n \n y\n \n 3\n \n \n \u2026\n \n \n {\\displaystyle y_{1},y_{2},y_{3}\\ldots }\n \n  with corresponding probabilities \n \n \n \n \n p\n \n 1\n \n \n ,\n \n p\n \n 2\n \n \n ,\n \n p\n \n 3\n \n \n \u2026\n ,\n \n \n {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}\n \n , then in the formula for total variance, the first term on the right-hand side becomes\n

                                                                      \n
                                                                      \n \n \n \n E\n \u2061\n (\n Var\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}\n \n 
                                                                      \n

                                                                      where \n \n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n =\n Var\n \u2061\n [\n X\n \u2223\n Y\n =\n \n y\n \n i\n \n \n ]\n \n \n {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}\n \n . Similarly, the second term on the right-hand side becomes\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n E\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \n (\n \n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n \n )\n \n \n 2\n \n \n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}\n \n 
                                                                      \n

                                                                      where \n \n \n \n \n \u03bc\n \n i\n \n \n =\n E\n \u2061\n [\n X\n \u2223\n Y\n =\n \n y\n \n i\n \n \n ]\n \n \n {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]}\n \n  and \n \n \n \n \u03bc\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n \n \n {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}\n \n . Thus the total variance is given by\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n [\n X\n ]\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n +\n \n (\n \n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \u03bc\n \n 2\n \n \n \n )\n \n .\n \n \n {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}\n \n 
                                                                      \n

                                                                      A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n M\n S\n \n \n \n total\n \n \n =\n \n \n \n M\n S\n \n \n \n between\n \n \n +\n \n \n \n M\n S\n \n \n \n within\n \n \n ;\n \n \n {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}\n \n 
                                                                      \n

                                                                      here \n \n \n \n \n \n M\n S\n \n \n \n \n {\\displaystyle {\\mathit {MS}}}\n \n  refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n M\n S\n \n \n \n total\n \n \n =\n \n \n \n M\n S\n \n \n \n regression\n \n \n +\n \n \n \n M\n S\n \n \n \n residual\n \n \n .\n \n \n {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}\n \n 
                                                                      \n

                                                                      This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                                      Similar decompositions are possible for the sum of squared deviations (sum of squares, \n \n \n \n \n \n S\n S\n \n \n \n \n {\\displaystyle {\\mathit {SS}}}\n \n ):\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n S\n S\n \n \n \n total\n \n \n =\n \n \n \n S\n S\n \n \n \n between\n \n \n +\n \n \n \n S\n S\n \n \n \n within\n \n \n ,\n \n \n {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}\n \n 
                                                                      \n
                                                                      \n \n \n \n \n \n \n S\n S\n \n \n \n total\n \n \n =\n \n \n \n S\n S\n \n \n \n regression\n \n \n +\n \n \n \n S\n S\n \n \n \n residual\n \n \n .\n \n \n {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}\n \n 
                                                                      \n

                                                                      Calculation from the CDF

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution function F using\n

                                                                      \n
                                                                      \n \n \n \n 2\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n u\n (\n 1\n \u2212\n F\n (\n u\n )\n )\n \n d\n u\n \u2212\n \n \n (\n \n \n \u222b\n \n 0\n \n \n \u221e\n \n \n (\n 1\n \u2212\n F\n (\n u\n )\n )\n \n d\n u\n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}\n \n 
                                                                      \n

                                                                      This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                                      \n

                                                                      Characteristic property

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. \n \n \n \n \n \n a\n r\n g\n m\n i\n n\n \n \n m\n \n \n \n \n E\n \n \n (\n \n \n (\n \n X\n \u2212\n m\n \n )\n \n \n 2\n \n \n )\n \n =\n \n E\n \n (\n X\n )\n \n \n {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}\n \n . Conversely, if a continuous function \n \n \n \n \u03c6\n \n \n {\\displaystyle \\varphi }\n \n  satisfies \n \n \n \n \n \n a\n r\n g\n m\n i\n n\n \n \n m\n \n \n \n \n E\n \n (\n \u03c6\n (\n X\n \u2212\n m\n )\n )\n =\n \n E\n \n (\n X\n )\n \n \n {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)}\n \n  for all random variables X, then it is necessarily of the form \n \n \n \n \u03c6\n (\n x\n )\n =\n a\n \n x\n \n 2\n \n \n +\n b\n \n \n {\\displaystyle \\varphi (x)=ax^{2}+b}\n \n , where a > 0. This also holds in the multidimensional case.[3]\n

                                                                      \n

                                                                      Units of measurement

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                                      The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                                      \n

                                                                      Propagation

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Addition and multiplication by a constant

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n +\n a\n )\n =\n Var\n \u2061\n (\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}\n \n 
                                                                      \n

                                                                      If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n a\n X\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}\n \n 
                                                                      \n

                                                                      The variance of a sum of two random variables is given by\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n a\n X\n +\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n +\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}\n \n 
                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n a\n X\n \u2212\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n \u2212\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}\n \n 
                                                                      \n

                                                                      where \n \n \n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Cov} (X,Y)}\n \n  is the covariance.\n

                                                                      \n

                                                                      Linear combinations

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      In general, for the sum of \n \n \n \n N\n \n \n {\\displaystyle N}\n \n  random variables \n \n \n \n {\n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n }\n \n \n {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}\n \n , the variance becomes:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n \n \u2211\n \n i\n \u2260\n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n ,\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}\n \n 
                                                                      \n

                                                                      see also general Bienaym\u00e9's identity.\n

                                                                      These results lead to the variance of a linear combination as:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n \n X\n \n i\n \n \n \n )\n \n \n \n \n =\n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n \n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n \n \u2211\n \n i\n \u2260\n j\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n \n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n <\n j\n \u2264\n N\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}\n \n 
                                                                      \n

                                                                      If the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{N}}\n \n  are such that\n

                                                                      \n
                                                                      \n \n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n =\n 0\n \n ,\n \n \u2200\n \n (\n i\n \u2260\n j\n )\n ,\n \n \n {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}\n \n 
                                                                      \n

                                                                      then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{N}}\n \n  are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}\n \n 
                                                                      \n

                                                                      Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n n\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{n}}\n \n  are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                                      \n

                                                                      Matrix notation for the variance of a linear combination

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Define \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  as a column vector of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n n\n \n \n \n \n {\\displaystyle X_{1},\\ldots ,X_{n}}\n \n , and \n \n \n \n c\n \n \n {\\displaystyle c}\n \n  as a column vector of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  scalars \n \n \n \n \n c\n \n 1\n \n \n ,\n \u2026\n ,\n \n c\n \n n\n \n \n \n \n {\\displaystyle c_{1},\\ldots ,c_{n}}\n \n . Therefore, \n \n \n \n \n c\n \n \n T\n \n \n \n X\n \n \n {\\displaystyle c^{\\mathsf {T}}X}\n \n  is a linear combination of these random variables, where \n \n \n \n \n c\n \n \n T\n \n \n \n \n \n {\\displaystyle c^{\\mathsf {T}}}\n \n  denotes the transpose of \n \n \n \n c\n \n \n {\\displaystyle c}\n \n . Also let \n \n \n \n \u03a3\n \n \n {\\displaystyle \\Sigma }\n \n  be the covariance matrix of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n . The variance of \n \n \n \n \n c\n \n \n T\n \n \n \n X\n \n \n {\\displaystyle c^{\\mathsf {T}}X}\n \n  is then given by:[4]\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n c\n \n \n T\n \n \n \n X\n \n )\n \n =\n \n c\n \n \n T\n \n \n \n \u03a3\n c\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}\n \n 
                                                                      \n

                                                                      This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \n x\n \u00af\n \n \n \n )\n \n =\n Var\n \u2061\n \n (\n \n \n \n 1\n n\n \n \n \n 1\n \u2032\n \n X\n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n 1\n \u2032\n \n \u03a3\n 1.\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}\n \n 
                                                                      \n

                                                                      Sum of variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Sum of uncorrelated variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n\n

                                                                      One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}\n \n 
                                                                      \n

                                                                      This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n Var\n \u2061\n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n \n (\n \n X\n \n i\n \n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n n\n \n \u03c3\n \n 2\n \n \n =\n \n \n \n \u03c3\n \n 2\n \n \n n\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}\n \n 
                                                                      \n

                                                                      That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                                      To prove the initial statement, it suffices to show that\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n =\n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}\n \n 
                                                                      \n

                                                                      The general result then follows by induction. Starting with the definition,\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n (\n X\n +\n Y\n \n )\n \n 2\n \n \n \n ]\n \n \u2212\n (\n E\n \u2061\n [\n X\n +\n Y\n ]\n \n )\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n +\n 2\n X\n Y\n +\n \n Y\n \n 2\n \n \n \n ]\n \n \u2212\n (\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n Y\n ]\n \n )\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n +\n 2\n E\n \u2061\n [\n X\n Y\n ]\n +\n E\n \u2061\n \n [\n \n Y\n \n 2\n \n \n ]\n \n \u2212\n \n (\n \n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n +\n 2\n E\n \u2061\n [\n X\n ]\n E\n \u2061\n [\n Y\n ]\n +\n E\n \u2061\n [\n Y\n \n ]\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n +\n E\n \u2061\n \n [\n \n Y\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \u2212\n E\n \u2061\n [\n Y\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n Y\n )\n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Sum of correlated variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n
                                                                      Sum of correlated variables with fixed sample size
                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n

                                                                      In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n \n (\n \n X\n \n i\n \n \n )\n \n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n <\n j\n \u2264\n n\n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n \n )\n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}\n \n 
                                                                      \n

                                                                      (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                                      Here, \n \n \n \n Cov\n \u2061\n (\n \u22c5\n ,\n \u22c5\n )\n \n \n {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )}\n \n  is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                                      So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \n \n \n \u03c3\n \n 2\n \n \n n\n \n \n +\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \u03c1\n \n \u03c3\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}\n \n 
                                                                      \n

                                                                      This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \n \n 1\n n\n \n \n +\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \u03c1\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}\n \n 
                                                                      \n

                                                                      This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                                      \n
                                                                      \n \n \n \n \n lim\n \n n\n \u2192\n \u221e\n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \u03c1\n .\n \n \n {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}\n \n 
                                                                      \n

                                                                      Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                                      \n
                                                                      Sum of uncorrelated variables with random sample size
                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n E\n \u2061\n \n [\n N\n ]\n \n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n N\n )\n (\n E\n \u2061\n \n [\n X\n ]\n \n \n )\n \n 2\n \n \n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}\n \n [8]
                                                                      \n

                                                                      which follows from the law of total variance.\n

                                                                      If N has a Poisson distribution, then \n \n \n \n E\n \u2061\n [\n N\n ]\n =\n Var\n \u2061\n (\n N\n )\n \n \n {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)}\n \n  with estimator n = N. So, the estimator of \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)}\n \n  becomes \n \n \n \n n\n \n \n \n S\n \n x\n \n \n \n \n 2\n \n \n +\n n\n \n \n \n \n X\n \u00af\n \n \n \n \n 2\n \n \n \n \n {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}\n \n , giving \n \n \n \n SE\n \u2061\n (\n \n \n \n X\n \u00af\n \n \n \n )\n =\n \n \n \n \n \n \n \n S\n \n x\n \n \n \n \n 2\n \n \n +\n \n \n \n \n X\n \u00af\n \n \n \n \n 2\n \n \n \n n\n \n \n \n \n \n {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n \n \n(see standard error of the sample mean).\n

                                                                      \n

                                                                      Weighted sum of variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n
                                                                      Not to be confused with Weighted variance.
                                                                      \n

                                                                      The scaling property and the Bienaym\u00e9 formula, along with the property of the covariance Cov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n a\n X\n \u00b1\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n \u00b1\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}\n \n 
                                                                      \n

                                                                      This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                                      The expression above can be extended to a weighted sum of multiple variables:\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n \n \n n\n \n \n \n a\n \n i\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n \n \n \n \u2211\n \n <\n j\n \u2264\n n\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}\n \n 
                                                                      \n

                                                                      Product of variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Product of independent variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If two variables X and Y are independent, the variance of their product is given by[9]\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n +\n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n X\n )\n Var\n \u2061\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}\n \n 
                                                                      \n

                                                                      Equivalently, using the basic properties of expectation, it is given by\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n E\n \u2061\n \n (\n \n X\n \n 2\n \n \n )\n \n E\n \u2061\n \n (\n \n Y\n \n 2\n \n \n )\n \n \u2212\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}\n \n 
                                                                      \n

                                                                      Product of statistically dependent variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n \n\n \n \n \n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n \n Y\n \n 2\n \n \n \n ]\n \n \u2212\n [\n E\n \u2061\n (\n X\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n 2\n \n \n ,\n \n Y\n \n 2\n \n \n \n )\n \n +\n E\n \u2061\n (\n \n X\n \n 2\n \n \n )\n E\n \u2061\n \n (\n \n Y\n \n 2\n \n \n )\n \n \u2212\n [\n E\n \u2061\n (\n X\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n 2\n \n \n ,\n \n Y\n \n 2\n \n \n \n )\n \n +\n \n (\n \n Var\n \u2061\n (\n X\n )\n +\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n \n )\n \n \n (\n \n Var\n \u2061\n (\n Y\n )\n +\n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n \u2212\n [\n Cov\n \u2061\n (\n X\n ,\n Y\n )\n +\n E\n \u2061\n (\n X\n )\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Arbitrary functions

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n

                                                                      The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n [\n \n f\n (\n X\n )\n \n ]\n \n \u2248\n \n \n (\n \n \n f\n \u2032\n \n (\n E\n \u2061\n \n [\n X\n ]\n \n )\n \n )\n \n \n 2\n \n \n Var\n \u2061\n \n [\n X\n ]\n \n \n \n {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}\n \n 
                                                                      \n

                                                                      provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                                      \n

                                                                      Population variance and sample variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      \n

                                                                      \n\n

                                                                      Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of n observations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                                      The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n, n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10] n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]\n

                                                                      Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                                      Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                                      \n

                                                                      Population variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      In general, the population variance of a finite population of size N with values xi is given by\n \n \n \n \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n \n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n \n 2\n \n \n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n (\n \n \n x\n \n i\n \n \n 2\n \n \n \u2212\n 2\n \u03bc\n \n x\n \n i\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n 2\n \u03bc\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n )\n \n +\n \n \u03bc\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n [\n \n x\n \n i\n \n \n 2\n \n \n ]\n \u2212\n \n \u03bc\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}\n \n where the population mean is \n \n \n \n \u03bc\n =\n E\n \u2061\n [\n \n x\n \n i\n \n \n ]\n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n \n {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}}\n \n  and \n \n \n \n E\n \u2061\n [\n \n x\n \n i\n \n \n 2\n \n \n ]\n =\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \n \n {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}\n \n , where \n \n \n \n E\n \n \n {\\textstyle \\operatorname {E} }\n \n  is the expectation value operator.\n

                                                                      The population variance can also be computed using[13]\n

                                                                      \n
                                                                      \n \n \n \n \n \u03c3\n \n 2\n \n \n =\n \n \n 1\n \n N\n \n 2\n \n \n \n \n \n \u2211\n \n i\n <\n j\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n =\n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}\n \n 
                                                                      \n

                                                                      (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because\n \n \n \n \n \n \n \n \n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n (\n \n \n x\n \n i\n \n \n 2\n \n \n \u2212\n 2\n \n x\n \n i\n \n \n \n x\n \n j\n \n \n +\n \n x\n \n j\n \n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n \n 2\n N\n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n )\n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n x\n \n j\n \n \n \n )\n \n +\n \n \n 1\n \n 2\n N\n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n x\n \n j\n \n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n 2\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \u2212\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n 2\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \u03c3\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}\n \n The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                                      \n

                                                                      Sample variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n

                                                                      Biased sample variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                                      We take a sample with replacement of n values Y1, ..., Yn from the population of size \n \n \n \n N\n \n \n {\\textstyle N}\n \n , where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n =\n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n Y\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n \n \n \n Y\n \u00af\n \n \n \n 2\n \n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n ,\n j\n \n :\n \n i\n <\n j\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n Y\n \n j\n \n \n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}\n \n [16]
                                                                      \n

                                                                      (See the section Population variance for the derivation of this formula.) Here, \n \n \n \n \n \n Y\n \u00af\n \n \n \n \n {\\displaystyle {\\overline {Y}}}\n \n  denotes the sample mean:\n

                                                                      \n
                                                                      \n \n \n \n \n \n Y\n \u00af\n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n Y\n \n i\n \n \n .\n \n \n {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}\n \n 
                                                                      \n

                                                                      Since the Yi are selected randomly, both \n \n \n \n \n \n Y\n \u00af\n \n \n \n \n {\\displaystyle {\\overline {Y}}}\n \n  and \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}}\n \n  are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}}\n \n  this gives:\n

                                                                      \n
                                                                      \n \n \n \n \n \n \n \n E\n \u2061\n [\n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n ]\n \n \n \n =\n E\n \u2061\n \n [\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n 1\n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n \n )\n \n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n 2\n \n \n \u2212\n \n \n 2\n n\n \n \n \n Y\n \n i\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n \n \u2211\n \n k\n =\n 1\n \n \n n\n \n \n \n Y\n \n k\n \n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n (\n \n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \u2212\n \n \n 2\n n\n \n \n \n (\n \n \n \u2211\n \n j\n \u2260\n i\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n \n ]\n \n +\n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \n )\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n k\n \u2260\n j\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n j\n \n \n \n Y\n \n k\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n j\n \n \n 2\n \n \n ]\n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n (\n \n \n \n \n n\n \u2212\n 2\n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \u2212\n \n \n 2\n n\n \n \n \n \u2211\n \n j\n \u2260\n i\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n k\n \u2260\n j\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n j\n \n \n \n Y\n \n k\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n j\n \n \n 2\n \n \n ]\n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n [\n \n \n \n \n n\n \u2212\n 2\n \n n\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \u2212\n \n \n 2\n n\n \n \n (\n n\n \u2212\n 1\n )\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n n\n (\n n\n \u2212\n 1\n )\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n n\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \n \u03c3\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}\n \n 
                                                                      \n

                                                                      Here \n \n \n \n \n \u03c3\n \n 2\n \n \n =\n E\n \u2061\n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \u2212\n \n \u03bc\n \n 2\n \n \n \n \n {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}}\n \n  derived in the section Population variance and \n \n \n \n E\n \u2061\n [\n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n ]\n =\n E\n \u2061\n [\n \n Y\n \n i\n \n \n ]\n E\n \u2061\n [\n \n Y\n \n j\n \n \n ]\n =\n \n \u03bc\n \n 2\n \n \n \n \n {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}}\n \n  due to independency of \n \n \n \n \n Y\n \n i\n \n \n \n \n {\\textstyle Y_{i}}\n \n  and \n \n \n \n \n Y\n \n j\n \n \n \n \n {\\textstyle Y_{j}}\n \n  are used.\n

                                                                      Hence \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  gives an estimate of the population variance that is biased by a factor of \n \n \n \n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \n \n {\\textstyle {\\frac {n-1}{n}}}\n \n  as the expectation value of \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  is smaller than the population variance (true variance) by that factor. For this reason, \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  is referred to as the biased sample variance.\n

                                                                      \n

                                                                      Unbiased sample variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Correcting for this bias yields the unbiased sample variance, denoted \n \n \n \n \n S\n \n 2\n \n \n \n \n {\\displaystyle S^{2}}\n \n :\n

                                                                      \n
                                                                      \n \n \n \n \n S\n \n 2\n \n \n =\n \n \n n\n \n n\n \u2212\n 1\n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n =\n \n \n n\n \n n\n \u2212\n 1\n \n \n \n \n [\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n \n ]\n \n =\n \n \n 1\n \n n\n \u2212\n 1\n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n \n \n {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}\n \n 
                                                                      \n

                                                                      Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                                      The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                                      The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                                      \n
                                                                      Example
                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                                      \n

                                                                      Distribution of the sample variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n
                                                                      Distribution and cumulative distribution of S2/\u03c32, for various values of \u03bd = n \u2212 1, when the yi are independent normally distributed.
                                                                      \n

                                                                      Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample variance S2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]\n

                                                                      \n
                                                                      \n \n \n \n (\n n\n \u2212\n 1\n )\n \n \n \n S\n \n 2\n \n \n \n \u03c3\n \n 2\n \n \n \n \n \u223c\n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n \n {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}\n \n 
                                                                      \n

                                                                      where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                                      \n
                                                                      \n \n \n \n E\n \u2061\n \n (\n \n S\n \n 2\n \n \n )\n \n =\n E\n \u2061\n \n (\n \n \n \n \n \u03c3\n \n 2\n \n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n )\n \n =\n \n \u03c3\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}\n \n 
                                                                      \n

                                                                      and[18]\n

                                                                      \n
                                                                      \n \n \n \n Var\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n Var\n \u2061\n \n (\n \n \n \n \n \u03c3\n \n 2\n \n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n )\n \n =\n \n \n \n \u03c3\n \n 4\n \n \n \n (\n n\n \u2212\n 1\n \n )\n \n 2\n \n \n \n \n \n Var\n \u2061\n \n (\n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n )\n \n =\n \n \n \n 2\n \n \u03c3\n \n 4\n \n \n \n \n n\n \u2212\n 1\n \n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}\n \n 
                                                                      \n

                                                                      If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]\n

                                                                      \n
                                                                      \n \n \n \n E\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n \n \u03c3\n \n 2\n \n \n ,\n \n Var\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n \n \n \n \u03c3\n \n 4\n \n \n n\n \n \n \n (\n \n \u03ba\n \u2212\n 1\n +\n \n \n 2\n \n n\n \u2212\n 1\n \n \n \n \n )\n \n =\n \n \n 1\n n\n \n \n \n (\n \n \n \u03bc\n \n 4\n \n \n \u2212\n \n \n \n n\n \u2212\n 3\n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c3\n \n 4\n \n \n \n )\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}\n \n 
                                                                      \n

                                                                      where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                                      If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]\n

                                                                      \n

                                                                      Samuelson's inequality

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits \n \n \n \n \n \n \n y\n \u00af\n \n \n \n \u00b1\n \n \u03c3\n \n Y\n \n \n (\n n\n \u2212\n 1\n \n )\n \n 1\n \n /\n \n 2\n \n \n .\n \n \n {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}\n \n \n

                                                                      \n

                                                                      Relations with the harmonic and arithmetic means

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                                      \n
                                                                      \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2264\n 2\n \n y\n \n max\n \n \n (\n A\n \u2212\n H\n )\n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}\n \n 
                                                                      \n

                                                                      where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{y}^{2}}\n \n  is the (biased) variance of the sample.\n

                                                                      This bound has been improved, and it is known that variance is bounded by\n

                                                                      \n
                                                                      \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2264\n \n \n \n \n y\n \n max\n \n \n (\n A\n \u2212\n H\n )\n (\n \n y\n \n max\n \n \n \u2212\n A\n )\n \n \n \n y\n \n max\n \n \n \u2212\n H\n \n \n \n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}\n \n 
                                                                      \n
                                                                      \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2265\n \n \n \n \n y\n \n min\n \n \n (\n A\n \u2212\n H\n )\n (\n A\n \u2212\n \n y\n \n min\n \n \n )\n \n \n H\n \u2212\n \n y\n \n min\n \n \n \n \n \n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}\n \n 
                                                                      \n

                                                                      where ymin is the minimum of the sample.[25]\n

                                                                      \n

                                                                      Tests of equality of variances

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                                      Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                                      The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                                      Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                                      \n

                                                                      Moment of inertia

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n

                                                                      The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of \n \n \n \n \u03a3\n \n \n {\\displaystyle \\Sigma }\n \n  is given by[citation needed]\n

                                                                      \n
                                                                      \n \n \n \n I\n =\n n\n \n (\n \n \n \n 1\n \n \n 3\n \u00d7\n 3\n \n \n tr\n \u2061\n (\n \u03a3\n )\n \u2212\n \u03a3\n \n )\n \n .\n \n \n {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}\n \n 
                                                                      \n

                                                                      This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                                      \n
                                                                      \n \n \n \n \u03a3\n =\n \n \n [\n \n \n \n 10\n \n \n 0\n \n \n 0\n \n \n \n \n 0\n \n \n 0.1\n \n \n 0\n \n \n \n \n 0\n \n \n 0\n \n \n 0.1\n \n \n \n ]\n \n \n .\n \n \n {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}\n \n 
                                                                      \n

                                                                      That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                                      \n
                                                                      \n \n \n \n I\n =\n n\n \n \n [\n \n \n \n 0.2\n \n \n 0\n \n \n 0\n \n \n \n \n 0\n \n \n 10.1\n \n \n 0\n \n \n \n \n 0\n \n \n 0\n \n \n 10.1\n \n \n \n ]\n \n \n .\n \n \n {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}\n \n 
                                                                      \n

                                                                      Semivariance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:\n \n \n \n \n Semivariance\n \n =\n \n \n 1\n \n n\n \n \n \n \n \u2211\n \n i\n :\n \n x\n \n i\n \n \n <\n \u03bc\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}\n \n It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]\n

                                                                      For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                                      \n

                                                                      Etymology

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      The term variance was first introduced by Ronald Fisher in his 1918 paper The Correlation Between Relatives on the Supposition of Mendelian Inheritance:[28]\n

                                                                      \n

                                                                      The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations \n \n \n \n \n \u03c3\n \n 1\n \n \n \n \n {\\displaystyle \\sigma _{1}}\n \n  and \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{2}}\n \n , it is found that the distribution, when both causes act together, has a standard deviation \n \n \n \n \n \n \n \u03c3\n \n 1\n \n \n 2\n \n \n +\n \n \u03c3\n \n 2\n \n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}\n \n . It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                                      \n

                                                                      Generalizations

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      For complex variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If \n \n \n \n x\n \n \n {\\displaystyle x}\n \n  is a scalar complex-valued random variable, with values in \n \n \n \n \n C\n \n ,\n \n \n {\\displaystyle \\mathbb {C} ,}\n \n  then its variance is \n \n \n \n E\n \u2061\n \n [\n \n (\n x\n \u2212\n \u03bc\n )\n (\n x\n \u2212\n \u03bc\n \n )\n \n \u2217\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],}\n \n  where \n \n \n \n \n x\n \n \u2217\n \n \n \n \n {\\displaystyle x^{*}}\n \n  is the complex conjugate of \n \n \n \n x\n .\n \n \n {\\displaystyle x.}\n \n  This variance is a real scalar.\n

                                                                      \n

                                                                      For vector-valued random variables

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      As a matrix

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is a vector-valued random variable, with values in \n \n \n \n \n \n R\n \n \n n\n \n \n ,\n \n \n {\\displaystyle \\mathbb {R} ^{n},}\n \n  and thought of as a column vector, then a natural generalization of variance is \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n )\n (\n X\n \u2212\n \u03bc\n \n )\n \n T\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],}\n \n  where \n \n \n \n \u03bc\n =\n E\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\mu =\\operatorname {E} (X)}\n \n  and \n \n \n \n \n X\n \n T\n \n \n \n \n {\\displaystyle X^{\\operatorname {T} }}\n \n  is the transpose of \n \n \n \n X\n ,\n \n \n {\\displaystyle X,}\n \n  and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                                      If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is a vector- and complex-valued random variable, with values in \n \n \n \n \n \n C\n \n \n n\n \n \n ,\n \n \n {\\displaystyle \\mathbb {C} ^{n},}\n \n  then the covariance matrix is \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n )\n (\n X\n \u2212\n \u03bc\n \n )\n \n \u2020\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],}\n \n  where \n \n \n \n \n X\n \n \u2020\n \n \n \n \n {\\displaystyle X^{\\dagger }}\n \n  is the conjugate transpose of \n \n \n \n X\n .\n \n \n {\\displaystyle X.}\n \n [citation needed] This matrix is also positive semi-definite and square.\n

                                                                      \n

                                                                      As a scalar

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n

                                                                      Another generalization of variance for vector-valued random variables \n \n \n \n X\n \n \n {\\displaystyle X}\n \n , which results in a scalar value rather than in a matrix, is the generalized variance \n \n \n \n det\n (\n C\n )\n \n \n {\\displaystyle \\det(C)}\n \n , the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]\n

                                                                      A different generalization is obtained by considering the equation for the scalar variance, \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n ]\n \n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}\n \n , and reinterpreting \n \n \n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle (X-\\mu )^{2}}\n \n  as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector \n \n \n \n X\n \u2212\n \u03bc\n \n \n {\\displaystyle X-\\mu }\n \n  with itself. This results in \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n T\n \n \n (\n X\n \u2212\n \u03bc\n )\n \n ]\n \n =\n tr\n \u2061\n (\n C\n )\n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),}\n \n  which is the trace of the covariance matrix.\n

                                                                      \n

                                                                      See also

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n
                                                                      \n
                                                                      \n\n
                                                                      Look up variance in Wiktionary, the free dictionary.
                                                                      \n
                                                                      \n\n

                                                                      Types of variance

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n\n

                                                                      References

                                                                      \n\n \nedit\n\n\n\n\n
                                                                      \n
                                                                      \n
                                                                        \n
                                                                      1. ^ Wasserman, Larry (2005). All of Statistics: a concise course in statistical inference. Springer texts in statistics. p. 51. ISBN 978-1-4419-2322-6.\n
                                                                      2. \n
                                                                      3. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                      4. \n
                                                                      5. ^ Kagan, A.; Shepp, L. A. (1998). \"Why the variance?\". Statistics & Probability Letters. 38 (4): 329\u2013333. doi:10.1016/S0167-7152(98)00041-8.\n
                                                                      6. \n
                                                                      7. ^ Johnson, Richard; Wichern, Dean (2001). Applied Multivariate Statistical Analysis. Prentice Hall. p. 76. ISBN 0-13-187715-1.\n
                                                                      8. \n
                                                                      9. ^ Lo\u00e8ve, M. (1977) \"Probability Theory\", Graduate Texts in Mathematics, Volume 45, 4th edition, Springer-Verlag, p. 12.\n
                                                                      10. \n
                                                                      11. ^ Bienaym\u00e9, I.-J. (1853) \"Consid\u00e9rations \u00e0 l'appui de la d\u00e9couverte de Laplace sur la loi de probabilit\u00e9 dans la m\u00e9thode des moindres carr\u00e9s\", Comptes rendus de l'Acad\u00e9mie des sciences Paris, 37, p. 309\u2013317; digital copy available [1]\n
                                                                      12. \n
                                                                      13. ^ Bienaym\u00e9, I.-J. (1867) \"Consid\u00e9rations \u00e0 l'appui de la d\u00e9couverte de Laplace sur la loi de probabilit\u00e9 dans la m\u00e9thode des moindres carr\u00e9s\", Journal de Math\u00e9matiques Pures et Appliqu\u00e9es, S\u00e9rie 2, Tome 12, p. 158\u2013167; digital copy available [2][3]\n
                                                                      14. \n
                                                                      15. ^ Cornell, J R, and Benjamin, C A, Probability, Statistics, and Decisions for Civil Engineers, McGraw-Hill, NY, 1970, pp.178-9.\n
                                                                      16. \n
                                                                      17. ^ Goodman, Leo A. (December 1960). \"On the Exact Variance of Products\". Journal of the American Statistical Association. 55 (292): 708\u2013713. doi:10.2307/2281592. JSTOR 2281592.\n
                                                                      18. \n
                                                                      19. ^ a b Reichmann, W. J. (1961). \"Appendix 8\". Use and Abuse of Statistics (Reprinted 1964\u20131970 by Pelican ed.). London: Methuen.\n
                                                                      20. \n
                                                                      21. ^ a b Kourouklis, Stavros (2012). \"A New Estimator of the Variance Based on Minimizing Mean Squared Error\". The American Statistician. 66 (4): 234\u2013236. doi:10.1080/00031305.2012.735209. ISSN 0003-1305. JSTOR 23339501.\n
                                                                      22. \n
                                                                      23. ^ Brugger, R. M. (1969). \"A Note on Unbiased Estimation of the Standard Deviation\". The American Statistician. 23 (4): 32. doi:10.1080/00031305.1969.1048186 (inactive 16 December 2024).{{cite journal}}: CS1 maint: DOI inactive as of December 2024 (link)\n
                                                                      24. \n
                                                                      25. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                      26. \n
                                                                      27. ^ Navidi, William (2006) Statistics for Engineers and Scientists, McGraw-Hill, p. 14.\n
                                                                      28. \n
                                                                      29. ^ Montgomery, D. C. and Runger, G. C. (1994) Applied statistics and probability for engineers, page 201. John Wiley & Sons New York\n
                                                                      30. \n
                                                                      31. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                      32. \n
                                                                      33. ^ Knight K. (2000), Mathematical Statistics, Chapman and Hall, New York. (proposition 2.11)\n
                                                                      34. \n
                                                                      35. ^ Casella and Berger (2002) Statistical Inference, Example 7.3.3, p. 331 [full citation needed]\n
                                                                      36. \n
                                                                      37. ^ Mood, A. M., Graybill, F. A., and Boes, D.C. (1974) Introduction to the Theory of Statistics, 3rd Edition, McGraw-Hill, New York, p. 229\n
                                                                      38. \n
                                                                      39. ^ Kenney, John F.; Keeping, E.S. (1951). Mathematics of Statistics. Part Two (PDF) (2nd ed.). Princeton, New Jersey: D. Van Nostrand Company, Inc. Archived from the original (PDF) on Nov 17, 2018 \u2013 via KrishiKosh.\n
                                                                      40. \n
                                                                      41. ^ Rose, Colin; Smith, Murray D. (2002). \"Mathematical Statistics with Mathematica\". Springer-Verlag, New York.\n
                                                                      42. \n
                                                                      43. ^ Weisstein, Eric W. \"Sample Variance Distribution\". MathWorld Wolfram.\n
                                                                      44. \n
                                                                      45. ^ Samuelson, Paul (1968). \"How Deviant Can You Be?\". Journal of the American Statistical Association. 63 (324): 1522\u20131525. doi:10.1080/01621459.1968.10480944. JSTOR 2285901.\n
                                                                      46. \n
                                                                      47. ^ Mercer, A. McD. (2000). \"Bounds for A\u2013G, A\u2013H, G\u2013H, and a family of inequalities of Ky Fan's type, using a general method\". J. Math. Anal. Appl. 243 (1): 163\u2013173. doi:10.1006/jmaa.1999.6688.\n
                                                                      48. \n
                                                                      49. ^ Sharma, R. (2008). \"Some more inequalities for arithmetic mean, harmonic mean and variance\". Journal of Mathematical Inequalities. 2 (1): 109\u2013114. CiteSeerX 10.1.1.551.9397. doi:10.7153/jmi-02-11.\n
                                                                      50. \n
                                                                      51. ^ a b Magnello, M. Eileen. \"Karl Pearson and the Origins of Modern Statistics: An Elastician becomes a Statistician\". The Rutherford Journal.\n
                                                                      52. \n
                                                                      53. ^ Fama, Eugene F.; French, Kenneth R. (2010-04-21). \"Q&A: Semi-Variance: A Better Risk Measure?\". Fama/French Forum.\n
                                                                      54. \n
                                                                      55. ^ Ronald Fisher (1918) The correlation between relatives on the supposition of Mendelian Inheritance\n
                                                                      56. \n
                                                                      57. ^ Kocherlakota, S.; Kocherlakota, K. (2004). \"Generalized Variance\". Encyclopedia of Statistical Sciences. Wiley Online Library. doi:10.1002/0471667196.ess0869. ISBN 0-471-66719-6.\n
                                                                      58. \n
                                                                      \n
                                                                      \n
                                                                      \n
                                                                      \n
                                                                      \n\n\n\n\n
                                                                      \n\n
                                                                      \n\n\t\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t\t
                                                                      \n\t\t
                                                                      \n\t\t\n\t\t\t
                                                                      \n
                                                                      \n
                                                                      \n\n\n\n\n\n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

                                                                      In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by {\\displaystyle \\sigma ^{2}}, {\\displaystyle s^{2}}, {\\displaystyle \\operatorname {Var} (X)}, {\\displaystyle V(X)}, or {\\displaystyle \\mathbb {V} (X)}.[1]

                                                                      ", "content": [{"c": "In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation(SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by", "t": "text"}, {"c": "{\\displaystyle \\sigma ^{2}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle s^{2}}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle V(X)}", "t": "equation-inline"}, {"c": ", or", "t": "text"}, {"c": "{\\displaystyle \\mathbb {V} (X)}", "t": "equation-inline"}, {"c": ".[ 1]", "t": "text"}]}, {"type": "image", "raw_content": "
                                                                      Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.
                                                                      ", "content": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Comparison_standard_deviations.svg/400px-Comparison_standard_deviations.svg.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "

                                                                      An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                                      ", "content": [{"c": "An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                                      ", "content": [{"c": "There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                                      ", "content": [{"c": "The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.", "t": "text"}]}, {"type": "image", "raw_content": "
                                                                      Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                                      ", "content": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Variance_visualisation.svg/220px-Variance_visualisation.svg.png", "data": null, "alt": null, "title": null, "caption": null}}, {"type": "list", "raw_content": "
                                                                      1. A frequency distribution is constructed.
                                                                      2. The centroid of the distribution gives its mean.
                                                                      3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                                      4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.
                                                                      ", "content": {"items": [[[{"c": "A frequency distribution is constructed.", "t": "text"}]], [[{"c": "The centroid of the distribution gives its mean.", "t": "text"}]], [[{"c": "A square with sides equal to the difference of each value from the mean is formed for each value.", "t": "text"}]], [[{"c": "Arranging the squares into a rectangle with one side equal to the number of values, ", "t": "text"}, {"c": "n", "t": "text"}, {"c": ", results in the other side being the distribution's variance, ", "t": "text"}, {"c": "\u03c3", "t": "text"}, {"c": "2", "t": "text"}, {"c": ".", "t": "text"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Definition

                                                                      ", "content": {"title_content": "Definition", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a random variable {\\displaystyle X} is the expected value of the squared deviation from the mean of {\\displaystyle X}, {\\displaystyle \\mu =\\operatorname {E} [X]}:\n

                                                                      ", "content": [{"c": "The variance of a random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is the expected value of the squared deviation from the mean of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ",", "t": "text"}, {"c": "{\\displaystyle \\mu =\\operatorname {E} [X]}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                                      ", "content": [{"c": "This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The variance is also equivalent to the second cumulant of a probability distribution that generates {\\displaystyle X}. The variance is typically designated as {\\displaystyle \\operatorname {Var} (X)}, or sometimes as {\\displaystyle V(X)} or {\\displaystyle \\mathbb {V} (X)}, or symbolically as {\\displaystyle \\sigma _{X}^{2}} or simply {\\displaystyle \\sigma ^{2}} (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                                      ", "content": [{"c": "The variance is also equivalent to the second cumulant of a probability distribution that generates", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ". The variance is typically designated as", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)}", "t": "equation-inline"}, {"c": ", or sometimes as", "t": "text"}, {"c": "{\\displaystyle V(X)}", "t": "equation-inline"}, {"c": "or", "t": "text"}, {"c": "{\\displaystyle \\mathbb {V} (X)}", "t": "equation-inline"}, {"c": ", or symbolically as", "t": "text"}, {"c": "{\\displaystyle \\sigma _{X}^{2}}", "t": "equation-inline"}, {"c": "or simply", "t": "text"}, {"c": "{\\displaystyle \\sigma ^{2}}", "t": "equation-inline"}, {"c": "(pronounced \" sigma squared\"). The expression for the variance can be expanded as follows:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                                      ", "content": [{"c": "In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Discrete random variable

                                                                      ", "content": {"title_content": "Discrete random variable", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If the generator of random variable {\\displaystyle X} is discrete with probability mass function{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}, then\n

                                                                      ", "content": [{"c": "If the generator of random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is discrete with probability mass function", "t": "text"}, {"c": "{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}", "t": "equation-inline"}, {"c": ", then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\mu } is the expected value. That is,\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the expected value. That is,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                                      ", "content": [{"c": "(When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a collection of {\\displaystyle n} equally likely values can be written as\n

                                                                      ", "content": [{"c": "The variance of a collection of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "equally likely values can be written as", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\mu } is the average value. That is,\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the average value. That is,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a set of {\\displaystyle n} equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]

                                                                      ", "content": [{"c": "The variance of a set of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[ 2]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Absolutely continuous random variable

                                                                      ", "content": {"title_content": "Absolutely continuous random variable", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If the random variable {\\displaystyle X} has a probability density function{\\displaystyle f(x)}, and {\\displaystyle F(x)} is the corresponding cumulative distribution function, then\n

                                                                      ", "content": [{"c": "If the random variable", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "has a probability density function", "t": "text"}, {"c": "{\\displaystyle f(x)}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "{\\displaystyle F(x)}", "t": "equation-inline"}, {"c": "is the corresponding cumulative distribution function, then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      or equivalently,\n

                                                                      ", "content": [{"c": "or equivalently,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\mu } is the expected value of {\\displaystyle X} given by\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu }", "t": "equation-inline"}, {"c": "is the expected value of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      In these formulas, the integrals with respect to {\\displaystyle dx} and {\\displaystyle dF(x)}\nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                                      ", "content": [{"c": "In these formulas, the integrals with respect to", "t": "text"}, {"c": "{\\displaystyle dx}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle dF(x)}", "t": "equation-inline"}, {"c": "are Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If the function {\\displaystyle x^{2}f(x)} is Riemann-integrable on every finite interval {\\displaystyle [a,b]\\subset \\mathbb {R} ,} then\n

                                                                      ", "content": [{"c": "If the function", "t": "text"}, {"c": "{\\displaystyle x^{2}f(x)}", "t": "equation-inline"}, {"c": "is Riemann-integrable on every finite interval", "t": "text"}, {"c": "{\\displaystyle [a,b]\\subset \\mathbb {R} ,}", "t": "equation-inline"}, {"c": "then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where the integral is an improper Riemann integral.\n

                                                                      ", "content": [{"c": "where the integral is an improper Riemann integral.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Examples

                                                                      ", "content": {"title_content": "Examples", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Exponential distribution

                                                                      ", "content": {"title_content": "Exponential distribution", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                                      ", "content": [{"c": "The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle f(x)=\\lambda e^{-\\lambda x}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      on the interval [0, \u221e). Its mean can be shown to be\n

                                                                      ", "content": [{"c": "on the interval[0, \u221e). Its mean can be shown to be", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Using integration by parts and making use of the expected value already calculated, we have:\n

                                                                      ", "content": [{"c": "Using integration by parts and making use of the expected value already calculated, we have:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Thus, the variance of X is given by\n

                                                                      ", "content": [{"c": "Thus, the variance of X is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Fair dice

                                                                      ", "content": {"title_content": "Fair dice", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is {\\displaystyle (1+2+3+4+5+6)/6=7/2.} Therefore, the variance of X is\n

                                                                      ", "content": [{"c": "A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is", "t": "text"}, {"c": "{\\displaystyle (1+2+3+4+5+6)/6=7/2.}", "t": "equation-inline"}, {"c": "Therefore, the variance of X is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                                      ", "content": [{"c": "The general formula for the variance of the outcome, X, of an n-sided die is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Commonly used probability distributions

                                                                      ", "content": {"title_content": "Commonly used probability distributions", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The following table lists the variance for some commonly used probability distributions.\n

                                                                      ", "content": [{"c": "The following table lists the variance for some commonly used probability distributions.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                                      Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                                      Binomial distributionPr(X=k)=(nk)pk(1\u2212p)n\u2212k{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}np{\\displaystyle np}np(1\u2212p){\\displaystyle np(1-p)}
                                                                      Geometric distributionPr(X=k)=(1\u2212p)k\u22121p{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}1p{\\displaystyle {\\frac {1}{p}}}(1\u2212p)p2{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                                      Normal distributionf(x\u2223\u03bc,\u03c32)=12\u03c0\u03c32e\u2212(x\u2212\u03bc)22\u03c32{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\u03bc{\\displaystyle \\mu }\u03c32{\\displaystyle \\sigma ^{2}}
                                                                      Uniform distribution (continuous)f(x\u2223a,b)={1b\u2212afor a\u2264x\u2264b,0for x<a or x>b{\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}a+b2{\\displaystyle {\\frac {a+b}{2}}}(b\u2212a)212{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                                      Exponential distributionf(x\u2223\u03bb)=\u03bbe\u2212\u03bbx{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}1\u03bb{\\displaystyle {\\frac {1}{\\lambda }}}1\u03bb2{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                                      Poisson distributionf(k\u2223\u03bb)=e\u2212\u03bb\u03bbkk!{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\u03bb{\\displaystyle \\lambda }\u03bb{\\displaystyle \\lambda }
                                                                      ", "content": {"html": "
                                                                      Name of the probability distributionProbability distribution functionMeanVariance
                                                                      Binomial distribution{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}{\\displaystyle np}{\\displaystyle np(1-p)}
                                                                      Geometric distribution{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}{\\displaystyle {\\frac {1}{p}}}{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                                      Normal distribution{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}{\\displaystyle \\mu }{\\displaystyle \\sigma ^{2}}
                                                                      Uniform distribution (continuous){\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}{\\displaystyle {\\frac {a+b}{2}}}{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                                      Exponential distribution{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}{\\displaystyle {\\frac {1}{\\lambda }}}{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                                      Poisson distribution{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}{\\displaystyle \\lambda }{\\displaystyle \\lambda }
                                                                      ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

                                                                      Properties

                                                                      ", "content": {"title_content": "Properties", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Basic properties

                                                                      ", "content": {"title_content": "Basic properties", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Variance is non-negative because the squares are positive or zero:\n

                                                                      ", "content": [{"c": "Variance is non-negative because the squares are positive or zero:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)\\geq 0.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)\\geq 0.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a constant is zero.\n

                                                                      ", "content": [{"c": "The variance of a constant is zero.", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (a)=0.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (a)=0.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                                      ", "content": [{"c": "Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Issues of finiteness

                                                                      ", "content": {"title_content": "Issues of finiteness", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index{\\displaystyle k} satisfies {\\displaystyle 1<k\\leq 2.}

                                                                      ", "content": [{"c": "If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index", "t": "text"}, {"c": "{\\displaystyle k}", "t": "equation-inline"}, {"c": "satisfies", "t": "text"}, {"c": "{\\displaystyle 1Decomposition", "content": {"title_content": "Decomposition", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The general formula for variance decomposition or the law of total variance is: If {\\displaystyle X} and {\\displaystyle Y} are two random variables, and the variance of {\\displaystyle X} exists, then\n

                                                                      ", "content": [{"c": "The general formula for variance decomposition or the law of total variance is: If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": "are two random variables, and the variance of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "exists, then", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The conditional expectation{\\displaystyle \\operatorname {E} (X\\mid Y)} of {\\displaystyle X} given {\\displaystyle Y}, and the conditional variance{\\displaystyle \\operatorname {Var} (X\\mid Y)} may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y=y)} given the event Y = y. This quantity depends on the particular value y; it is a function {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}. That same function evaluated at the random variable Y is the conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}

                                                                      ", "content": [{"c": "The conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y)}", "t": "equation-inline"}, {"c": "of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "given", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": ", and the conditional variance", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X\\mid Y)}", "t": "equation-inline"}, {"c": "may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y=y)}", "t": "equation-inline"}, {"c": "given the event Y= y. This quantity depends on the particular value y; it is a function", "t": "text"}, {"c": "{\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}", "t": "equation-inline"}, {"c": ". That same function evaluated at the random variable Y is the conditional expectation", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}", "t": "equation-inline"}]}, {"type": "paragraph", "raw_content": "

                                                                      In particular, if {\\displaystyle Y} is a discrete random variable assuming possible values {\\displaystyle y_{1},y_{2},y_{3}\\ldots } with corresponding probabilities {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}, then in the formula for total variance, the first term on the right-hand side becomes\n

                                                                      ", "content": [{"c": "In particular, if", "t": "text"}, {"c": "{\\displaystyle Y}", "t": "equation-inline"}, {"c": "is a discrete random variable assuming possible values", "t": "text"}, {"c": "{\\displaystyle y_{1},y_{2},y_{3}\\ldots }", "t": "equation-inline"}, {"c": "with corresponding probabilities", "t": "text"}, {"c": "{\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}", "t": "equation-inline"}, {"c": ", then in the formula for total variance, the first term on the right-hand side becomes", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}. Similarly, the second term on the right-hand side becomes\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}", "t": "equation-inline"}, {"c": ". Similarly, the second term on the right-hand side becomes", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]} and {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}. Thus the total variance is given by\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}", "t": "equation-inline"}, {"c": ". Thus the total variance is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                                      ", "content": [{"c": "A similar formula is applied in analysis of variance, where the corresponding formula is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      here {\\displaystyle {\\mathit {MS}}} refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                                      ", "content": [{"c": "here", "t": "text"}, {"c": "{\\displaystyle {\\mathit {MS}}}", "t": "equation-inline"}, {"c": "refers to the Mean of the Squares. In linear regression analysis the corresponding formula is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                                      ", "content": [{"c": "This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Similar decompositions are possible for the sum of squared deviations (sum of squares, {\\displaystyle {\\mathit {SS}}}):\n

                                                                      ", "content": [{"c": "Similar decompositions are possible for the sum of squared deviations (sum of squares,", "t": "text"}, {"c": "{\\displaystyle {\\mathit {SS}}}", "t": "equation-inline"}, {"c": "):", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}
                                                                      {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}", "t": "equation-inline"}]], [[{"c": "{\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Calculation from the CDF

                                                                      ", "content": {"title_content": "Calculation from the CDF", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution functionF using\n

                                                                      ", "content": [{"c": "The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution function F using", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                                      ", "content": [{"c": "This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Characteristic property

                                                                      ", "content": {"title_content": "Characteristic property", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}. Conversely, if a continuous function {\\displaystyle \\varphi } satisfies {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)} for all random variables X, then it is necessarily of the form {\\displaystyle \\varphi (x)=ax^{2}+b}, where a > 0. This also holds in the multidimensional case.[3]

                                                                      ", "content": [{"c": "The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e.", "t": "text"}, {"c": "{\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}", "t": "equation-inline"}, {"c": ". Conversely, if a continuous function", "t": "text"}, {"c": "{\\displaystyle \\varphi }", "t": "equation-inline"}, {"c": "satisfies", "t": "text"}, {"c": "{\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)}", "t": "equation-inline"}, {"c": "for all random variables X, then it is necessarily of the form", "t": "text"}, {"c": "{\\displaystyle \\varphi (x)=ax^{2}+b}", "t": "equation-inline"}, {"c": ", where a> 0. This also holds in the multidimensional case.[ 3]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Units of measurement

                                                                      ", "content": {"title_content": "Units of measurement", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                                      ", "content": [{"c": "Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is\u221a 2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                                      ", "content": [{"c": "The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Propagation

                                                                      ", "content": {"title_content": "Propagation", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Addition and multiplication by a constant

                                                                      ", "content": {"title_content": "Addition and multiplication by a constant", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                                      ", "content": [{"c": "Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                                      ", "content": [{"c": "If all values are scaled by a constant, the variance is scaled by the square of that constant:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a sum of two random variables is given by\n

                                                                      ", "content": [{"c": "The variance of a sum of two random variables is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where {\\displaystyle \\operatorname {Cov} (X,Y)} is the covariance.\n

                                                                      ", "content": [{"c": "where", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Cov} (X,Y)}", "t": "equation-inline"}, {"c": "is the covariance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Linear combinations

                                                                      ", "content": {"title_content": "Linear combinations", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      In general, for the sum of {\\displaystyle N} random variables {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}, the variance becomes:\n

                                                                      ", "content": [{"c": "In general, for the sum of", "t": "text"}, {"c": "{\\displaystyle N}", "t": "equation-inline"}, {"c": "random variables", "t": "text"}, {"c": "{\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}", "t": "equation-inline"}, {"c": ", the variance becomes:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      see also general Bienaym\u00e9's identity.\n

                                                                      ", "content": [{"c": "see also general Bienaym\u00e9's identity.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      These results lead to the variance of a linear combination as:\n

                                                                      ", "content": [{"c": "These results lead to the variance of a linear combination as:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i

                                                                      If the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are such that\n

                                                                      ", "content": [{"c": "If the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{N}}", "t": "equation-inline"}, {"c": "are such that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                                      ", "content": [{"c": "then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{N}}", "t": "equation-inline"}, {"c": "are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables {\\displaystyle X_{1},\\dots ,X_{n}} are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                                      ", "content": [{"c": "Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\dots ,X_{n}}", "t": "equation-inline"}, {"c": "are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Matrix notation for the variance of a linear combination

                                                                      ", "content": {"title_content": "Matrix notation for the variance of a linear combination", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Define {\\displaystyle X} as a column vector of {\\displaystyle n} random variables {\\displaystyle X_{1},\\ldots ,X_{n}}, and {\\displaystyle c} as a column vector of {\\displaystyle n} scalars {\\displaystyle c_{1},\\ldots ,c_{n}}. Therefore, {\\displaystyle c^{\\mathsf {T}}X} is a linear combination of these random variables, where {\\displaystyle c^{\\mathsf {T}}} denotes the transpose of {\\displaystyle c}. Also let {\\displaystyle \\Sigma } be the covariance matrix of {\\displaystyle X}. The variance of {\\displaystyle c^{\\mathsf {T}}X} is then given by:[4]

                                                                      ", "content": [{"c": "Define", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "as a column vector of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "random variables", "t": "text"}, {"c": "{\\displaystyle X_{1},\\ldots ,X_{n}}", "t": "equation-inline"}, {"c": ", and", "t": "text"}, {"c": "{\\displaystyle c}", "t": "equation-inline"}, {"c": "as a column vector of", "t": "text"}, {"c": "{\\displaystyle n}", "t": "equation-inline"}, {"c": "scalars", "t": "text"}, {"c": "{\\displaystyle c_{1},\\ldots ,c_{n}}", "t": "equation-inline"}, {"c": ". Therefore,", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}X}", "t": "equation-inline"}, {"c": "is a linear combination of these random variables, where", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}}", "t": "equation-inline"}, {"c": "denotes the transpose of", "t": "text"}, {"c": "{\\displaystyle c}", "t": "equation-inline"}, {"c": ". Also let", "t": "text"}, {"c": "{\\displaystyle \\Sigma }", "t": "equation-inline"}, {"c": "be the covariance matrix of", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ". The variance of", "t": "text"}, {"c": "{\\displaystyle c^{\\mathsf {T}}X}", "t": "equation-inline"}, {"c": "is then given by:[ 4]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                                      ", "content": [{"c": "This implies that the variance of the mean can be written as (with a column vector of ones)", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Sum of variables

                                                                      ", "content": {"title_content": "Sum of variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Sum of uncorrelated variables

                                                                      ", "content": {"title_content": "Sum of uncorrelated variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                                      ", "content": [{"c": "One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                                      ", "content": [{"c": "This statement is called the Bienaym\u00e9 formula[ 5] and was discovered in 1853.[ 6][ 7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c3 2, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                                      ", "content": [{"c": "That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      To prove the initial statement, it suffices to show that\n

                                                                      ", "content": [{"c": "To prove the initial statement, it suffices to show that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      The general result then follows by induction. Starting with the definition,\n

                                                                      ", "content": [{"c": "The general result then follows by induction. Starting with the definition,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                                      ", "content": [{"c": "Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Sum of correlated variables

                                                                      ", "content": {"title_content": "Sum of correlated variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "
                                                                      Sum of correlated variables with fixed sample size
                                                                      ", "content": {"title_content": "Sum of correlated variables with fixed sample size", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                                      ", "content": [{"c": "In general, the variance of the sum of n variables is the sum of their covariances:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i

                                                                      (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                                      ", "content": [{"c": "(Note: The second equality comes from the fact that Cov( X i, X i) = Var( X i).)", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Here, {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )} is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                                      ", "content": [{"c": "Here,", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )}", "t": "equation-inline"}, {"c": "is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                                      ", "content": [{"c": "So, if the variables have equal variance \u03c3 2 and the average correlation of distinct variables is \u03c1, then the variance of their mean is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                                      ", "content": [{"c": "This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                                      ", "content": [{"c": "This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                                      ", "content": [{"c": "Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                                      Sum of uncorrelated variables with random sample size
                                                                      ", "content": {"title_content": "Sum of uncorrelated variables with random sample size", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                                      ", "content": [{"c": "There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}[8]
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}", "t": "equation-inline"}, {"c": "[", "t": "text"}, {"c": "8", "t": "text"}, {"c": "]", "t": "text"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      which follows from the law of total variance.\n

                                                                      ", "content": [{"c": "which follows from the law of total variance.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If N has a Poisson distribution, then {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)} with estimator n = N. So, the estimator of {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)} becomes {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}, giving {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n(see standard error of the sample mean).\n

                                                                      ", "content": [{"c": "If N has a Poisson distribution, then", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)}", "t": "equation-inline"}, {"c": "with estimator n= N. So, the estimator of", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)}", "t": "equation-inline"}, {"c": "becomes", "t": "text"}, {"c": "{\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}", "t": "equation-inline"}, {"c": ", giving", "t": "text"}, {"c": "{\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}", "t": "equation-inline"}, {"c": "(see standard error of the sample mean).", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Weighted sum of variables

                                                                      ", "content": {"title_content": "Weighted sum of variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The scaling property and the Bienaym\u00e9 formula, along with the property of the covarianceCov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                                      ", "content": [{"c": "The scaling property and the Bienaym\u00e9 formula, along with the property of the covariance Cov( aX, bY) = ab Cov( X, Y) jointly imply that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                                      ", "content": [{"c": "This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The expression above can be extended to a weighted sum of multiple variables:\n

                                                                      ", "content": [{"c": "The expression above can be extended to a weighted sum of multiple variables:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{Product of variables", "content": {"title_content": "Product of variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Product of independent variables

                                                                      ", "content": {"title_content": "Product of independent variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If two variables X and Y are independent, the variance of their product is given by[9]

                                                                      ", "content": [{"c": "If two variables X and Y are independent, the variance of their product is given by[ 9]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Equivalently, using the basic properties of expectation, it is given by\n

                                                                      ", "content": [{"c": "Equivalently, using the basic properties of expectation, it is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Product of statistically dependent variables

                                                                      ", "content": {"title_content": "Product of statistically dependent variables", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                                      ", "content": [{"c": "In general, if two variables are statistically dependent, then the variance of their product is given by:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Arbitrary functions

                                                                      ", "content": {"title_content": "Arbitrary functions", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                                      ", "content": [{"c": "The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                                      ", "content": [{"c": "provided that f is twice differentiable and that the mean and variance of X are finite.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Population variance and sample variance

                                                                      ", "content": {"title_content": "Population variance and sample variance", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of nobservations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                                      ", "content": [{"c": "Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of n observations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n,n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10]n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]

                                                                      ", "content": [{"c": "The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and(uncorrected) sample variance\u2013 these are consistent estimators(they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n, n \u2212 1, n+ 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[ 10] n+ 1 minimizes mean squared error for the normal distribution,[ 11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[ 12]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                                      ", "content": [{"c": "Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of ( n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n-1 instead of n, is called Bessel's correction.[ 10] The resulting estimator is unbiased and is called the(corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                                      ", "content": [{"c": "Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n+ 1 (instead of n \u2212 1 or n) minimizes mean squared error.[ 11] The resulting estimator is biased, however, and is known as the biased sample variation.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Population variance

                                                                      ", "content": {"title_content": "Population variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      In general, the population variance of a finitepopulation of size N with values xi is given by

                                                                      ", "content": [{"c": "In general, the population variance of a finite population of size N with values x i is given by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\u03c32=1N\u2211i=1N(xi\u2212\u03bc)2=1N\u2211i=1N(xi2\u22122\u03bcxi+\u03bc2)=(1N\u2211i=1Nxi2)\u22122\u03bc(1N\u2211i=1Nxi)+\u03bc2=E\u2061[xi2]\u2212\u03bc2{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}", "content": {"math_content": "{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                                      where the population mean is {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}} and {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}, where {\\textstyle \\operatorname {E} } is the expectation value operator.\n

                                                                      ", "content": [{"c": "where the population mean is", "t": "text"}, {"c": "{\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}", "t": "equation-inline"}, {"c": ", where", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} }", "t": "equation-inline"}, {"c": "is the expectation value operator.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The population variance can also be computed using[13]

                                                                      ", "content": [{"c": "The population variance can also be computed using[ 13]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i

                                                                      (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because

                                                                      ", "content": [{"c": "(The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because", "t": "text"}]}, {"type": "equation-interline", "raw_content": "12N2\u2211i,j=1N(xi\u2212xj)2=12N2\u2211i,j=1N(xi2\u22122xixj+xj2)=12N\u2211j=1N(1N\u2211i=1Nxi2)\u2212(1N\u2211i=1Nxi)(1N\u2211j=1Nxj)+12N\u2211i=1N(1N\u2211j=1Nxj2)=12(\u03c32+\u03bc2)\u2212\u03bc2+12(\u03c32+\u03bc2)=\u03c32.{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}", "content": {"math_content": "{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                                      The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                                      ", "content": [{"c": "The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Sample variance

                                                                      ", "content": {"title_content": "Sample variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Biased sample variance

                                                                      ", "content": {"title_content": "Biased sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                                      ", "content": [{"c": "In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[ 14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      We take a sample with replacement of n values Y1, ..., Yn from the population of size {\\textstyle N}, where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                                      ", "content": [{"c": "We take a sample with replacement of n values Y 1, ..., Y n from the population of size", "t": "text"}, {"c": "{\\textstyle N}", "t": "equation-inline"}, {"c": ", where n< N, and estimate the variance on the basis of this sample.[ 15] Directly taking the variance of the sample data gives the average of the squared deviations:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}[16]
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i

                                                                      (See the section Population variance for the derivation of this formula.) Here, {\\displaystyle {\\overline {Y}}} denotes the sample mean:\n

                                                                      ", "content": [{"c": "(See the section Population variance for the derivation of this formula.) Here,", "t": "text"}, {"c": "{\\displaystyle {\\overline {Y}}}", "t": "equation-inline"}, {"c": "denotes the sample mean:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Since the Yi are selected randomly, both {\\displaystyle {\\overline {Y}}} and {\\displaystyle {\\tilde {S}}_{Y}^{2}} are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For {\\displaystyle {\\tilde {S}}_{Y}^{2}} this gives:\n

                                                                      ", "content": [{"c": "Since the Y i are selected randomly, both", "t": "text"}, {"c": "{\\displaystyle {\\overline {Y}}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples { Y i} of size n from the population. For", "t": "text"}, {"c": "{\\displaystyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "this gives:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Here {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}} derived in the section Population variance and {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}} due to independency of {\\textstyle Y_{i}} and {\\textstyle Y_{j}} are used.\n

                                                                      ", "content": [{"c": "Here", "t": "text"}, {"c": "{\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}}", "t": "equation-inline"}, {"c": "derived in the section Population variance and", "t": "text"}, {"c": "{\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}}", "t": "equation-inline"}, {"c": "due to independency of", "t": "text"}, {"c": "{\\textstyle Y_{i}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\textstyle Y_{j}}", "t": "equation-inline"}, {"c": "are used.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Hence {\\textstyle {\\tilde {S}}_{Y}^{2}} gives an estimate of the population variance that is biased by a factor of {\\textstyle {\\frac {n-1}{n}}} as the expectation value of {\\textstyle {\\tilde {S}}_{Y}^{2}} is smaller than the population variance (true variance) by that factor. For this reason, {\\textstyle {\\tilde {S}}_{Y}^{2}} is referred to as the biased sample variance.\n

                                                                      ", "content": [{"c": "Hence", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "gives an estimate of the population variance that is biased by a factor of", "t": "text"}, {"c": "{\\textstyle {\\frac {n-1}{n}}}", "t": "equation-inline"}, {"c": "as the expectation value of", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "is smaller than the population variance (true variance) by that factor. For this reason,", "t": "text"}, {"c": "{\\textstyle {\\tilde {S}}_{Y}^{2}}", "t": "equation-inline"}, {"c": "is referred to as the biased sample variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Unbiased sample variance

                                                                      ", "content": {"title_content": "Unbiased sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Correcting for this bias yields the unbiased sample variance, denoted {\\displaystyle S^{2}}:\n

                                                                      ", "content": [{"c": "Correcting for this bias yields the unbiased sample variance, denoted", "t": "text"}, {"c": "{\\displaystyle S^{2}}", "t": "equation-inline"}, {"c": ":", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                                      ", "content": [{"c": "Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                                      ", "content": [{"c": "The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation(the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                                      ", "content": [{"c": "The unbiased sample variance is a U-statistic for the function \u0192( y 1, y 2) = ( y 1 \u2212 y 2) 2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.", "t": "text"}]}, {"type": "title", "raw_content": "
                                                                      Example
                                                                      ", "content": {"title_content": "Example", "level": "5"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                                      ", "content": [{"c": "For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Distribution of the sample variance

                                                                      ", "content": {"title_content": "Distribution of the sample variance", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample varianceS2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]

                                                                      ", "content": [{"c": "Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Y i are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample variance S 2 follows a scaled chi-squared distribution(see also: asymptotic properties and an elementary proof):[ 17]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                                      ", "content": [{"c": "where \u03c3 2 is the population variance. As a direct consequence, it follows that", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      and[18]

                                                                      ", "content": [{"c": "and[ 18]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]

                                                                      ", "content": [{"c": "If Y i are independent and identically distributed, but not necessarily normally distributed, then[ 19]", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                                      ", "content": [{"c": "where \u03ba is the kurtosis of the distribution and \u03bc 4 is the fourth central moment.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]

                                                                      ", "content": [{"c": "If the conditions of the law of large numbers hold for the squared observations, S 2 is a consistent estimator of \u03c3 2. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[ 20][ 21][ 22]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Samuelson's inequality

                                                                      ", "content": {"title_content": "Samuelson's inequality", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}

                                                                      ", "content": [{"c": "Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[ 23] Values must lie within the limits", "t": "text"}, {"c": "{\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}", "t": "equation-inline"}]}, {"type": "title", "raw_content": "

                                                                      Relations with the harmonic and arithmetic means

                                                                      ", "content": {"title_content": "Relations with the harmonic and arithmetic means", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                                      ", "content": [{"c": "It has been shown[ 24] that for a sample { y i} of positive real numbers,", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and {\\displaystyle \\sigma _{y}^{2}} is the (biased) variance of the sample.\n

                                                                      ", "content": [{"c": "where y max is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and", "t": "text"}, {"c": "{\\displaystyle \\sigma _{y}^{2}}", "t": "equation-inline"}, {"c": "is the (biased) variance of the sample.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      This bound has been improved, and it is known that variance is bounded by\n

                                                                      ", "content": [{"c": "This bound has been improved, and it is known that variance is bounded by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      where ymin is the minimum of the sample.[25]

                                                                      ", "content": [{"c": "where y min is the minimum of the sample.[ 25]", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Tests of equality of variances

                                                                      ", "content": {"title_content": "Tests of equality of variances", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                                      ", "content": [{"c": "The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                                      ", "content": [{"c": "Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                                      ", "content": [{"c": "The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                                      ", "content": [{"c": "Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Moment of inertia

                                                                      ", "content": {"title_content": "Moment of inertia", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of {\\displaystyle \\Sigma } is given by\n

                                                                      ", "content": [{"c": "The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[ 26] It is because of this analogy that such things as the variance are called moments of probability distributions.[ 26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of", "t": "text"}, {"c": "{\\displaystyle \\Sigma }", "t": "equation-inline"}, {"c": "is given by", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                                      ", "content": [{"c": "This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "paragraph", "raw_content": "

                                                                      That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                                      ", "content": [{"c": "That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                      {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}
                                                                      ", "content": {"items": [[[{"c": "{\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}", "t": "equation-inline"}]]], "ordered": true}}, {"type": "title", "raw_content": "

                                                                      Semivariance

                                                                      ", "content": {"title_content": "Semivariance", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:

                                                                      ", "content": [{"c": "The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:", "t": "text"}]}, {"type": "equation-interline", "raw_content": "Semivariance=1n\u2211i:xi<\u03bc(xi\u2212\u03bc)2{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}", "content": {"math_content": "{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}", "math_type": "mathml", "by": "None"}}, {"type": "paragraph", "raw_content": "

                                                                      It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]

                                                                      ", "content": [{"c": "It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[ 27]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                                      ", "content": [{"c": "For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Etymology

                                                                      ", "content": {"title_content": "Etymology", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "The term variance was first introduced by Ronald Fisher in his 1918 paper The Correlation Between Relatives on the Supposition of Mendelian Inheritance:[ 28]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations {\\displaystyle \\sigma _{1}} and {\\displaystyle \\sigma _{2}}, it is found that the distribution, when both causes act together, has a standard deviation {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}. It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                                      ", "content": [{"c": "The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations", "t": "text"}, {"c": "{\\displaystyle \\sigma _{1}}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle \\sigma _{2}}", "t": "equation-inline"}, {"c": ", it is found that the distribution, when both causes act together, has a standard deviation", "t": "text"}, {"c": "{\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}", "t": "equation-inline"}, {"c": ". It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      Generalizations

                                                                      ", "content": {"title_content": "Generalizations", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      For complex variables

                                                                      ", "content": {"title_content": "For complex variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If {\\displaystyle x} is a scalar complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ,} then its variance is {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],} where {\\displaystyle x^{*}} is the complex conjugate of {\\displaystyle x.} This variance is a real scalar.\n

                                                                      ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle x}", "t": "equation-inline"}, {"c": "is a scalar complex-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {C} ,}", "t": "equation-inline"}, {"c": "then its variance is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle x^{*}}", "t": "equation-inline"}, {"c": "is the complex conjugate of", "t": "text"}, {"c": "{\\displaystyle x.}", "t": "equation-inline"}, {"c": "This variance is a real scalar.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      For vector-valued random variables

                                                                      ", "content": {"title_content": "For vector-valued random variables", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      As a matrix

                                                                      ", "content": {"title_content": "As a matrix", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If {\\displaystyle X} is a vector-valued random variable, with values in {\\displaystyle \\mathbb {R} ^{n},} and thought of as a column vector, then a natural generalization of variance is {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],} where {\\displaystyle \\mu =\\operatorname {E} (X)} and {\\displaystyle X^{\\operatorname {T} }} is the transpose of {\\displaystyle X,} and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                                      ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is a vector-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {R} ^{n},}", "t": "equation-inline"}, {"c": "and thought of as a column vector, then a natural generalization of variance is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle \\mu =\\operatorname {E} (X)}", "t": "equation-inline"}, {"c": "and", "t": "text"}, {"c": "{\\displaystyle X^{\\operatorname {T} }}", "t": "equation-inline"}, {"c": "is the transpose of", "t": "text"}, {"c": "{\\displaystyle X,}", "t": "equation-inline"}, {"c": "and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix(or simply as the covariance matrix).", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      If {\\displaystyle X} is a vector- and complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ^{n},} then the covariance matrix is{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],} where {\\displaystyle X^{\\dagger }} is the conjugate transpose of {\\displaystyle X.} This matrix is also positive semi-definite and square.\n

                                                                      ", "content": [{"c": "If", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": "is a vector- and complex-valued random variable, with values in", "t": "text"}, {"c": "{\\displaystyle \\mathbb {C} ^{n},}", "t": "equation-inline"}, {"c": "then the covariance matrix is", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],}", "t": "equation-inline"}, {"c": "where", "t": "text"}, {"c": "{\\displaystyle X^{\\dagger }}", "t": "equation-inline"}, {"c": "is the conjugate transpose of", "t": "text"}, {"c": "{\\displaystyle X.}", "t": "equation-inline"}, {"c": "This matrix is also positive semi-definite and square.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      As a scalar

                                                                      ", "content": {"title_content": "As a scalar", "level": "4"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      Another generalization of variance for vector-valued random variables {\\displaystyle X}, which results in a scalar value rather than in a matrix, is the generalized variance{\\displaystyle \\det(C)}, the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]

                                                                      ", "content": [{"c": "Another generalization of variance for vector-valued random variables", "t": "text"}, {"c": "{\\displaystyle X}", "t": "equation-inline"}, {"c": ", which results in a scalar value rather than in a matrix, is the generalized variance", "t": "text"}, {"c": "{\\displaystyle \\det(C)}", "t": "equation-inline"}, {"c": ", the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[ 29]", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                      A different generalization is obtained by considering the equation for the scalar variance, {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}, and reinterpreting {\\displaystyle (X-\\mu )^{2}} as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector {\\displaystyle X-\\mu } with itself. This results in {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),} which is the trace of the covariance matrix.\n

                                                                      ", "content": [{"c": "A different generalization is obtained by considering the equation for the scalar variance,", "t": "text"}, {"c": "{\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}", "t": "equation-inline"}, {"c": ", and reinterpreting", "t": "text"}, {"c": "{\\displaystyle (X-\\mu )^{2}}", "t": "equation-inline"}, {"c": "as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector", "t": "text"}, {"c": "{\\displaystyle X-\\mu }", "t": "equation-inline"}, {"c": "with itself. This results in", "t": "text"}, {"c": "{\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),}", "t": "equation-inline"}, {"c": "which is the trace of the covariance matrix.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                      See also

                                                                      ", "content": {"title_content": "See also", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                        ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                                                        Types of variance

                                                                        ", "content": {"title_content": "Types of variance", "level": "3"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                          ", "content": {"items": [], "ordered": false}}, {"type": "title", "raw_content": "

                                                                          References

                                                                          ", "content": {"title_content": "References", "level": "2"}}, {"type": "paragraph", "raw_content": "", "content": [{"c": "edit", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                            ", "content": {"items": [], "ordered": true}}]], "main_html": "

                                                                            In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by {\\displaystyle \\sigma ^{2}}, {\\displaystyle s^{2}}, {\\displaystyle \\operatorname {Var} (X)}, {\\displaystyle V(X)}, or {\\displaystyle \\mathbb {V} (X)}.[1]

                                                                            Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.

                                                                            An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                                            There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                                            The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                                            Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                                            1. A frequency distribution is constructed.
                                                                            2. The centroid of the distribution gives its mean.
                                                                            3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                                            4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.

                                                                            Definition

                                                                            The variance of a random variable {\\displaystyle X} is the expected value of the squared deviation from the mean of {\\displaystyle X}, {\\displaystyle \\mu =\\operatorname {E} [X]}:\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}

                                                                            This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}

                                                                            The variance is also equivalent to the second cumulant of a probability distribution that generates {\\displaystyle X}. The variance is typically designated as {\\displaystyle \\operatorname {Var} (X)}, or sometimes as {\\displaystyle V(X)} or {\\displaystyle \\mathbb {V} (X)}, or symbolically as {\\displaystyle \\sigma _{X}^{2}} or simply {\\displaystyle \\sigma ^{2}} (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}

                                                                            In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                                            Discrete random variable

                                                                            If the generator of random variable {\\displaystyle X} is discrete with probability mass function{\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}, then\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}

                                                                            where {\\displaystyle \\mu } is the expected value. That is,\n

                                                                            {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}

                                                                            (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                                            The variance of a collection of {\\displaystyle n} equally likely values can be written as\n

                                                                            {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}

                                                                            where {\\displaystyle \\mu } is the average value. That is,\n

                                                                            {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}

                                                                            The variance of a set of {\\displaystyle n} equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]

                                                                            {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}

                                                                            Absolutely continuous random variable

                                                                            If the random variable {\\displaystyle X} has a probability density function{\\displaystyle f(x)}, and {\\displaystyle F(x)} is the corresponding cumulative distribution function, then\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}

                                                                            or equivalently,\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}

                                                                            where {\\displaystyle \\mu } is the expected value of {\\displaystyle X} given by\n

                                                                            {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}

                                                                            In these formulas, the integrals with respect to {\\displaystyle dx} and {\\displaystyle dF(x)}\nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                                            If the function {\\displaystyle x^{2}f(x)} is Riemann-integrable on every finite interval {\\displaystyle [a,b]\\subset \\mathbb {R} ,} then\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}

                                                                            where the integral is an improper Riemann integral.\n

                                                                            Examples

                                                                            Exponential distribution

                                                                            The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                                            {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}

                                                                            on the interval [0, \u221e). Its mean can be shown to be\n

                                                                            {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}

                                                                            Using integration by parts and making use of the expected value already calculated, we have:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}

                                                                            Thus, the variance of X is given by\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}

                                                                            Fair dice

                                                                            A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is {\\displaystyle (1+2+3+4+5+6)/6=7/2.} Therefore, the variance of X is\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}

                                                                            The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}

                                                                            Commonly used probability distributions

                                                                            The following table lists the variance for some commonly used probability distributions.\n

                                                                            Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                                            Binomial distributionPr(X=k)=(nk)pk(1\u2212p)n\u2212k{\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}np{\\displaystyle np}np(1\u2212p){\\displaystyle np(1-p)}
                                                                            Geometric distributionPr(X=k)=(1\u2212p)k\u22121p{\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}1p{\\displaystyle {\\frac {1}{p}}}(1\u2212p)p2{\\displaystyle {\\frac {(1-p)}{p^{2}}}}
                                                                            Normal distributionf(x\u2223\u03bc,\u03c32)=12\u03c0\u03c32e\u2212(x\u2212\u03bc)22\u03c32{\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\u03bc{\\displaystyle \\mu }\u03c32{\\displaystyle \\sigma ^{2}}
                                                                            Uniform distribution (continuous)f(x\u2223a,b)={1b\u2212afor a\u2264x\u2264b,0for x<a or x>b{\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}a+b2{\\displaystyle {\\frac {a+b}{2}}}(b\u2212a)212{\\displaystyle {\\frac {(b-a)^{2}}{12}}}
                                                                            Exponential distributionf(x\u2223\u03bb)=\u03bbe\u2212\u03bbx{\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}1\u03bb{\\displaystyle {\\frac {1}{\\lambda }}}1\u03bb2{\\displaystyle {\\frac {1}{\\lambda ^{2}}}}
                                                                            Poisson distributionf(k\u2223\u03bb)=e\u2212\u03bb\u03bbkk!{\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\u03bb{\\displaystyle \\lambda }\u03bb{\\displaystyle \\lambda }

                                                                            Properties

                                                                            Basic properties

                                                                            Variance is non-negative because the squares are positive or zero:\n

                                                                            {\\displaystyle \\operatorname {Var} (X)\\geq 0.}

                                                                            The variance of a constant is zero.\n

                                                                            {\\displaystyle \\operatorname {Var} (a)=0.}

                                                                            Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                                            {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}

                                                                            Issues of finiteness

                                                                            If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index{\\displaystyle k} satisfies {\\displaystyle 1<k\\leq 2.}

                                                                            Decomposition

                                                                            The general formula for variance decomposition or the law of total variance is: If {\\displaystyle X} and {\\displaystyle Y} are two random variables, and the variance of {\\displaystyle X} exists, then\n

                                                                            {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}

                                                                            The conditional expectation{\\displaystyle \\operatorname {E} (X\\mid Y)} of {\\displaystyle X} given {\\displaystyle Y}, and the conditional variance{\\displaystyle \\operatorname {Var} (X\\mid Y)} may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y=y)} given the event Y = y. This quantity depends on the particular value y; it is a function {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}. That same function evaluated at the random variable Y is the conditional expectation {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}

                                                                            In particular, if {\\displaystyle Y} is a discrete random variable assuming possible values {\\displaystyle y_{1},y_{2},y_{3}\\ldots } with corresponding probabilities {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}, then in the formula for total variance, the first term on the right-hand side becomes\n

                                                                            {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}

                                                                            where {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}. Similarly, the second term on the right-hand side becomes\n

                                                                            {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}

                                                                            where {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]} and {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}. Thus the total variance is given by\n

                                                                            {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}

                                                                            A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                                            {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}

                                                                            here {\\displaystyle {\\mathit {MS}}} refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                                            {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}

                                                                            This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                                            Similar decompositions are possible for the sum of squared deviations (sum of squares, {\\displaystyle {\\mathit {SS}}}):\n

                                                                            {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}
                                                                            {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}

                                                                            Calculation from the CDF

                                                                            The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution functionF using\n

                                                                            {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}

                                                                            This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                                            Characteristic property

                                                                            The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}. Conversely, if a continuous function {\\displaystyle \\varphi } satisfies {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)} for all random variables X, then it is necessarily of the form {\\displaystyle \\varphi (x)=ax^{2}+b}, where a > 0. This also holds in the multidimensional case.[3]

                                                                            Units of measurement

                                                                            Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                                            The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                                            Propagation

                                                                            Addition and multiplication by a constant

                                                                            Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                                            {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}

                                                                            If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                                            {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}

                                                                            The variance of a sum of two random variables is given by\n

                                                                            {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}
                                                                            {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}

                                                                            where {\\displaystyle \\operatorname {Cov} (X,Y)} is the covariance.\n

                                                                            Linear combinations

                                                                            In general, for the sum of {\\displaystyle N} random variables {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}, the variance becomes:\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}

                                                                            see also general Bienaym\u00e9's identity.\n

                                                                            These results lead to the variance of a linear combination as:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}

                                                                            If the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are such that\n

                                                                            {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}

                                                                            then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables {\\displaystyle X_{1},\\dots ,X_{N}} are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}

                                                                            Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables {\\displaystyle X_{1},\\dots ,X_{n}} are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                                            Matrix notation for the variance of a linear combination

                                                                            Define {\\displaystyle X} as a column vector of {\\displaystyle n} random variables {\\displaystyle X_{1},\\ldots ,X_{n}}, and {\\displaystyle c} as a column vector of {\\displaystyle n} scalars {\\displaystyle c_{1},\\ldots ,c_{n}}. Therefore, {\\displaystyle c^{\\mathsf {T}}X} is a linear combination of these random variables, where {\\displaystyle c^{\\mathsf {T}}} denotes the transpose of {\\displaystyle c}. Also let {\\displaystyle \\Sigma } be the covariance matrix of {\\displaystyle X}. The variance of {\\displaystyle c^{\\mathsf {T}}X} is then given by:[4]

                                                                            {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}

                                                                            This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                                            {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}

                                                                            Sum of variables

                                                                            Sum of uncorrelated variables

                                                                            One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}

                                                                            This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                                            {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}

                                                                            That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                                            To prove the initial statement, it suffices to show that\n

                                                                            {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}

                                                                            The general result then follows by induction. Starting with the definition,\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}

                                                                            Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}

                                                                            Sum of correlated variables

                                                                            Sum of correlated variables with fixed sample size

                                                                            In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}

                                                                            (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                                            Here, {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )} is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                                            So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                                            {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}

                                                                            This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                                            {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}

                                                                            This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                                            {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}

                                                                            Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                                            Sum of uncorrelated variables with random sample size

                                                                            There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}[8]

                                                                            which follows from the law of total variance.\n

                                                                            If N has a Poisson distribution, then {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)} with estimator n = N. So, the estimator of {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)} becomes {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}, giving {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n(see standard error of the sample mean).\n

                                                                            Weighted sum of variables

                                                                            The scaling property and the Bienaym\u00e9 formula, along with the property of the covarianceCov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                                            {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}

                                                                            This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                                            The expression above can be extended to a weighted sum of multiple variables:\n

                                                                            {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}

                                                                            Product of variables

                                                                            Product of independent variables

                                                                            If two variables X and Y are independent, the variance of their product is given by[9]

                                                                            {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}

                                                                            Equivalently, using the basic properties of expectation, it is given by\n

                                                                            {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}

                                                                            Product of statistically dependent variables

                                                                            In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}

                                                                            Arbitrary functions

                                                                            The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                                            {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}

                                                                            provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                                            Population variance and sample variance

                                                                            Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of nobservations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                                            The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n,n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10]n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]

                                                                            Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                                            Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                                            Population variance

                                                                            In general, the population variance of a finitepopulation of size N with values xi is given by

                                                                            \u03c32=1N\u2211i=1N(xi\u2212\u03bc)2=1N\u2211i=1N(xi2\u22122\u03bcxi+\u03bc2)=(1N\u2211i=1Nxi2)\u22122\u03bc(1N\u2211i=1Nxi)+\u03bc2=E\u2061[xi2]\u2212\u03bc2{\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}

                                                                            where the population mean is {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}} and {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}, where {\\textstyle \\operatorname {E} } is the expectation value operator.\n

                                                                            The population variance can also be computed using[13]

                                                                            {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}

                                                                            (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because

                                                                            12N2\u2211i,j=1N(xi\u2212xj)2=12N2\u2211i,j=1N(xi2\u22122xixj+xj2)=12N\u2211j=1N(1N\u2211i=1Nxi2)\u2212(1N\u2211i=1Nxi)(1N\u2211j=1Nxj)+12N\u2211i=1N(1N\u2211j=1Nxj2)=12(\u03c32+\u03bc2)\u2212\u03bc2+12(\u03c32+\u03bc2)=\u03c32.{\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}

                                                                            The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                                            Sample variance

                                                                            Biased sample variance

                                                                            In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                                            We take a sample with replacement of n values Y1, ..., Yn from the population of size {\\textstyle N}, where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                                            {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}[16]

                                                                            (See the section Population variance for the derivation of this formula.) Here, {\\displaystyle {\\overline {Y}}} denotes the sample mean:\n

                                                                            {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}

                                                                            Since the Yi are selected randomly, both {\\displaystyle {\\overline {Y}}} and {\\displaystyle {\\tilde {S}}_{Y}^{2}} are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For {\\displaystyle {\\tilde {S}}_{Y}^{2}} this gives:\n

                                                                            {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}

                                                                            Here {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}} derived in the section Population variance and {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}} due to independency of {\\textstyle Y_{i}} and {\\textstyle Y_{j}} are used.\n

                                                                            Hence {\\textstyle {\\tilde {S}}_{Y}^{2}} gives an estimate of the population variance that is biased by a factor of {\\textstyle {\\frac {n-1}{n}}} as the expectation value of {\\textstyle {\\tilde {S}}_{Y}^{2}} is smaller than the population variance (true variance) by that factor. For this reason, {\\textstyle {\\tilde {S}}_{Y}^{2}} is referred to as the biased sample variance.\n

                                                                            Unbiased sample variance

                                                                            Correcting for this bias yields the unbiased sample variance, denoted {\\displaystyle S^{2}}:\n

                                                                            {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}

                                                                            Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                                            The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                                            The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                                            Example

                                                                            For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                                            Distribution of the sample variance

                                                                            Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample varianceS2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]

                                                                            {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}

                                                                            where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                                            {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}

                                                                            and[18]

                                                                            {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}

                                                                            If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]

                                                                            {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}

                                                                            where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                                            If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]

                                                                            Samuelson's inequality

                                                                            Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}

                                                                            Relations with the harmonic and arithmetic means

                                                                            It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                                            {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}

                                                                            where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and {\\displaystyle \\sigma _{y}^{2}} is the (biased) variance of the sample.\n

                                                                            This bound has been improved, and it is known that variance is bounded by\n

                                                                            {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}
                                                                            {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}

                                                                            where ymin is the minimum of the sample.[25]

                                                                            Tests of equality of variances

                                                                            The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                                            Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                                            The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                                            Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                                            Moment of inertia

                                                                            The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of {\\displaystyle \\Sigma } is given by\n

                                                                            {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}

                                                                            This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                                            {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}

                                                                            That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                                            {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}

                                                                            Semivariance

                                                                            The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:

                                                                            Semivariance=1n\u2211i:xi<\u03bc(xi\u2212\u03bc)2{\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}

                                                                            It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]

                                                                            For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                                            Etymology

                                                                            The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations {\\displaystyle \\sigma _{1}} and {\\displaystyle \\sigma _{2}}, it is found that the distribution, when both causes act together, has a standard deviation {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}. It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                                            Generalizations

                                                                            For complex variables

                                                                            If {\\displaystyle x} is a scalar complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ,} then its variance is {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],} where {\\displaystyle x^{*}} is the complex conjugate of {\\displaystyle x.} This variance is a real scalar.\n

                                                                            For vector-valued random variables

                                                                            As a matrix

                                                                            If {\\displaystyle X} is a vector-valued random variable, with values in {\\displaystyle \\mathbb {R} ^{n},} and thought of as a column vector, then a natural generalization of variance is {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],} where {\\displaystyle \\mu =\\operatorname {E} (X)} and {\\displaystyle X^{\\operatorname {T} }} is the transpose of {\\displaystyle X,} and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                                            If {\\displaystyle X} is a vector- and complex-valued random variable, with values in {\\displaystyle \\mathbb {C} ^{n},} then the covariance matrix is{\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],} where {\\displaystyle X^{\\dagger }} is the conjugate transpose of {\\displaystyle X.} This matrix is also positive semi-definite and square.\n

                                                                            As a scalar

                                                                            Another generalization of variance for vector-valued random variables {\\displaystyle X}, which results in a scalar value rather than in a matrix, is the generalized variance{\\displaystyle \\det(C)}, the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]

                                                                            A different generalization is obtained by considering the equation for the scalar variance, {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}, and reinterpreting {\\displaystyle (X-\\mu )^{2}} as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector {\\displaystyle X-\\mu } with itself. This results in {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),} which is the trace of the covariance matrix.\n

                                                                            See also

                                                                              Types of variance

                                                                                References

                                                                                  ", "statics": {"paragraph": 178, "paragraph.text": 297, "paragraph.equation-inline": 122, "image": 2, "list": 74, "list.text": 15, "title": 49, "list.equation-inline": 71, "table": 1, "equation-interline": 3}, "url": "https://en.m.wikipedia.org/wiki/Variance", "content": "In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation(SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by ${\\displaystyle \\sigma ^{2}}$ , ${\\displaystyle s^{2}}$ , ${\\displaystyle \\operatorname {Var} (X)}$ , ${\\displaystyle V(X)}$ , or ${\\displaystyle \\mathbb {V} (X)}$ .[ 1]\n\nAn advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n\nThere are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n\nThe two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n\n1. A frequency distribution is constructed.\n2. The centroid of the distribution gives its mean.\n3. A square with sides equal to the difference of each value from the mean is formed for each value.\n4. Arranging the squares into a rectangle with one side equal to the number of values, n , results in the other side being the distribution's variance, \u03c3 2 .\n\n## Definition\n\nedit\n\nThe variance of a random variable ${\\displaystyle X}$ is the expected value of the squared deviation from the mean of ${\\displaystyle X}$ , ${\\displaystyle \\mu =\\operatorname {E} [X]}$ :\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}$\n\nThis definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}$\n\nThe variance is also equivalent to the second cumulant of a probability distribution that generates ${\\displaystyle X}$ . The variance is typically designated as ${\\displaystyle \\operatorname {Var} (X)}$ , or sometimes as ${\\displaystyle V(X)}$ or ${\\displaystyle \\mathbb {V} (X)}$ , or symbolically as ${\\displaystyle \\sigma _{X}^{2}}$ or simply ${\\displaystyle \\sigma ^{2}}$ (pronounced \" sigma squared\"). The expression for the variance can be expanded as follows:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}$\n\nIn other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n\n### Discrete random variable\n\nedit\n\nIf the generator of random variable ${\\displaystyle X}$ is discrete with probability mass function ${\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}$ , then\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}$\n\nwhere ${\\displaystyle \\mu }$ is the expected value. That is,\n\n1. ${\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}$\n\n(When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n\nThe variance of a collection of ${\\displaystyle n}$ equally likely values can be written as\n\n1. ${\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}$\n\nwhere ${\\displaystyle \\mu }$ is the average value. That is,\n\n1. ${\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}$\n\nThe variance of a set of ${\\displaystyle n}$ equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[ 2]\n\n1. ${\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}$\n\n### Absolutely continuous random variable\n\nedit\n\nIf the random variable ${\\displaystyle X}$ has a probability density function ${\\displaystyle f(x)}$ , and ${\\displaystyle F(x)}$ is the corresponding cumulative distribution function, then\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}$\n\nor equivalently,\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}$\n\nwhere ${\\displaystyle \\mu }$ is the expected value of ${\\displaystyle X}$ given by\n\n1. ${\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}$\n\nIn these formulas, the integrals with respect to ${\\displaystyle dx}$ and ${\\displaystyle dF(x)}$ are Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n\nIf the function ${\\displaystyle x^{2}f(x)}$ is Riemann-integrable on every finite interval ${\\displaystyle [a,b]\\subset \\mathbb {R} ,}$ then\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}$\n\nwhere the integral is an improper Riemann integral.\n\n## Examples\n\nedit\n\n### Exponential distribution\n\nedit\n\nThe exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n\n1. ${\\displaystyle f(x)=\\lambda e^{-\\lambda x}}$\n\non the interval[0, \u221e). Its mean can be shown to be\n\n1. ${\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}$\n\nUsing integration by parts and making use of the expected value already calculated, we have:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}$\n\nThus, the variance of X is given by\n\n1. ${\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}$\n\n### Fair dice\n\nedit\n\nA fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is ${\\displaystyle (1+2+3+4+5+6)/6=7/2.}$ Therefore, the variance of X is\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}$\n\nThe general formula for the variance of the outcome, X, of an n-sided die is\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}$\n\n### Commonly used probability distributions\n\nedit\n\nThe following table lists the variance for some commonly used probability distributions.\n\n| Name of the probability distribution | Probability distribution function | Mean | Variance |\n|---|---|---|---|\n| Binomial distribution | {\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}} | {\\displaystyle np} | {\\displaystyle np(1-p)} |\n| Geometric distribution | {\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p} | {\\displaystyle {\\frac {1}{p}}} | {\\displaystyle {\\frac {(1-p)}{p^{2}}}} |\n| Normal distribution | {\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}} | {\\displaystyle \\mu } | {\\displaystyle \\sigma ^{2}} |\n| Uniform distribution (continuous) | {\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}xb\\end{cases}}} | {\\displaystyle {\\frac {a+b}{2}}} | {\\displaystyle {\\frac {(b-a)^{2}}{12}}} |\n| Exponential distribution | {\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}} | {\\displaystyle {\\frac {1}{\\lambda }}} | {\\displaystyle {\\frac {1}{\\lambda ^{2}}}} |\n| Poisson distribution | {\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}} | {\\displaystyle \\lambda } | {\\displaystyle \\lambda } |\n\n## Properties\n\nedit\n\n### Basic properties\n\nedit\n\nVariance is non-negative because the squares are positive or zero:\n\n1. ${\\displaystyle \\operatorname {Var} (X)\\geq 0.}$\n\nThe variance of a constant is zero.\n\n1. ${\\displaystyle \\operatorname {Var} (a)=0.}$\n\nConversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n\n1. ${\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}$\n\n### Issues of finiteness\n\nedit\n\nIf a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index ${\\displaystyle k}$ satisfies ${\\displaystyle 1 0. This also holds in the multidimensional case.[ 3]\n\n### Units of measurement\n\nedit\n\nUnlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is\u221a 2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n\nThe standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n\n## Propagation\n\nedit\n\n### Addition and multiplication by a constant\n\nedit\n\nVariance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n\n1. ${\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}$\n\nIf all values are scaled by a constant, the variance is scaled by the square of that constant:\n\n1. ${\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}$\n\nThe variance of a sum of two random variables is given by\n\n1. ${\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}$\n\n1. ${\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}$\n\nwhere ${\\displaystyle \\operatorname {Cov} (X,Y)}$ is the covariance.\n\n### Linear combinations\n\nedit\n\nIn general, for the sum of ${\\displaystyle N}$ random variables ${\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}$ , the variance becomes:\n\n1. ${\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}$\n\nsee also general Bienaym\u00e9's identity.\n\nThese results lead to the variance of a linear combination as:\n\n1. ${\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i\n\n\n\nVariance - Wikipedia\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\t\"Wikipedia\"\n\n\n\n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\n
                                                                                  \n\t\t\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  Variance

                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\tArticle\n\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\tTalk\n\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n
                                                                                  This article is about the mathematical concept. For other uses, see Variance (disambiguation).
                                                                                  \n

                                                                                  In probability theory and statistics, variance is the expected value of the squared deviation from the mean of a random variable. The standard deviation (SD) is obtained as the square root of the variance. Variance is a measure of dispersion, meaning it is a measure of how far a set of numbers is spread out from their average value. It is the second central moment of a distribution, and the covariance of the random variable with itself, and it is often represented by \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n\"{\\displaystyle, \n \n \n \n \n s\n \n 2\n \n \n \n \n {\\displaystyle s^{2}}\n \n\"{\\displaystyle, \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\operatorname {Var} (X)}\n \n\"{\\displaystyle, \n \n \n \n V\n (\n X\n )\n \n \n {\\displaystyle V(X)}\n \n\"{\\displaystyle, or \n \n \n \n \n V\n \n (\n X\n )\n \n \n {\\displaystyle \\mathbb {V} (X)}\n \n\"{\\displaystyle.[1]\n

                                                                                  Example of samples from two populations with the same mean but different variances. The red population has mean 100 and variance 100 (SD=10) while the blue population has mean 100 and variance 2500 (SD=50) where SD stands for Standard Deviation.
                                                                                  \n

                                                                                  An advantage of variance as a measure of dispersion is that it is more amenable to algebraic manipulation than other measures of dispersion such as the expected absolute deviation; for example, the variance of a sum of uncorrelated random variables is equal to the sum of their variances. A disadvantage of the variance for practical applications is that, unlike the standard deviation, its units differ from the random variable, which is why the standard deviation is more commonly reported as a measure of dispersion once the calculation is finished. Another disadvantage is that the variance is not finite for many distributions.\n

                                                                                  There are two distinct concepts that are both called \"variance\". One, as discussed above, is part of a theoretical probability distribution and is defined by an equation. The other variance is a characteristic of a set of observations. When variance is calculated from observations, those observations are typically measured from a real-world system. If all possible observations of the system are present, then the calculated variance is called the population variance. Normally, however, only a subset is available, and the variance calculated from this is called the sample variance. The variance calculated from a sample is considered an estimate of the full population variance. There are multiple ways to calculate an estimate of the population variance, as discussed in the section below.\n

                                                                                  The two kinds of variance are closely related. To see how, consider that a theoretical probability distribution can be used as a generator of hypothetical observations. If an infinite number of observations are generated using a distribution, then the sample variance calculated from that infinite set will match the value calculated using the distribution's equation for variance. Variance has a central role in statistics, where some ideas that use it include descriptive statistics, statistical inference, hypothesis testing, goodness of fit, and Monte Carlo sampling.\n

                                                                                  \n

                                                                                  Contents

                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  Geometric visualisation of the variance of an arbitrary distribution (2, 4, 4, 4, 5, 5, 7, 9):
                                                                                  1. A frequency distribution is constructed.
                                                                                  2. The centroid of the distribution gives its mean.
                                                                                  3. A square with sides equal to the difference of each value from the mean is formed for each value.
                                                                                  4. Arranging the squares into a rectangle with one side equal to the number of values, n, results in the other side being the distribution's variance, \u03c32.
                                                                                  \n

                                                                                  Definition

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The variance of a random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is the expected value of the squared deviation from the mean of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n , \n \n \n \n \u03bc\n =\n E\n \u2061\n [\n X\n ]\n \n \n {\\displaystyle \\mu =\\operatorname {E} [X]}\n \n :\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n ]\n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right].}\n \n 
                                                                                  \n

                                                                                  This definition encompasses random variables that are generated by processes that are discrete, continuous, neither, or mixed. The variance can also be thought of as the covariance of a random variable with itself:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n Cov\n \u2061\n (\n X\n ,\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {Cov} (X,X).}\n \n 
                                                                                  \n

                                                                                  The variance is also equivalent to the second cumulant of a probability distribution that generates \n \n \n \n X\n \n \n {\\displaystyle X}\n \n . The variance is typically designated as \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\operatorname {Var} (X)}\n \n , or sometimes as \n \n \n \n V\n (\n X\n )\n \n \n {\\displaystyle V(X)}\n \n  or \n \n \n \n \n V\n \n (\n X\n )\n \n \n {\\displaystyle \\mathbb {V} (X)}\n \n , or symbolically as \n \n \n \n \n \u03c3\n \n X\n \n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{X}^{2}}\n \n  or simply \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n  (pronounced \"sigma squared\"). The expression for the variance can be expanded as follows:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n E\n \u2061\n [\n X\n ]\n \n )\n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n \u2212\n 2\n X\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n 2\n E\n \u2061\n [\n X\n ]\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n 2\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n +\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left[(X-\\operatorname {E} [X])^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}-2X\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\right]\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]\\operatorname {E} [X]+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-2\\operatorname {E} [X]^{2}+\\operatorname {E} [X]^{2}\\\\[4pt]&=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  In other words, the variance of X is equal to the mean of the square of X minus the square of the mean of X. This equation should not be used for computations using floating point arithmetic, because it suffers from catastrophic cancellation if the two components of the equation are similar in magnitude. For other numerically stable alternatives, see algorithms for calculating variance.\n

                                                                                  \n

                                                                                  Discrete random variable

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If the generator of random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is discrete with probability mass function \n \n \n \n \n x\n \n 1\n \n \n \u21a6\n \n p\n \n 1\n \n \n ,\n \n x\n \n 2\n \n \n \u21a6\n \n p\n \n 2\n \n \n ,\n \u2026\n ,\n \n x\n \n n\n \n \n \u21a6\n \n p\n \n n\n \n \n \n \n {\\displaystyle x_{1}\\mapsto p_{1},x_{2}\\mapsto p_{2},\\ldots ,x_{n}\\mapsto p_{n}}\n \n , then\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n p\n \n i\n \n \n \u22c5\n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\sum _{i=1}^{n}p_{i}\\cdot (x_{i}-\\mu )^{2},}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the expected value. That is,\n

                                                                                  \n
                                                                                  \n \n \n \n \u03bc\n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n p\n \n i\n \n \n \n x\n \n i\n \n \n .\n \n \n {\\displaystyle \\mu =\\sum _{i=1}^{n}p_{i}x_{i}.}\n \n 
                                                                                  \n

                                                                                  (When such a discrete weighted variance is specified by weights whose sum is not 1, then one divides by the sum of the weights.)\n

                                                                                  The variance of a collection of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  equally likely values can be written as\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n}}\\sum _{i=1}^{n}(x_{i}-\\mu )^{2}}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the average value. That is,\n

                                                                                  \n
                                                                                  \n \n \n \n \u03bc\n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n x\n \n i\n \n \n .\n \n \n {\\displaystyle \\mu ={\\frac {1}{n}}\\sum _{i=1}^{n}x_{i}.}\n \n 
                                                                                  \n

                                                                                  The variance of a set of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  equally likely values can be equivalently expressed, without directly referring to the mean, in terms of squared deviations of all pairwise squared distances of points from each other:[2]\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \n 1\n 2\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n 2\n \n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n \n \n \n \u2211\n \n j\n >\n i\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\sum _{j=1}^{n}{\\frac {1}{2}}(x_{i}-x_{j})^{2}={\\frac {1}{n^{2}}}\\sum _{i}\\sum _{j>i}(x_{i}-x_{j})^{2}.}\n \n 
                                                                                  \n

                                                                                  Absolutely continuous random variable

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If the random variable \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  has a probability density function \n \n \n \n f\n (\n x\n )\n \n \n {\\displaystyle f(x)}\n \n , and \n \n \n \n F\n (\n x\n )\n \n \n {\\displaystyle F(x)}\n \n  is the corresponding cumulative distribution function, then\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u03c3\n \n 2\n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n (\n x\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n 2\n \u03bc\n \n \u222b\n \n \n R\n \n \n \n x\n f\n (\n x\n )\n \n d\n x\n +\n \n \u03bc\n \n 2\n \n \n \n \u222b\n \n \n R\n \n \n \n f\n (\n x\n )\n \n d\n x\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n 2\n \u03bc\n \n \u222b\n \n \n R\n \n \n \n x\n \n d\n F\n (\n x\n )\n +\n \n \u03bc\n \n 2\n \n \n \n \u222b\n \n \n R\n \n \n \n \n d\n F\n (\n x\n )\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n 2\n \u03bc\n \u22c5\n \u03bc\n +\n \n \u03bc\n \n 2\n \n \n \u22c5\n 1\n \n \n \n \n \n \n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n \n d\n F\n (\n x\n )\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)=\\sigma ^{2}&=\\int _{\\mathbb {R} }(x-\\mu )^{2}f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-2\\mu \\int _{\\mathbb {R} }xf(x)\\,dx+\\mu ^{2}\\int _{\\mathbb {R} }f(x)\\,dx\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\int _{\\mathbb {R} }x\\,dF(x)+\\mu ^{2}\\int _{\\mathbb {R} }\\,dF(x)\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-2\\mu \\cdot \\mu +\\mu ^{2}\\cdot 1\\\\[4pt]&=\\int _{\\mathbb {R} }x^{2}\\,dF(x)-\\mu ^{2},\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  or equivalently,\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u222b\n \n \n R\n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\int _{\\mathbb {R} }x^{2}f(x)\\,dx-\\mu ^{2},}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n  is the expected value of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  given by\n

                                                                                  \n
                                                                                  \n \n \n \n \u03bc\n =\n \n \u222b\n \n \n R\n \n \n \n x\n f\n (\n x\n )\n \n d\n x\n =\n \n \u222b\n \n \n R\n \n \n \n x\n \n d\n F\n (\n x\n )\n .\n \n \n {\\displaystyle \\mu =\\int _{\\mathbb {R} }xf(x)\\,dx=\\int _{\\mathbb {R} }x\\,dF(x).}\n \n 
                                                                                  \n

                                                                                  In these formulas, the integrals with respect to \n \n \n \n d\n x\n \n \n {\\displaystyle dx}\n \n  and \n \n \n \n d\n F\n (\n x\n )\n \n \n {\\displaystyle dF(x)}\n \n \nare Lebesgue and Lebesgue\u2013Stieltjes integrals, respectively.\n

                                                                                  If the function \n \n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n \n {\\displaystyle x^{2}f(x)}\n \n  is Riemann-integrable on every finite interval \n \n \n \n [\n a\n ,\n b\n ]\n \u2282\n \n R\n \n ,\n \n \n {\\displaystyle [a,b]\\subset \\mathbb {R} ,}\n \n  then\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n \n \u222b\n \n \u2212\n \u221e\n \n \n +\n \u221e\n \n \n \n x\n \n 2\n \n \n f\n (\n x\n )\n \n d\n x\n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\int _{-\\infty }^{+\\infty }x^{2}f(x)\\,dx-\\mu ^{2},}\n \n 
                                                                                  \n

                                                                                  where the integral is an improper Riemann integral.\n

                                                                                  \n

                                                                                  Examples

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Exponential distribution

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The exponential distribution with parameter \u03bb is a continuous distribution whose probability density function is given by\n

                                                                                  \n
                                                                                  \n \n \n \n f\n (\n x\n )\n =\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n \n {\\displaystyle f(x)=\\lambda e^{-\\lambda x}}\n \n 
                                                                                  \n

                                                                                  on the interval [0, \u221e). Its mean can be shown to be\n

                                                                                  \n
                                                                                  \n \n \n \n E\n \u2061\n [\n X\n ]\n =\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n x\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n =\n \n \n 1\n \u03bb\n \n \n .\n \n \n {\\displaystyle \\operatorname {E} [X]=\\int _{0}^{\\infty }x\\lambda e^{-\\lambda x}\\,dx={\\frac {1}{\\lambda }}.}\n \n 
                                                                                  \n

                                                                                  Using integration by parts and making use of the expected value already calculated, we have:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \n \n \n =\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n \n x\n \n 2\n \n \n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n \n \n \n \n \n \n =\n \n \n [\n \n \u2212\n \n x\n \n 2\n \n \n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n ]\n \n \n 0\n \n \n \u221e\n \n \n +\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n 2\n x\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n d\n x\n \n \n \n \n \n \n =\n 0\n +\n \n \n 2\n \u03bb\n \n \n E\n \u2061\n [\n X\n ]\n \n \n \n \n \n \n =\n \n \n 2\n \n \u03bb\n \n 2\n \n \n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {E} \\left[X^{2}\\right]&=\\int _{0}^{\\infty }x^{2}\\lambda e^{-\\lambda x}\\,dx\\\\&=\\left[-x^{2}e^{-\\lambda x}\\right]_{0}^{\\infty }+\\int _{0}^{\\infty }2xe^{-\\lambda x}\\,dx\\\\&=0+{\\frac {2}{\\lambda }}\\operatorname {E} [X]\\\\&={\\frac {2}{\\lambda ^{2}}}.\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Thus, the variance of X is given by\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n =\n \n \n 2\n \n \u03bb\n \n 2\n \n \n \n \n \u2212\n \n \n (\n \n \n 1\n \u03bb\n \n \n )\n \n \n 2\n \n \n =\n \n \n 1\n \n \u03bb\n \n 2\n \n \n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[X^{2}\\right]-\\operatorname {E} [X]^{2}={\\frac {2}{\\lambda ^{2}}}-\\left({\\frac {1}{\\lambda }}\\right)^{2}={\\frac {1}{\\lambda ^{2}}}.}\n \n 
                                                                                  \n

                                                                                  Fair dice

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  A fair six-sided dice can be modeled as a discrete random variable, X, with outcomes 1 through 6, each with equal probability 1/6. The expected value of X is \n \n \n \n (\n 1\n +\n 2\n +\n 3\n +\n 4\n +\n 5\n +\n 6\n )\n \n /\n \n 6\n =\n 7\n \n /\n \n 2.\n \n \n {\\displaystyle (1+2+3+4+5+6)/6=7/2.}\n \n  Therefore, the variance of X is\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n 6\n \n \n \n \n 1\n 6\n \n \n \n \n (\n \n i\n \u2212\n \n \n 7\n 2\n \n \n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n 1\n 6\n \n \n \n (\n \n (\n \u2212\n 5\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n \u2212\n 3\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n \u2212\n 1\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 1\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 3\n \n /\n \n 2\n \n )\n \n 2\n \n \n +\n (\n 5\n \n /\n \n 2\n \n )\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 35\n 12\n \n \n \u2248\n 2.92.\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\sum _{i=1}^{6}{\\frac {1}{6}}\\left(i-{\\frac {7}{2}}\\right)^{2}\\\\[5pt]&={\\frac {1}{6}}\\left((-5/2)^{2}+(-3/2)^{2}+(-1/2)^{2}+(1/2)^{2}+(3/2)^{2}+(5/2)^{2}\\right)\\\\[5pt]&={\\frac {35}{12}}\\approx 2.92.\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  The general formula for the variance of the outcome, X, of an n-sided die is\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n )\n \n \n \n =\n E\n \u2061\n \n (\n \n X\n \n 2\n \n \n )\n \n \u2212\n (\n E\n \u2061\n (\n X\n )\n \n )\n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n i\n \n 2\n \n \n \u2212\n \n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n i\n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n \n (\n n\n +\n 1\n )\n (\n 2\n n\n +\n 1\n )\n \n 6\n \n \n \u2212\n \n \n (\n \n \n \n n\n +\n 1\n \n 2\n \n \n )\n \n \n 2\n \n \n \n \n \n \n \n \n =\n \n \n \n \n n\n \n 2\n \n \n \u2212\n 1\n \n 12\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X)&=\\operatorname {E} \\left(X^{2}\\right)-(\\operatorname {E} (X))^{2}\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}i^{2}-\\left({\\frac {1}{n}}\\sum _{i=1}^{n}i\\right)^{2}\\\\[5pt]&={\\frac {(n+1)(2n+1)}{6}}-\\left({\\frac {n+1}{2}}\\right)^{2}\\\\[4pt]&={\\frac {n^{2}-1}{12}}.\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Commonly used probability distributions

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The following table lists the variance for some commonly used probability distributions.\n

                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  Name of the probability distribution\nProbability distribution function\nMean\nVariance\n
                                                                                  Binomial distribution\n\n \n \n \n Pr\n \n (\n X\n =\n k\n )\n =\n \n \n \n (\n \n \n n\n k\n \n \n )\n \n \n \n \n p\n \n k\n \n \n (\n 1\n \u2212\n p\n \n )\n \n n\n \u2212\n k\n \n \n \n \n {\\displaystyle \\Pr \\,(X=k)={\\binom {n}{k}}p^{k}(1-p)^{n-k}}\n \n \n\n \n \n \n n\n p\n \n \n {\\displaystyle np}\n \n \n\n \n \n \n n\n p\n (\n 1\n \u2212\n p\n )\n \n \n {\\displaystyle np(1-p)}\n \n \n
                                                                                  Geometric distribution\n\n \n \n \n Pr\n \n (\n X\n =\n k\n )\n =\n (\n 1\n \u2212\n p\n \n )\n \n k\n \u2212\n 1\n \n \n p\n \n \n {\\displaystyle \\Pr \\,(X=k)=(1-p)^{k-1}p}\n \n \n\n \n \n \n \n \n 1\n p\n \n \n \n \n {\\displaystyle {\\frac {1}{p}}}\n \n \n\n \n \n \n \n \n \n (\n 1\n \u2212\n p\n )\n \n \n p\n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\frac {(1-p)}{p^{2}}}}\n \n \n
                                                                                  Normal distribution\n\n \n \n \n f\n \n (\n \n x\n \u2223\n \u03bc\n ,\n \n \u03c3\n \n 2\n \n \n \n )\n \n =\n \n \n 1\n \n 2\n \u03c0\n \n \u03c3\n \n 2\n \n \n \n \n \n \n e\n \n \u2212\n \n \n \n (\n x\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n 2\n \n \u03c3\n \n 2\n \n \n \n \n \n \n \n \n \n {\\displaystyle f\\left(x\\mid \\mu ,\\sigma ^{2}\\right)={\\frac {1}{\\sqrt {2\\pi \\sigma ^{2}}}}e^{-{\\frac {(x-\\mu )^{2}}{2\\sigma ^{2}}}}}\n \n \n\n \n \n \n \u03bc\n \n \n {\\displaystyle \\mu }\n \n \n\n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma ^{2}}\n \n \n
                                                                                  Uniform distribution (continuous)\n\n \n \n \n f\n (\n x\n \u2223\n a\n ,\n b\n )\n =\n \n \n {\n \n \n \n \n \n 1\n \n b\n \u2212\n a\n \n \n \n \n \n \n for \n \n a\n \u2264\n x\n \u2264\n b\n ,\n \n \n \n \n 0\n \n \n \n for \n \n x\n <\n a\n \n or \n \n x\n >\n b\n \n \n \n \n \n \n \n \n {\\displaystyle f(x\\mid a,b)={\\begin{cases}{\\frac {1}{b-a}}&{\\text{for }}a\\leq x\\leq b,\\\\[3pt]0&{\\text{for }}x<a{\\text{ or }}x>b\\end{cases}}}\n \n \n\n \n \n \n \n \n \n a\n +\n b\n \n 2\n \n \n \n \n {\\displaystyle {\\frac {a+b}{2}}}\n \n \n\n \n \n \n \n \n \n (\n b\n \u2212\n a\n \n )\n \n 2\n \n \n \n 12\n \n \n \n \n {\\displaystyle {\\frac {(b-a)^{2}}{12}}}\n \n \n
                                                                                  Exponential distribution\n\n \n \n \n f\n (\n x\n \u2223\n \u03bb\n )\n =\n \u03bb\n \n e\n \n \u2212\n \u03bb\n x\n \n \n \n \n {\\displaystyle f(x\\mid \\lambda )=\\lambda e^{-\\lambda x}}\n \n \n\n \n \n \n \n \n 1\n \u03bb\n \n \n \n \n {\\displaystyle {\\frac {1}{\\lambda }}}\n \n \n\n \n \n \n \n \n 1\n \n \u03bb\n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\frac {1}{\\lambda ^{2}}}}\n \n \n
                                                                                  Poisson distribution\n\n \n \n \n f\n (\n k\n \u2223\n \u03bb\n )\n =\n \n \n \n \n e\n \n \u2212\n \u03bb\n \n \n \n \u03bb\n \n k\n \n \n \n \n k\n !\n \n \n \n \n \n {\\displaystyle f(k\\mid \\lambda )={\\frac {e^{-\\lambda }\\lambda ^{k}}{k!}}}\n \n \n\n \n \n \n \u03bb\n \n \n {\\displaystyle \\lambda }\n \n \n\n \n \n \n \u03bb\n \n \n {\\displaystyle \\lambda }\n \n \n
                                                                                  \n

                                                                                  Properties

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Basic properties

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Variance is non-negative because the squares are positive or zero:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n \u2265\n 0.\n \n \n {\\displaystyle \\operatorname {Var} (X)\\geq 0.}\n \n 
                                                                                  \n

                                                                                  The variance of a constant is zero.\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n a\n )\n =\n 0.\n \n \n {\\displaystyle \\operatorname {Var} (a)=0.}\n \n 
                                                                                  \n

                                                                                  Conversely, if the variance of a random variable is 0, then it is almost surely a constant. That is, it always has the same value:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n 0\n \n \u27fa\n \n \u2203\n a\n :\n P\n (\n X\n =\n a\n )\n =\n 1.\n \n \n {\\displaystyle \\operatorname {Var} (X)=0\\iff \\exists a:P(X=a)=1.}\n \n 
                                                                                  \n

                                                                                  Issues of finiteness

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If a distribution does not have a finite expected value, as is the case for the Cauchy distribution, then the variance cannot be finite either. However, some distributions may not have a finite variance, despite their expected value being finite. An example is a Pareto distribution whose index \n \n \n \n k\n \n \n {\\displaystyle k}\n \n  satisfies \n \n \n \n 1\n <\n k\n \u2264\n 2.\n \n \n {\\displaystyle 1<k\\leq 2.}\n \n \n

                                                                                  \n

                                                                                  Decomposition

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The general formula for variance decomposition or the law of total variance is: If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  and \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n  are two random variables, and the variance of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  exists, then\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n [\n X\n ]\n =\n E\n \u2061\n (\n Var\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n +\n Var\n \u2061\n (\n E\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} [X]=\\operatorname {E} (\\operatorname {Var} [X\\mid Y])+\\operatorname {Var} (\\operatorname {E} [X\\mid Y]).}\n \n 
                                                                                  \n

                                                                                  The conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n )\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y)}\n \n  of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  given \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n , and the conditional variance \n \n \n \n Var\n \u2061\n (\n X\n \u2223\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (X\\mid Y)}\n \n  may be understood as follows. Given any particular value y of the random variable Y, there is a conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n =\n y\n )\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y=y)}\n \n  given the event Y = y. This quantity depends on the particular value y; it is a function \n \n \n \n g\n (\n y\n )\n =\n E\n \u2061\n (\n X\n \u2223\n Y\n =\n y\n )\n \n \n {\\displaystyle g(y)=\\operatorname {E} (X\\mid Y=y)}\n \n . That same function evaluated at the random variable Y is the conditional expectation \n \n \n \n E\n \u2061\n (\n X\n \u2223\n Y\n )\n =\n g\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {E} (X\\mid Y)=g(Y).}\n \n \n

                                                                                  In particular, if \n \n \n \n Y\n \n \n {\\displaystyle Y}\n \n  is a discrete random variable assuming possible values \n \n \n \n \n y\n \n 1\n \n \n ,\n \n y\n \n 2\n \n \n ,\n \n y\n \n 3\n \n \n \u2026\n \n \n {\\displaystyle y_{1},y_{2},y_{3}\\ldots }\n \n  with corresponding probabilities \n \n \n \n \n p\n \n 1\n \n \n ,\n \n p\n \n 2\n \n \n ,\n \n p\n \n 3\n \n \n \u2026\n ,\n \n \n {\\displaystyle p_{1},p_{2},p_{3}\\ldots ,}\n \n , then in the formula for total variance, the first term on the right-hand side becomes\n

                                                                                  \n
                                                                                  \n \n \n \n E\n \u2061\n (\n Var\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {E} (\\operatorname {Var} [X\\mid Y])=\\sum _{i}p_{i}\\sigma _{i}^{2},}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n =\n Var\n \u2061\n [\n X\n \u2223\n Y\n =\n \n y\n \n i\n \n \n ]\n \n \n {\\displaystyle \\sigma _{i}^{2}=\\operatorname {Var} [X\\mid Y=y_{i}]}\n \n . Similarly, the second term on the right-hand side becomes\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n E\n \u2061\n [\n X\n \u2223\n Y\n ]\n )\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \n (\n \n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n \n )\n \n \n 2\n \n \n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \u03bc\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {Var} (\\operatorname {E} [X\\mid Y])=\\sum _{i}p_{i}\\mu _{i}^{2}-\\left(\\sum _{i}p_{i}\\mu _{i}\\right)^{2}=\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2},}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n \n \u03bc\n \n i\n \n \n =\n E\n \u2061\n [\n X\n \u2223\n Y\n =\n \n y\n \n i\n \n \n ]\n \n \n {\\displaystyle \\mu _{i}=\\operatorname {E} [X\\mid Y=y_{i}]}\n \n  and \n \n \n \n \u03bc\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n \n \n {\\displaystyle \\mu =\\sum _{i}p_{i}\\mu _{i}}\n \n . Thus the total variance is given by\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n [\n X\n ]\n =\n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03c3\n \n i\n \n \n 2\n \n \n +\n \n (\n \n \n \u2211\n \n i\n \n \n \n p\n \n i\n \n \n \n \u03bc\n \n i\n \n \n 2\n \n \n \u2212\n \n \u03bc\n \n 2\n \n \n \n )\n \n .\n \n \n {\\displaystyle \\operatorname {Var} [X]=\\sum _{i}p_{i}\\sigma _{i}^{2}+\\left(\\sum _{i}p_{i}\\mu _{i}^{2}-\\mu ^{2}\\right).}\n \n 
                                                                                  \n

                                                                                  A similar formula is applied in analysis of variance, where the corresponding formula is\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n M\n S\n \n \n \n total\n \n \n =\n \n \n \n M\n S\n \n \n \n between\n \n \n +\n \n \n \n M\n S\n \n \n \n within\n \n \n ;\n \n \n {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{between}}+{\\mathit {MS}}_{\\text{within}};}\n \n 
                                                                                  \n

                                                                                  here \n \n \n \n \n \n M\n S\n \n \n \n \n {\\displaystyle {\\mathit {MS}}}\n \n  refers to the Mean of the Squares. In linear regression analysis the corresponding formula is\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n M\n S\n \n \n \n total\n \n \n =\n \n \n \n M\n S\n \n \n \n regression\n \n \n +\n \n \n \n M\n S\n \n \n \n residual\n \n \n .\n \n \n {\\displaystyle {\\mathit {MS}}_{\\text{total}}={\\mathit {MS}}_{\\text{regression}}+{\\mathit {MS}}_{\\text{residual}}.}\n \n 
                                                                                  \n

                                                                                  This can also be derived from the additivity of variances, since the total (observed) score is the sum of the predicted score and the error score, where the latter two are uncorrelated.\n

                                                                                  Similar decompositions are possible for the sum of squared deviations (sum of squares, \n \n \n \n \n \n S\n S\n \n \n \n \n {\\displaystyle {\\mathit {SS}}}\n \n ):\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n S\n S\n \n \n \n total\n \n \n =\n \n \n \n S\n S\n \n \n \n between\n \n \n +\n \n \n \n S\n S\n \n \n \n within\n \n \n ,\n \n \n {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{between}}+{\\mathit {SS}}_{\\text{within}},}\n \n 
                                                                                  \n
                                                                                  \n \n \n \n \n \n \n S\n S\n \n \n \n total\n \n \n =\n \n \n \n S\n S\n \n \n \n regression\n \n \n +\n \n \n \n S\n S\n \n \n \n residual\n \n \n .\n \n \n {\\displaystyle {\\mathit {SS}}_{\\text{total}}={\\mathit {SS}}_{\\text{regression}}+{\\mathit {SS}}_{\\text{residual}}.}\n \n 
                                                                                  \n

                                                                                  Calculation from the CDF

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The population variance for a non-negative random variable can be expressed in terms of the cumulative distribution function F using\n

                                                                                  \n
                                                                                  \n \n \n \n 2\n \n \u222b\n \n 0\n \n \n \u221e\n \n \n u\n (\n 1\n \u2212\n F\n (\n u\n )\n )\n \n d\n u\n \u2212\n \n \n (\n \n \n \u222b\n \n 0\n \n \n \u221e\n \n \n (\n 1\n \u2212\n F\n (\n u\n )\n )\n \n d\n u\n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle 2\\int _{0}^{\\infty }u(1-F(u))\\,du-\\left(\\int _{0}^{\\infty }(1-F(u))\\,du\\right)^{2}.}\n \n 
                                                                                  \n

                                                                                  This expression can be used to calculate the variance in situations where the CDF, but not the density, can be conveniently expressed.\n

                                                                                  \n

                                                                                  Characteristic property

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The second moment of a random variable attains the minimum value when taken around the first moment (i.e., mean) of the random variable, i.e. \n \n \n \n \n \n a\n r\n g\n m\n i\n n\n \n \n m\n \n \n \n \n E\n \n \n (\n \n \n (\n \n X\n \u2212\n m\n \n )\n \n \n 2\n \n \n )\n \n =\n \n E\n \n (\n X\n )\n \n \n {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} \\left(\\left(X-m\\right)^{2}\\right)=\\mathrm {E} (X)}\n \n . Conversely, if a continuous function \n \n \n \n \u03c6\n \n \n {\\displaystyle \\varphi }\n \n  satisfies \n \n \n \n \n \n a\n r\n g\n m\n i\n n\n \n \n m\n \n \n \n \n E\n \n (\n \u03c6\n (\n X\n \u2212\n m\n )\n )\n =\n \n E\n \n (\n X\n )\n \n \n {\\displaystyle \\mathrm {argmin} _{m}\\,\\mathrm {E} (\\varphi (X-m))=\\mathrm {E} (X)}\n \n  for all random variables X, then it is necessarily of the form \n \n \n \n \u03c6\n (\n x\n )\n =\n a\n \n x\n \n 2\n \n \n +\n b\n \n \n {\\displaystyle \\varphi (x)=ax^{2}+b}\n \n , where a > 0. This also holds in the multidimensional case.[3]\n

                                                                                  \n

                                                                                  Units of measurement

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Unlike the expected absolute deviation, the variance of a variable has units that are the square of the units of the variable itself. For example, a variable measured in meters will have a variance measured in meters squared. For this reason, describing data sets via their standard deviation or root mean square deviation is often preferred over using the variance. In the dice example the standard deviation is \u221a2.9 \u2248 1.7, slightly larger than the expected absolute deviation of 1.5.\n

                                                                                  The standard deviation and the expected absolute deviation can both be used as an indicator of the \"spread\" of a distribution. The standard deviation is more amenable to algebraic manipulation than the expected absolute deviation, and, together with variance and its generalization covariance, is used frequently in theoretical statistics; however the expected absolute deviation tends to be more robust as it is less sensitive to outliers arising from measurement anomalies or an unduly heavy-tailed distribution.\n

                                                                                  \n

                                                                                  Propagation

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Addition and multiplication by a constant

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Variance is invariant with respect to changes in a location parameter. That is, if a constant is added to all values of the variable, the variance is unchanged:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n +\n a\n )\n =\n Var\n \u2061\n (\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X+a)=\\operatorname {Var} (X).}\n \n 
                                                                                  \n

                                                                                  If all values are scaled by a constant, the variance is scaled by the square of that constant:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n a\n X\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (aX)=a^{2}\\operatorname {Var} (X).}\n \n 
                                                                                  \n

                                                                                  The variance of a sum of two random variables is given by\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n a\n X\n +\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n +\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (aX+bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)+2ab\\,\\operatorname {Cov} (X,Y)}\n \n 
                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n a\n X\n \u2212\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n \u2212\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Var} (aX-bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)-2ab\\,\\operatorname {Cov} (X,Y)}\n \n 
                                                                                  \n

                                                                                  where \n \n \n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n \n \n {\\displaystyle \\operatorname {Cov} (X,Y)}\n \n  is the covariance.\n

                                                                                  \n

                                                                                  Linear combinations

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  In general, for the sum of \n \n \n \n N\n \n \n {\\displaystyle N}\n \n  random variables \n \n \n \n {\n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n }\n \n \n {\\displaystyle \\{X_{1},\\dots ,X_{N}\\}}\n \n , the variance becomes:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n \n \u2211\n \n i\n \u2260\n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n ,\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i,j=1}^{N}\\operatorname {Cov} (X_{i},X_{j})=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i})+\\sum _{i\\neq j}\\operatorname {Cov} (X_{i},X_{j}),}\n \n 
                                                                                  \n

                                                                                  see also general Bienaym\u00e9's identity.\n

                                                                                  These results lead to the variance of a linear combination as:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n \n X\n \n i\n \n \n \n )\n \n \n \n \n =\n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n \n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n \n \u2211\n \n i\n \u2260\n j\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n \n \n \n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n <\n j\n \u2264\n N\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} \\left(\\sum _{i=1}^{N}a_{i}X_{i}\\right)&=\\sum _{i,j=1}^{N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+\\sum _{i\\not =j}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})\\\\&=\\sum _{i=1}^{N}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i<j\\leq N}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j}).\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  If the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{N}}\n \n  are such that\n

                                                                                  \n
                                                                                  \n \n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n =\n 0\n \n ,\n \n \u2200\n \n (\n i\n \u2260\n j\n )\n ,\n \n \n {\\displaystyle \\operatorname {Cov} (X_{i},X_{j})=0\\ ,\\ \\forall \\ (i\\neq j),}\n \n 
                                                                                  \n

                                                                                  then they are said to be uncorrelated. It follows immediately from the expression given earlier that if the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n N\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{N}}\n \n  are uncorrelated, then the variance of their sum is equal to the sum of their variances, or, expressed symbolically:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\sum _{i=1}^{N}\\operatorname {Var} (X_{i}).}\n \n 
                                                                                  \n

                                                                                  Since independent random variables are always uncorrelated (see Covariance \u00a7 Uncorrelatedness and independence), the equation above holds in particular when the random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n n\n \n \n \n \n {\\displaystyle X_{1},\\dots ,X_{n}}\n \n  are independent. Thus, independence is sufficient but not necessary for the variance of the sum to equal the sum of the variances.\n

                                                                                  \n

                                                                                  Matrix notation for the variance of a linear combination

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Define \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  as a column vector of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  random variables \n \n \n \n \n X\n \n 1\n \n \n ,\n \u2026\n ,\n \n X\n \n n\n \n \n \n \n {\\displaystyle X_{1},\\ldots ,X_{n}}\n \n , and \n \n \n \n c\n \n \n {\\displaystyle c}\n \n  as a column vector of \n \n \n \n n\n \n \n {\\displaystyle n}\n \n  scalars \n \n \n \n \n c\n \n 1\n \n \n ,\n \u2026\n ,\n \n c\n \n n\n \n \n \n \n {\\displaystyle c_{1},\\ldots ,c_{n}}\n \n . Therefore, \n \n \n \n \n c\n \n \n T\n \n \n \n X\n \n \n {\\displaystyle c^{\\mathsf {T}}X}\n \n  is a linear combination of these random variables, where \n \n \n \n \n c\n \n \n T\n \n \n \n \n \n {\\displaystyle c^{\\mathsf {T}}}\n \n  denotes the transpose of \n \n \n \n c\n \n \n {\\displaystyle c}\n \n . Also let \n \n \n \n \u03a3\n \n \n {\\displaystyle \\Sigma }\n \n  be the covariance matrix of \n \n \n \n X\n \n \n {\\displaystyle X}\n \n . The variance of \n \n \n \n \n c\n \n \n T\n \n \n \n X\n \n \n {\\displaystyle c^{\\mathsf {T}}X}\n \n  is then given by:[4]\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n c\n \n \n T\n \n \n \n X\n \n )\n \n =\n \n c\n \n \n T\n \n \n \n \u03a3\n c\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(c^{\\mathsf {T}}X\\right)=c^{\\mathsf {T}}\\Sigma c.}\n \n 
                                                                                  \n

                                                                                  This implies that the variance of the mean can be written as (with a column vector of ones)\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \n x\n \u00af\n \n \n \n )\n \n =\n Var\n \u2061\n \n (\n \n \n \n 1\n n\n \n \n \n 1\n \u2032\n \n X\n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n 1\n \u2032\n \n \u03a3\n 1.\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\bar {x}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}1'X\\right)={\\frac {1}{n^{2}}}1'\\Sigma 1.}\n \n 
                                                                                  \n

                                                                                  Sum of variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Sum of uncorrelated variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n\n

                                                                                  One reason for the use of the variance in preference to other measures of dispersion is that the variance of the sum (or the difference) of uncorrelated random variables is the sum of their variances:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} (X_{i}).}\n \n 
                                                                                  \n

                                                                                  This statement is called the Bienaym\u00e9 formula[5] and was discovered in 1853.[6][7] It is often made with the stronger condition that the variables are independent, but being uncorrelated suffices. So if all the variables have the same variance \u03c32, then, since division by n is a linear transformation, this formula immediately implies that the variance of their mean is\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n Var\n \u2061\n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n \n (\n \n X\n \n i\n \n \n )\n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n n\n \n \u03c3\n \n 2\n \n \n =\n \n \n \n \u03c3\n \n 2\n \n \n n\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)=\\operatorname {Var} \\left({\\frac {1}{n}}\\sum _{i=1}^{n}X_{i}\\right)={\\frac {1}{n^{2}}}\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)={\\frac {1}{n^{2}}}n\\sigma ^{2}={\\frac {\\sigma ^{2}}{n}}.}\n \n 
                                                                                  \n

                                                                                  That is, the variance of the mean decreases when n increases. This formula for the variance of the mean is used in the definition of the standard error of the sample mean, which is used in the central limit theorem.\n

                                                                                  To prove the initial statement, it suffices to show that\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n =\n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (X+Y)=\\operatorname {Var} (X)+\\operatorname {Var} (Y).}\n \n 
                                                                                  \n

                                                                                  The general result then follows by induction. Starting with the definition,\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n (\n X\n +\n Y\n \n )\n \n 2\n \n \n \n ]\n \n \u2212\n (\n E\n \u2061\n [\n X\n +\n Y\n ]\n \n )\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n +\n 2\n X\n Y\n +\n \n Y\n \n 2\n \n \n \n ]\n \n \u2212\n (\n E\n \u2061\n [\n X\n ]\n +\n E\n \u2061\n [\n Y\n ]\n \n )\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[(X+Y)^{2}\\right]-(\\operatorname {E} [X+Y])^{2}\\\\[5pt]&=\\operatorname {E} \\left[X^{2}+2XY+Y^{2}\\right]-(\\operatorname {E} [X]+\\operatorname {E} [Y])^{2}.\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Using the linearity of the expectation operator and the assumption of independence (or uncorrelatedness) of X and Y, this further simplifies as follows:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n +\n Y\n )\n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n +\n 2\n E\n \u2061\n [\n X\n Y\n ]\n +\n E\n \u2061\n \n [\n \n Y\n \n 2\n \n \n ]\n \n \u2212\n \n (\n \n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n +\n 2\n E\n \u2061\n [\n X\n ]\n E\n \u2061\n [\n Y\n ]\n +\n E\n \u2061\n [\n Y\n \n ]\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n E\n \u2061\n \n [\n \n X\n \n 2\n \n \n ]\n \n +\n E\n \u2061\n \n [\n \n Y\n \n 2\n \n \n ]\n \n \u2212\n E\n \u2061\n [\n X\n \n ]\n \n 2\n \n \n \u2212\n E\n \u2061\n [\n Y\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n =\n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n Y\n )\n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (X+Y)&=\\operatorname {E} \\left[X^{2}\\right]+2\\operatorname {E} [XY]+\\operatorname {E} \\left[Y^{2}\\right]-\\left(\\operatorname {E} [X]^{2}+2\\operatorname {E} [X]\\operatorname {E} [Y]+\\operatorname {E} [Y]^{2}\\right)\\\\[5pt]&=\\operatorname {E} \\left[X^{2}\\right]+\\operatorname {E} \\left[Y^{2}\\right]-\\operatorname {E} [X]^{2}-\\operatorname {E} [Y]^{2}\\\\[5pt]&=\\operatorname {Var} (X)+\\operatorname {Var} (Y).\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Sum of correlated variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n
                                                                                  Sum of correlated variables with fixed sample size
                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n

                                                                                  In general, the variance of the sum of n variables is the sum of their covariances:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n Var\n \u2061\n \n (\n \n X\n \n i\n \n \n )\n \n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n <\n j\n \u2264\n n\n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n \n )\n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)=\\sum _{i=1}^{n}\\sum _{j=1}^{n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right)=\\sum _{i=1}^{n}\\operatorname {Var} \\left(X_{i}\\right)+2\\sum _{1\\leq i<j\\leq n}\\operatorname {Cov} \\left(X_{i},X_{j}\\right).}\n \n 
                                                                                  \n

                                                                                  (Note: The second equality comes from the fact that Cov(Xi,Xi) = Var(Xi).)\n

                                                                                  Here, \n \n \n \n Cov\n \u2061\n (\n \u22c5\n ,\n \u22c5\n )\n \n \n {\\displaystyle \\operatorname {Cov} (\\cdot ,\\cdot )}\n \n  is the covariance, which is zero for independent random variables (if it exists). The formula states that the variance of a sum is equal to the sum of all elements in the covariance matrix of the components. The next expression states equivalently that the variance of the sum is the sum of the diagonal of covariance matrix plus two times the sum of its upper triangular elements (or its lower triangular elements); this emphasizes that the covariance matrix is symmetric. This formula is used in the theory of Cronbach's alpha in classical test theory.\n

                                                                                  So, if the variables have equal variance \u03c32 and the average correlation of distinct variables is \u03c1, then the variance of their mean is\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \n \n \n \u03c3\n \n 2\n \n \n n\n \n \n +\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \u03c1\n \n \u03c3\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {\\sigma ^{2}}{n}}+{\\frac {n-1}{n}}\\rho \\sigma ^{2}.}\n \n 
                                                                                  \n

                                                                                  This implies that the variance of the mean increases with the average of the correlations. In other words, additional correlated observations are not as effective as additional independent observations at reducing the uncertainty of the mean. Moreover, if the variables have unit variance, for example if they are standardized, then this simplifies to\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \n \n 1\n n\n \n \n +\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \u03c1\n .\n \n \n {\\displaystyle \\operatorname {Var} \\left({\\overline {X}}\\right)={\\frac {1}{n}}+{\\frac {n-1}{n}}\\rho .}\n \n 
                                                                                  \n

                                                                                  This formula is used in the Spearman\u2013Brown prediction formula of classical test theory. This converges to \u03c1 if n goes to infinity, provided that the average correlation remains constant or converges too. So for the variance of the mean of standardized variables with equal correlations or converging average correlation we have\n

                                                                                  \n
                                                                                  \n \n \n \n \n lim\n \n n\n \u2192\n \u221e\n \n \n Var\n \u2061\n \n (\n \n \n X\n \u00af\n \n \n )\n \n =\n \u03c1\n .\n \n \n {\\displaystyle \\lim _{n\\to \\infty }\\operatorname {Var} \\left({\\overline {X}}\\right)=\\rho .}\n \n 
                                                                                  \n

                                                                                  Therefore, the variance of the mean of a large number of standardized variables is approximately equal to their average correlation. This makes clear that the sample mean of correlated variables does not generally converge to the population mean, even though the law of large numbers states that the sample mean will converge for independent variables.\n

                                                                                  \n
                                                                                  Sum of uncorrelated variables with random sample size
                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  There are cases when a sample is taken without knowing, in advance, how many observations will be acceptable according to some criterion. In such cases, the sample size N is a random variable whose variation adds to the variation of X, such that,\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n E\n \u2061\n \n [\n N\n ]\n \n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n N\n )\n (\n E\n \u2061\n \n [\n X\n ]\n \n \n )\n \n 2\n \n \n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{N}X_{i}\\right)=\\operatorname {E} \\left[N\\right]\\operatorname {Var} (X)+\\operatorname {Var} (N)(\\operatorname {E} \\left[X\\right])^{2}}\n \n [8]
                                                                                  \n

                                                                                  which follows from the law of total variance.\n

                                                                                  If N has a Poisson distribution, then \n \n \n \n E\n \u2061\n [\n N\n ]\n =\n Var\n \u2061\n (\n N\n )\n \n \n {\\displaystyle \\operatorname {E} [N]=\\operatorname {Var} (N)}\n \n  with estimator n = N. So, the estimator of \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n X\n \n i\n \n \n \n )\n \n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i=1}^{n}X_{i}\\right)}\n \n  becomes \n \n \n \n n\n \n \n \n S\n \n x\n \n \n \n \n 2\n \n \n +\n n\n \n \n \n \n X\n \u00af\n \n \n \n \n 2\n \n \n \n \n {\\displaystyle n{S_{x}}^{2}+n{\\bar {X}}^{2}}\n \n , giving \n \n \n \n SE\n \u2061\n (\n \n \n \n X\n \u00af\n \n \n \n )\n =\n \n \n \n \n \n \n \n S\n \n x\n \n \n \n \n 2\n \n \n +\n \n \n \n \n X\n \u00af\n \n \n \n \n 2\n \n \n \n n\n \n \n \n \n \n {\\displaystyle \\operatorname {SE} ({\\bar {X}})={\\sqrt {\\frac {{S_{x}}^{2}+{\\bar {X}}^{2}}{n}}}}\n \n \n(see standard error of the sample mean).\n

                                                                                  \n

                                                                                  Weighted sum of variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n
                                                                                  Not to be confused with Weighted variance.
                                                                                  \n

                                                                                  The scaling property and the Bienaym\u00e9 formula, along with the property of the covariance Cov(aX, bY) = ab Cov(X, Y) jointly imply that\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n a\n X\n \u00b1\n b\n Y\n )\n =\n \n a\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n \n b\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n \u00b1\n 2\n a\n b\n \n Cov\n \u2061\n (\n X\n ,\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (aX\\pm bY)=a^{2}\\operatorname {Var} (X)+b^{2}\\operatorname {Var} (Y)\\pm 2ab\\,\\operatorname {Cov} (X,Y).}\n \n 
                                                                                  \n

                                                                                  This implies that in a weighted sum of variables, the variable with the largest weight will have a disproportionally large weight in the variance of the total. For example, if X and Y are uncorrelated and the weight of X is two times the weight of Y, then the weight of the variance of X will be four times the weight of the variance of Y.\n

                                                                                  The expression above can be extended to a weighted sum of multiple variables:\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n (\n \n \n \u2211\n \n i\n \n \n n\n \n \n \n a\n \n i\n \n \n \n X\n \n i\n \n \n \n )\n \n =\n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n a\n \n i\n \n \n 2\n \n \n Var\n \u2061\n (\n \n X\n \n i\n \n \n )\n +\n 2\n \n \u2211\n \n 1\n \u2264\n i\n \n \n \n \u2211\n \n <\n j\n \u2264\n n\n \n \n \n a\n \n i\n \n \n \n a\n \n j\n \n \n Cov\n \u2061\n (\n \n X\n \n i\n \n \n ,\n \n X\n \n j\n \n \n )\n \n \n {\\displaystyle \\operatorname {Var} \\left(\\sum _{i}^{n}a_{i}X_{i}\\right)=\\sum _{i=1}^{n}a_{i}^{2}\\operatorname {Var} (X_{i})+2\\sum _{1\\leq i}\\sum _{<j\\leq n}a_{i}a_{j}\\operatorname {Cov} (X_{i},X_{j})}\n \n 
                                                                                  \n

                                                                                  Product of variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Product of independent variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If two variables X and Y are independent, the variance of their product is given by[9]\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n Var\n \u2061\n (\n Y\n )\n +\n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n Var\n \u2061\n (\n X\n )\n +\n Var\n \u2061\n (\n X\n )\n Var\n \u2061\n (\n Y\n )\n .\n \n \n {\\displaystyle \\operatorname {Var} (XY)=[\\operatorname {E} (X)]^{2}\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\operatorname {Var} (X)+\\operatorname {Var} (X)\\operatorname {Var} (Y).}\n \n 
                                                                                  \n

                                                                                  Equivalently, using the basic properties of expectation, it is given by\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n E\n \u2061\n \n (\n \n X\n \n 2\n \n \n )\n \n E\n \u2061\n \n (\n \n Y\n \n 2\n \n \n )\n \n \u2212\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} (XY)=\\operatorname {E} \\left(X^{2}\\right)\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (X)]^{2}[\\operatorname {E} (Y)]^{2}.}\n \n 
                                                                                  \n

                                                                                  Product of statistically dependent variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  In general, if two variables are statistically dependent, then the variance of their product is given by:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n Var\n \u2061\n (\n X\n Y\n )\n =\n \n\n \n \n \n E\n \u2061\n \n [\n \n \n X\n \n 2\n \n \n \n Y\n \n 2\n \n \n \n ]\n \n \u2212\n [\n E\n \u2061\n (\n X\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n 2\n \n \n ,\n \n Y\n \n 2\n \n \n \n )\n \n +\n E\n \u2061\n (\n \n X\n \n 2\n \n \n )\n E\n \u2061\n \n (\n \n Y\n \n 2\n \n \n )\n \n \u2212\n [\n E\n \u2061\n (\n X\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n Cov\n \u2061\n \n (\n \n \n X\n \n 2\n \n \n ,\n \n Y\n \n 2\n \n \n \n )\n \n +\n \n (\n \n Var\n \u2061\n (\n X\n )\n +\n [\n E\n \u2061\n (\n X\n )\n \n ]\n \n 2\n \n \n \n )\n \n \n (\n \n Var\n \u2061\n (\n Y\n )\n +\n [\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n \u2212\n [\n Cov\n \u2061\n (\n X\n ,\n Y\n )\n +\n E\n \u2061\n (\n X\n )\n E\n \u2061\n (\n Y\n )\n \n ]\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {Var} (XY)={}&\\operatorname {E} \\left[X^{2}Y^{2}\\right]-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\operatorname {E} (X^{2})\\operatorname {E} \\left(Y^{2}\\right)-[\\operatorname {E} (XY)]^{2}\\\\[5pt]={}&\\operatorname {Cov} \\left(X^{2},Y^{2}\\right)+\\left(\\operatorname {Var} (X)+[\\operatorname {E} (X)]^{2}\\right)\\left(\\operatorname {Var} (Y)+[\\operatorname {E} (Y)]^{2}\\right)\\\\[5pt]&-[\\operatorname {Cov} (X,Y)+\\operatorname {E} (X)\\operatorname {E} (Y)]^{2}\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Arbitrary functions

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n

                                                                                  The delta method uses second-order Taylor expansions to approximate the variance of a function of one or more random variables: see Taylor expansions for the moments of functions of random variables. For example, the approximate variance of a function of one variable is given by\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n [\n \n f\n (\n X\n )\n \n ]\n \n \u2248\n \n \n (\n \n \n f\n \u2032\n \n (\n E\n \u2061\n \n [\n X\n ]\n \n )\n \n )\n \n \n 2\n \n \n Var\n \u2061\n \n [\n X\n ]\n \n \n \n {\\displaystyle \\operatorname {Var} \\left[f(X)\\right]\\approx \\left(f'(\\operatorname {E} \\left[X\\right])\\right)^{2}\\operatorname {Var} \\left[X\\right]}\n \n 
                                                                                  \n

                                                                                  provided that f is twice differentiable and that the mean and variance of X are finite.\n

                                                                                  \n

                                                                                  Population variance and sample variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  \n

                                                                                  \n\n

                                                                                  Real-world observations such as the measurements of yesterday's rain throughout the day typically cannot be complete sets of all possible observations that could be made. As such, the variance calculated from the finite set will in general not match the variance that would have been calculated from the full population of possible observations. This means that one estimates the mean and variance from a limited set of observations by using an estimator equation. The estimator is a function of the sample of n observations drawn without observational bias from the whole population of potential observations. In this example, the sample would be the set of actual measurements of yesterday's rainfall from available rain gauges within the geography of interest.\n

                                                                                  The simplest estimators for population mean and population variance are simply the mean and variance of the sample, the sample mean and (uncorrected) sample variance \u2013 these are consistent estimators (they converge to the value of the whole population as the number of samples increases) but can be improved. Most simply, the sample variance is computed as the sum of squared deviations about the (sample) mean, divided by n as the number of samples. However, using values other than n improves the estimator in various ways. Four common values for the denominator are n, n \u2212 1, n + 1, and n \u2212 1.5: n is the simplest (the variance of the sample), n \u2212 1 eliminates bias,[10] n + 1 minimizes mean squared error for the normal distribution,[11] and n \u2212 1.5 mostly eliminates bias in unbiased estimation of standard deviation for the normal distribution.[12]\n

                                                                                  Firstly, if the true population mean is unknown, then the sample variance (which uses the sample mean in place of the true mean) is a biased estimator: it underestimates the variance by a factor of (n \u2212 1) / n; correcting this factor, resulting in the sum of squared deviations about the sample mean divided by n -1 instead of n, is called Bessel's correction.[10] The resulting estimator is unbiased and is called the (corrected) sample variance or unbiased sample variance. If the mean is determined in some other way than from the same samples used to estimate the variance, then this bias does not arise, and the variance can safely be estimated as that of the samples about the (independently known) mean.\n

                                                                                  Secondly, the sample variance does not generally minimize mean squared error between sample variance and population variance. Correcting for bias often makes this worse: one can always choose a scale factor that performs better than the corrected sample variance, though the optimal scale factor depends on the excess kurtosis of the population (see mean squared error: variance) and introduces bias. This always consists of scaling down the unbiased estimator (dividing by a number larger than n \u2212 1) and is a simple example of a shrinkage estimator: one \"shrinks\" the unbiased estimator towards zero. For the normal distribution, dividing by n + 1 (instead of n \u2212 1 or n) minimizes mean squared error.[11] The resulting estimator is biased, however, and is known as the biased sample variation.\n

                                                                                  \n

                                                                                  Population variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  In general, the population variance of a finite population of size N with values xi is given by\n \n \n \n \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n \n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n \n 2\n \n \n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n (\n \n \n x\n \n i\n \n \n 2\n \n \n \u2212\n 2\n \u03bc\n \n x\n \n i\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n \n \n \n \n \n =\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n 2\n \u03bc\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n )\n \n +\n \n \u03bc\n \n 2\n \n \n \n \n \n \n \n \n =\n E\n \u2061\n [\n \n x\n \n i\n \n \n 2\n \n \n ]\n \u2212\n \n \u03bc\n \n 2\n \n \n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\sigma ^{2}&={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}-\\mu \\right)^{2}={\\frac {1}{N}}\\sum _{i=1}^{N}\\left(x_{i}^{2}-2\\mu x_{i}+\\mu ^{2}\\right)\\\\[5pt]&=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-2\\mu \\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)+\\mu ^{2}\\\\[5pt]&=\\operatorname {E} [x_{i}^{2}]-\\mu ^{2}\\end{aligned}}}\n \n where the population mean is \n \n \n \n \u03bc\n =\n E\n \u2061\n [\n \n x\n \n i\n \n \n ]\n =\n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n \n {\\textstyle \\mu =\\operatorname {E} [x_{i}]={\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}}\n \n  and \n \n \n \n E\n \u2061\n [\n \n x\n \n i\n \n \n 2\n \n \n ]\n =\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \n \n {\\textstyle \\operatorname {E} [x_{i}^{2}]=\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)}\n \n , where \n \n \n \n E\n \n \n {\\textstyle \\operatorname {E} }\n \n  is the expectation value operator.\n

                                                                                  The population variance can also be computed using[13]\n

                                                                                  \n
                                                                                  \n \n \n \n \n \u03c3\n \n 2\n \n \n =\n \n \n 1\n \n N\n \n 2\n \n \n \n \n \n \u2211\n \n i\n <\n j\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n =\n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle \\sigma ^{2}={\\frac {1}{N^{2}}}\\sum _{i<j}\\left(x_{i}-x_{j}\\right)^{2}={\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}.}\n \n 
                                                                                  \n

                                                                                  (The right side has duplicate terms in the sum while the middle side has only unique terms to sum.) This is true because\n \n \n \n \n \n \n \n \n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n \n (\n \n \n x\n \n i\n \n \n \u2212\n \n x\n \n j\n \n \n \n )\n \n \n 2\n \n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n \n 2\n \n N\n \n 2\n \n \n \n \n \n \n \u2211\n \n i\n ,\n j\n =\n 1\n \n \n N\n \n \n \n (\n \n \n x\n \n i\n \n \n 2\n \n \n \u2212\n 2\n \n x\n \n i\n \n \n \n x\n \n j\n \n \n +\n \n x\n \n j\n \n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n \n 2\n N\n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n x\n \n i\n \n \n \n )\n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n x\n \n j\n \n \n \n )\n \n +\n \n \n 1\n \n 2\n N\n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n N\n \n \n \n (\n \n \n \n 1\n N\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n N\n \n \n \n x\n \n j\n \n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \n 1\n 2\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \u2212\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n 2\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n \n \n \n =\n \n\n \n \n \n \n \u03c3\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}-x_{j}\\right)^{2}\\\\[5pt]={}&{\\frac {1}{2N^{2}}}\\sum _{i,j=1}^{N}\\left(x_{i}^{2}-2x_{i}x_{j}+x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2N}}\\sum _{j=1}^{N}\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}^{2}\\right)-\\left({\\frac {1}{N}}\\sum _{i=1}^{N}x_{i}\\right)\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}\\right)+{\\frac {1}{2N}}\\sum _{i=1}^{N}\\left({\\frac {1}{N}}\\sum _{j=1}^{N}x_{j}^{2}\\right)\\\\[5pt]={}&{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-\\mu ^{2}+{\\frac {1}{2}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\\\[5pt]={}&\\sigma ^{2}.\\end{aligned}}}\n \n The population variance matches the variance of the generating probability distribution. In this sense, the concept of population can be extended to continuous random variables with infinite populations.\n

                                                                                  \n

                                                                                  Sample variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n

                                                                                  Biased sample variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  In many practical situations, the true variance of a population is not known a priori and must be computed somehow. When dealing with extremely large populations, it is not possible to count every object in the population, so the computation must be performed on a sample of the population.[14] This is generally referred to as sample variance or empirical variance. Sample variance can also be applied to the estimation of the variance of a continuous distribution from a sample of that distribution.\n

                                                                                  We take a sample with replacement of n values Y1, ..., Yn from the population of size \n \n \n \n N\n \n \n {\\textstyle N}\n \n , where n < N, and estimate the variance on the basis of this sample.[15] Directly taking the variance of the sample data gives the average of the squared deviations:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n =\n \n (\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n Y\n \n i\n \n \n 2\n \n \n \n )\n \n \u2212\n \n \n \n Y\n \u00af\n \n \n \n 2\n \n \n =\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n i\n ,\n j\n \n :\n \n i\n <\n j\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n Y\n \n j\n \n \n \n )\n \n \n 2\n \n \n .\n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}=\\left({\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}^{2}\\right)-{\\overline {Y}}^{2}={\\frac {1}{n^{2}}}\\sum _{i,j\\,:\\,i<j}\\left(Y_{i}-Y_{j}\\right)^{2}.}\n \n [16]
                                                                                  \n

                                                                                  (See the section Population variance for the derivation of this formula.) Here, \n \n \n \n \n \n Y\n \u00af\n \n \n \n \n {\\displaystyle {\\overline {Y}}}\n \n  denotes the sample mean:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n Y\n \u00af\n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n Y\n \n i\n \n \n .\n \n \n {\\displaystyle {\\overline {Y}}={\\frac {1}{n}}\\sum _{i=1}^{n}Y_{i}.}\n \n 
                                                                                  \n

                                                                                  Since the Yi are selected randomly, both \n \n \n \n \n \n Y\n \u00af\n \n \n \n \n {\\displaystyle {\\overline {Y}}}\n \n  and \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}}\n \n  are random variables. Their expected values can be evaluated by averaging over the ensemble of all possible samples {Yi} of size n from the population. For \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\displaystyle {\\tilde {S}}_{Y}^{2}}\n \n  this gives:\n

                                                                                  \n
                                                                                  \n \n \n \n \n \n \n \n E\n \u2061\n [\n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n ]\n \n \n \n =\n E\n \u2061\n \n [\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n 1\n n\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n \n )\n \n \n 2\n \n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n 2\n \n \n \u2212\n \n \n 2\n n\n \n \n \n Y\n \n i\n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n Y\n \n j\n \n \n \n \u2211\n \n k\n =\n 1\n \n \n n\n \n \n \n Y\n \n k\n \n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n (\n \n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \u2212\n \n \n 2\n n\n \n \n \n (\n \n \n \u2211\n \n j\n \u2260\n i\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n \n ]\n \n +\n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \n )\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n k\n \u2260\n j\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n j\n \n \n \n Y\n \n k\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n j\n \n \n 2\n \n \n ]\n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n (\n \n \n \n \n n\n \u2212\n 2\n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \n \u2212\n \n \n 2\n n\n \n \n \n \u2211\n \n j\n \u2260\n i\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n \n \u2211\n \n k\n \u2260\n j\n \n \n n\n \n \n E\n \u2061\n \n [\n \n \n Y\n \n j\n \n \n \n Y\n \n k\n \n \n \n ]\n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n \n \u2211\n \n j\n =\n 1\n \n \n n\n \n \n E\n \u2061\n \n [\n \n Y\n \n j\n \n \n 2\n \n \n ]\n \n \n )\n \n \n \n \n \n \n \n =\n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n [\n \n \n \n \n n\n \u2212\n 2\n \n n\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \u2212\n \n \n 2\n n\n \n \n (\n n\n \u2212\n 1\n )\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n \n n\n \n 2\n \n \n \n \n n\n (\n n\n \u2212\n 1\n )\n \n \u03bc\n \n 2\n \n \n +\n \n \n 1\n n\n \n \n \n (\n \n \n \u03c3\n \n 2\n \n \n +\n \n \u03bc\n \n 2\n \n \n \n )\n \n \n ]\n \n \n \n \n \n \n \n =\n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \n \u03c3\n \n 2\n \n \n .\n \n \n \n \n \n \n {\\displaystyle {\\begin{aligned}\\operatorname {E} [{\\tilde {S}}_{Y}^{2}]&=\\operatorname {E} \\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\frac {1}{n}}\\sum _{j=1}^{n}Y_{j}\\right)^{2}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\operatorname {E} \\left[Y_{i}^{2}-{\\frac {2}{n}}Y_{i}\\sum _{j=1}^{n}Y_{j}+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}Y_{j}\\sum _{k=1}^{n}Y_{k}\\right]\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left(\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\left(\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+\\operatorname {E} \\left[Y_{i}^{2}\\right]\\right)+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left({\\frac {n-2}{n}}\\operatorname {E} \\left[Y_{i}^{2}\\right]-{\\frac {2}{n}}\\sum _{j\\neq i}\\operatorname {E} \\left[Y_{i}Y_{j}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\sum _{k\\neq j}^{n}\\operatorname {E} \\left[Y_{j}Y_{k}\\right]+{\\frac {1}{n^{2}}}\\sum _{j=1}^{n}\\operatorname {E} \\left[Y_{j}^{2}\\right]\\right)\\\\[5pt]&={\\frac {1}{n}}\\sum _{i=1}^{n}\\left[{\\frac {n-2}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)-{\\frac {2}{n}}(n-1)\\mu ^{2}+{\\frac {1}{n^{2}}}n(n-1)\\mu ^{2}+{\\frac {1}{n}}\\left(\\sigma ^{2}+\\mu ^{2}\\right)\\right]\\\\[5pt]&={\\frac {n-1}{n}}\\sigma ^{2}.\\end{aligned}}}\n \n 
                                                                                  \n

                                                                                  Here \n \n \n \n \n \u03c3\n \n 2\n \n \n =\n E\n \u2061\n [\n \n Y\n \n i\n \n \n 2\n \n \n ]\n \u2212\n \n \u03bc\n \n 2\n \n \n \n \n {\\textstyle \\sigma ^{2}=\\operatorname {E} [Y_{i}^{2}]-\\mu ^{2}}\n \n  derived in the section Population variance and \n \n \n \n E\n \u2061\n [\n \n Y\n \n i\n \n \n \n Y\n \n j\n \n \n ]\n =\n E\n \u2061\n [\n \n Y\n \n i\n \n \n ]\n E\n \u2061\n [\n \n Y\n \n j\n \n \n ]\n =\n \n \u03bc\n \n 2\n \n \n \n \n {\\textstyle \\operatorname {E} [Y_{i}Y_{j}]=\\operatorname {E} [Y_{i}]\\operatorname {E} [Y_{j}]=\\mu ^{2}}\n \n  due to independency of \n \n \n \n \n Y\n \n i\n \n \n \n \n {\\textstyle Y_{i}}\n \n  and \n \n \n \n \n Y\n \n j\n \n \n \n \n {\\textstyle Y_{j}}\n \n  are used.\n

                                                                                  Hence \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  gives an estimate of the population variance that is biased by a factor of \n \n \n \n \n \n \n n\n \u2212\n 1\n \n n\n \n \n \n \n {\\textstyle {\\frac {n-1}{n}}}\n \n  as the expectation value of \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  is smaller than the population variance (true variance) by that factor. For this reason, \n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n \n \n {\\textstyle {\\tilde {S}}_{Y}^{2}}\n \n  is referred to as the biased sample variance.\n

                                                                                  \n

                                                                                  Unbiased sample variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Correcting for this bias yields the unbiased sample variance, denoted \n \n \n \n \n S\n \n 2\n \n \n \n \n {\\displaystyle S^{2}}\n \n :\n

                                                                                  \n
                                                                                  \n \n \n \n \n S\n \n 2\n \n \n =\n \n \n n\n \n n\n \u2212\n 1\n \n \n \n \n \n \n \n S\n ~\n \n \n \n \n Y\n \n \n 2\n \n \n =\n \n \n n\n \n n\n \u2212\n 1\n \n \n \n \n [\n \n \n \n 1\n n\n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n \n ]\n \n =\n \n \n 1\n \n n\n \u2212\n 1\n \n \n \n \n \u2211\n \n i\n =\n 1\n \n \n n\n \n \n \n \n (\n \n \n Y\n \n i\n \n \n \u2212\n \n \n Y\n \u00af\n \n \n \n )\n \n \n 2\n \n \n \n \n {\\displaystyle S^{2}={\\frac {n}{n-1}}{\\tilde {S}}_{Y}^{2}={\\frac {n}{n-1}}\\left[{\\frac {1}{n}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}\\right]={\\frac {1}{n-1}}\\sum _{i=1}^{n}\\left(Y_{i}-{\\overline {Y}}\\right)^{2}}\n \n 
                                                                                  \n

                                                                                  Either estimator may be simply referred to as the sample variance when the version can be determined by context. The same proof is also applicable for samples taken from a continuous probability distribution.\n

                                                                                  The use of the term n \u2212 1 is called Bessel's correction, and it is also used in sample covariance and the sample standard deviation (the square root of variance). The square root is a concave function and thus introduces negative bias (by Jensen's inequality), which depends on the distribution, and thus the corrected sample standard deviation (using Bessel's correction) is biased. The unbiased estimation of standard deviation is a technically involved problem, though for the normal distribution using the term n \u2212 1.5 yields an almost unbiased estimator.\n

                                                                                  The unbiased sample variance is a U-statistic for the function \u0192(y1, y2) = (y1 \u2212 y2)2/2, meaning that it is obtained by averaging a 2-sample statistic over 2-element subsets of the population.\n

                                                                                  \n
                                                                                  Example
                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  For a set of numbers {10, 15, 30, 45, 57, 52 63, 72, 81, 93, 102, 105}, if this set is the whole data population for some measurement, then variance is the population variance 932.743 as the sum of the squared deviations about the mean of this set, divided by 12 as the number of the set members. If the set is a sample from the whole population, then the unbiased sample variance can be calculated as 1017.538 that is the sum of the squared deviations about the mean of the sample, divided by 11 instead of 12. A function VAR.S in Microsoft Excel gives the unbiased sample variance while VAR.P is for population variance.\n

                                                                                  \n

                                                                                  Distribution of the sample variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n
                                                                                  Distribution and cumulative distribution of S2/\u03c32, for various values of \u03bd = n \u2212 1, when the yi are independent normally distributed.
                                                                                  \n

                                                                                  Being a function of random variables, the sample variance is itself a random variable, and it is natural to study its distribution. In the case that Yi are independent observations from a normal distribution, Cochran's theorem shows that the unbiased sample variance S2 follows a scaled chi-squared distribution (see also: asymptotic properties and an elementary proof):[17]\n

                                                                                  \n
                                                                                  \n \n \n \n (\n n\n \u2212\n 1\n )\n \n \n \n S\n \n 2\n \n \n \n \u03c3\n \n 2\n \n \n \n \n \u223c\n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n \n {\\displaystyle (n-1){\\frac {S^{2}}{\\sigma ^{2}}}\\sim \\chi _{n-1}^{2}}\n \n 
                                                                                  \n

                                                                                  where \u03c32 is the population variance. As a direct consequence, it follows that\n

                                                                                  \n
                                                                                  \n \n \n \n E\n \u2061\n \n (\n \n S\n \n 2\n \n \n )\n \n =\n E\n \u2061\n \n (\n \n \n \n \n \u03c3\n \n 2\n \n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n )\n \n =\n \n \u03c3\n \n 2\n \n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left(S^{2}\\right)=\\operatorname {E} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)=\\sigma ^{2},}\n \n 
                                                                                  \n

                                                                                  and[18]\n

                                                                                  \n
                                                                                  \n \n \n \n Var\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n Var\n \u2061\n \n (\n \n \n \n \n \u03c3\n \n 2\n \n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n \n )\n \n =\n \n \n \n \u03c3\n \n 4\n \n \n \n (\n n\n \u2212\n 1\n \n )\n \n 2\n \n \n \n \n \n Var\n \u2061\n \n (\n \n \u03c7\n \n n\n \u2212\n 1\n \n \n 2\n \n \n )\n \n =\n \n \n \n 2\n \n \u03c3\n \n 4\n \n \n \n \n n\n \u2212\n 1\n \n \n \n .\n \n \n {\\displaystyle \\operatorname {Var} \\left[S^{2}\\right]=\\operatorname {Var} \\left({\\frac {\\sigma ^{2}}{n-1}}\\chi _{n-1}^{2}\\right)={\\frac {\\sigma ^{4}}{(n-1)^{2}}}\\operatorname {Var} \\left(\\chi _{n-1}^{2}\\right)={\\frac {2\\sigma ^{4}}{n-1}}.}\n \n 
                                                                                  \n

                                                                                  If Yi are independent and identically distributed, but not necessarily normally distributed, then[19]\n

                                                                                  \n
                                                                                  \n \n \n \n E\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n \n \u03c3\n \n 2\n \n \n ,\n \n Var\n \u2061\n \n [\n \n S\n \n 2\n \n \n ]\n \n =\n \n \n \n \u03c3\n \n 4\n \n \n n\n \n \n \n (\n \n \u03ba\n \u2212\n 1\n +\n \n \n 2\n \n n\n \u2212\n 1\n \n \n \n \n )\n \n =\n \n \n 1\n n\n \n \n \n (\n \n \n \u03bc\n \n 4\n \n \n \u2212\n \n \n \n n\n \u2212\n 3\n \n \n n\n \u2212\n 1\n \n \n \n \n \u03c3\n \n 4\n \n \n \n )\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[S^{2}\\right]=\\sigma ^{2},\\quad \\operatorname {Var} \\left[S^{2}\\right]={\\frac {\\sigma ^{4}}{n}}\\left(\\kappa -1+{\\frac {2}{n-1}}\\right)={\\frac {1}{n}}\\left(\\mu _{4}-{\\frac {n-3}{n-1}}\\sigma ^{4}\\right),}\n \n 
                                                                                  \n

                                                                                  where \u03ba is the kurtosis of the distribution and \u03bc4 is the fourth central moment.\n

                                                                                  If the conditions of the law of large numbers hold for the squared observations, S2 is a consistent estimator of \u03c32. One can see indeed that the variance of the estimator tends asymptotically to zero. An asymptotically equivalent formula was given in Kenney and Keeping (1951:164), Rose and Smith (2002:264), and Weisstein (n.d.).[20][21][22]\n

                                                                                  \n

                                                                                  Samuelson's inequality

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Samuelson's inequality is a result that states bounds on the values that individual observations in a sample can take, given that the sample mean and (biased) variance have been calculated.[23] Values must lie within the limits \n \n \n \n \n \n \n y\n \u00af\n \n \n \n \u00b1\n \n \u03c3\n \n Y\n \n \n (\n n\n \u2212\n 1\n \n )\n \n 1\n \n /\n \n 2\n \n \n .\n \n \n {\\displaystyle {\\bar {y}}\\pm \\sigma _{Y}(n-1)^{1/2}.}\n \n \n

                                                                                  \n

                                                                                  Relations with the harmonic and arithmetic means

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  It has been shown[24] that for a sample {yi} of positive real numbers,\n

                                                                                  \n
                                                                                  \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2264\n 2\n \n y\n \n max\n \n \n (\n A\n \u2212\n H\n )\n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\leq 2y_{\\max }(A-H),}\n \n 
                                                                                  \n

                                                                                  where ymax is the maximum of the sample, A is the arithmetic mean, H is the harmonic mean of the sample and \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{y}^{2}}\n \n  is the (biased) variance of the sample.\n

                                                                                  This bound has been improved, and it is known that variance is bounded by\n

                                                                                  \n
                                                                                  \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2264\n \n \n \n \n y\n \n max\n \n \n (\n A\n \u2212\n H\n )\n (\n \n y\n \n max\n \n \n \u2212\n A\n )\n \n \n \n y\n \n max\n \n \n \u2212\n H\n \n \n \n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\leq {\\frac {y_{\\max }(A-H)(y_{\\max }-A)}{y_{\\max }-H}},}\n \n 
                                                                                  \n
                                                                                  \n \n \n \n \n \u03c3\n \n y\n \n \n 2\n \n \n \u2265\n \n \n \n \n y\n \n min\n \n \n (\n A\n \u2212\n H\n )\n (\n A\n \u2212\n \n y\n \n min\n \n \n )\n \n \n H\n \u2212\n \n y\n \n min\n \n \n \n \n \n ,\n \n \n {\\displaystyle \\sigma _{y}^{2}\\geq {\\frac {y_{\\min }(A-H)(A-y_{\\min })}{H-y_{\\min }}},}\n \n 
                                                                                  \n

                                                                                  where ymin is the minimum of the sample.[25]\n

                                                                                  \n

                                                                                  Tests of equality of variances

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The F-test of equality of variances and the chi square tests are adequate when the sample is normally distributed. Non-normality makes testing for the equality of two or more variances more difficult.\n

                                                                                  Several non parametric tests have been proposed: these include the Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey test, the Capon test, Mood test, the Klotz test and the Sukhatme test. The Sukhatme test applies to two variances and requires that both medians be known and equal to zero. The Mood, Klotz, Capon and Barton\u2013David\u2013Ansari\u2013Freund\u2013Siegel\u2013Tukey tests also apply to two variances. They allow the median to be unknown but do require that the two medians are equal.\n

                                                                                  The Lehmann test is a parametric test of two variances. Of this test there are several variants known. Other tests of the equality of variances include the Box test, the Box\u2013Anderson test and the Moses test.\n

                                                                                  Resampling methods, which include the bootstrap and the jackknife, may be used to test the equality of variances.\n

                                                                                  \n

                                                                                  Moment of inertia

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n

                                                                                  The variance of a probability distribution is analogous to the moment of inertia in classical mechanics of a corresponding mass distribution along a line, with respect to rotation about its center of mass.[26] It is because of this analogy that such things as the variance are called moments of probability distributions.[26] The covariance matrix is related to the moment of inertia tensor for multivariate distributions. The moment of inertia of a cloud of n points with a covariance matrix of \n \n \n \n \u03a3\n \n \n {\\displaystyle \\Sigma }\n \n  is given by[citation needed]\n

                                                                                  \n
                                                                                  \n \n \n \n I\n =\n n\n \n (\n \n \n \n 1\n \n \n 3\n \u00d7\n 3\n \n \n tr\n \u2061\n (\n \u03a3\n )\n \u2212\n \u03a3\n \n )\n \n .\n \n \n {\\displaystyle I=n\\left(\\mathbf {1} _{3\\times 3}\\operatorname {tr} (\\Sigma )-\\Sigma \\right).}\n \n 
                                                                                  \n

                                                                                  This difference between moment of inertia in physics and in statistics is clear for points that are gathered along a line. Suppose many points are close to the x axis and distributed along it. The covariance matrix might look like\n

                                                                                  \n
                                                                                  \n \n \n \n \u03a3\n =\n \n \n [\n \n \n \n 10\n \n \n 0\n \n \n 0\n \n \n \n \n 0\n \n \n 0.1\n \n \n 0\n \n \n \n \n 0\n \n \n 0\n \n \n 0.1\n \n \n \n ]\n \n \n .\n \n \n {\\displaystyle \\Sigma ={\\begin{bmatrix}10&0&0\\\\0&0.1&0\\\\0&0&0.1\\end{bmatrix}}.}\n \n 
                                                                                  \n

                                                                                  That is, there is the most variance in the x direction. Physicists would consider this to have a low moment about the x axis so the moment-of-inertia tensor is\n

                                                                                  \n
                                                                                  \n \n \n \n I\n =\n n\n \n \n [\n \n \n \n 0.2\n \n \n 0\n \n \n 0\n \n \n \n \n 0\n \n \n 10.1\n \n \n 0\n \n \n \n \n 0\n \n \n 0\n \n \n 10.1\n \n \n \n ]\n \n \n .\n \n \n {\\displaystyle I=n{\\begin{bmatrix}0.2&0&0\\\\0&10.1&0\\\\0&0&10.1\\end{bmatrix}}.}\n \n 
                                                                                  \n

                                                                                  Semivariance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The semivariance is calculated in the same manner as the variance but only those observations that fall below the mean are included in the calculation:\n \n \n \n \n Semivariance\n \n =\n \n \n 1\n \n n\n \n \n \n \n \u2211\n \n i\n :\n \n x\n \n i\n \n \n <\n \u03bc\n \n \n (\n \n x\n \n i\n \n \n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle {\\text{Semivariance}}={1 \\over {n}}\\sum _{i:x_{i}<\\mu }(x_{i}-\\mu )^{2}}\n \n It is also described as a specific measure in different fields of application. For skewed distributions, the semivariance can provide additional information that a variance does not.[27]\n

                                                                                  For inequalities associated with the semivariance, see Chebyshev's inequality \u00a7 Semivariances.\n

                                                                                  \n

                                                                                  Etymology

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  The term variance was first introduced by Ronald Fisher in his 1918 paper The Correlation Between Relatives on the Supposition of Mendelian Inheritance:[28]\n

                                                                                  \n

                                                                                  The great body of available statistics show us that the deviations of a human measurement from its mean follow very closely the Normal Law of Errors, and, therefore, that the variability may be uniformly measured by the standard deviation corresponding to the square root of the mean square error. When there are two independent causes of variability capable of producing in an otherwise uniform population distributions with standard deviations \n \n \n \n \n \u03c3\n \n 1\n \n \n \n \n {\\displaystyle \\sigma _{1}}\n \n  and \n \n \n \n \n \u03c3\n \n 2\n \n \n \n \n {\\displaystyle \\sigma _{2}}\n \n , it is found that the distribution, when both causes act together, has a standard deviation \n \n \n \n \n \n \n \u03c3\n \n 1\n \n \n 2\n \n \n +\n \n \u03c3\n \n 2\n \n \n 2\n \n \n \n \n \n \n {\\displaystyle {\\sqrt {\\sigma _{1}^{2}+\\sigma _{2}^{2}}}}\n \n . It is therefore desirable in analysing the causes of variability to deal with the square of the standard deviation as the measure of variability. We shall term this quantity the Variance...

                                                                                  \n

                                                                                  Generalizations

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  For complex variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If \n \n \n \n x\n \n \n {\\displaystyle x}\n \n  is a scalar complex-valued random variable, with values in \n \n \n \n \n C\n \n ,\n \n \n {\\displaystyle \\mathbb {C} ,}\n \n  then its variance is \n \n \n \n E\n \u2061\n \n [\n \n (\n x\n \u2212\n \u03bc\n )\n (\n x\n \u2212\n \u03bc\n \n )\n \n \u2217\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(x-\\mu )(x-\\mu )^{*}\\right],}\n \n  where \n \n \n \n \n x\n \n \u2217\n \n \n \n \n {\\displaystyle x^{*}}\n \n  is the complex conjugate of \n \n \n \n x\n .\n \n \n {\\displaystyle x.}\n \n  This variance is a real scalar.\n

                                                                                  \n

                                                                                  For vector-valued random variables

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  As a matrix

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is a vector-valued random variable, with values in \n \n \n \n \n \n R\n \n \n n\n \n \n ,\n \n \n {\\displaystyle \\mathbb {R} ^{n},}\n \n  and thought of as a column vector, then a natural generalization of variance is \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n )\n (\n X\n \u2212\n \u03bc\n \n )\n \n T\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\operatorname {T} }\\right],}\n \n  where \n \n \n \n \u03bc\n =\n E\n \u2061\n (\n X\n )\n \n \n {\\displaystyle \\mu =\\operatorname {E} (X)}\n \n  and \n \n \n \n \n X\n \n T\n \n \n \n \n {\\displaystyle X^{\\operatorname {T} }}\n \n  is the transpose of \n \n \n \n X\n ,\n \n \n {\\displaystyle X,}\n \n  and so is a row vector. The result is a positive semi-definite square matrix, commonly referred to as the variance-covariance matrix (or simply as the covariance matrix).\n

                                                                                  If \n \n \n \n X\n \n \n {\\displaystyle X}\n \n  is a vector- and complex-valued random variable, with values in \n \n \n \n \n \n C\n \n \n n\n \n \n ,\n \n \n {\\displaystyle \\mathbb {C} ^{n},}\n \n  then the covariance matrix is \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n )\n (\n X\n \u2212\n \u03bc\n \n )\n \n \u2020\n \n \n \n ]\n \n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )(X-\\mu )^{\\dagger }\\right],}\n \n  where \n \n \n \n \n X\n \n \u2020\n \n \n \n \n {\\displaystyle X^{\\dagger }}\n \n  is the conjugate transpose of \n \n \n \n X\n .\n \n \n {\\displaystyle X.}\n \n [citation needed] This matrix is also positive semi-definite and square.\n

                                                                                  \n

                                                                                  As a scalar

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n

                                                                                  Another generalization of variance for vector-valued random variables \n \n \n \n X\n \n \n {\\displaystyle X}\n \n , which results in a scalar value rather than in a matrix, is the generalized variance \n \n \n \n det\n (\n C\n )\n \n \n {\\displaystyle \\det(C)}\n \n , the determinant of the covariance matrix. The generalized variance can be shown to be related to the multidimensional scatter of points around their mean.[29]\n

                                                                                  A different generalization is obtained by considering the equation for the scalar variance, \n \n \n \n Var\n \u2061\n (\n X\n )\n =\n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n ]\n \n \n \n {\\displaystyle \\operatorname {Var} (X)=\\operatorname {E} \\left[(X-\\mu )^{2}\\right]}\n \n , and reinterpreting \n \n \n \n (\n X\n \u2212\n \u03bc\n \n )\n \n 2\n \n \n \n \n {\\displaystyle (X-\\mu )^{2}}\n \n  as the squared Euclidean distance between the random variable and its mean, or, simply as the scalar product of the vector \n \n \n \n X\n \u2212\n \u03bc\n \n \n {\\displaystyle X-\\mu }\n \n  with itself. This results in \n \n \n \n E\n \u2061\n \n [\n \n (\n X\n \u2212\n \u03bc\n \n )\n \n T\n \n \n (\n X\n \u2212\n \u03bc\n )\n \n ]\n \n =\n tr\n \u2061\n (\n C\n )\n ,\n \n \n {\\displaystyle \\operatorname {E} \\left[(X-\\mu )^{\\operatorname {T} }(X-\\mu )\\right]=\\operatorname {tr} (C),}\n \n  which is the trace of the covariance matrix.\n

                                                                                  \n

                                                                                  See also

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n\n
                                                                                  Look up variance in Wiktionary, the free dictionary.
                                                                                  \n
                                                                                  \n\n

                                                                                  Types of variance

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n\n

                                                                                  References

                                                                                  \n\n \nedit\n\n\n\n\n
                                                                                  \n
                                                                                  \n
                                                                                    \n
                                                                                  1. ^ Wasserman, Larry (2005). All of Statistics: a concise course in statistical inference. Springer texts in statistics. p. 51. ISBN 978-1-4419-2322-6.\n
                                                                                  2. \n
                                                                                  3. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                                  4. \n
                                                                                  5. ^ Kagan, A.; Shepp, L. A. (1998). \"Why the variance?\". Statistics & Probability Letters. 38 (4): 329\u2013333. doi:10.1016/S0167-7152(98)00041-8.\n
                                                                                  6. \n
                                                                                  7. ^ Johnson, Richard; Wichern, Dean (2001). Applied Multivariate Statistical Analysis. Prentice Hall. p. 76. ISBN 0-13-187715-1.\n
                                                                                  8. \n
                                                                                  9. ^ Lo\u00e8ve, M. (1977) \"Probability Theory\", Graduate Texts in Mathematics, Volume 45, 4th edition, Springer-Verlag, p. 12.\n
                                                                                  10. \n
                                                                                  11. ^ Bienaym\u00e9, I.-J. (1853) \"Consid\u00e9rations \u00e0 l'appui de la d\u00e9couverte de Laplace sur la loi de probabilit\u00e9 dans la m\u00e9thode des moindres carr\u00e9s\", Comptes rendus de l'Acad\u00e9mie des sciences Paris, 37, p. 309\u2013317; digital copy available [1]\n
                                                                                  12. \n
                                                                                  13. ^ Bienaym\u00e9, I.-J. (1867) \"Consid\u00e9rations \u00e0 l'appui de la d\u00e9couverte de Laplace sur la loi de probabilit\u00e9 dans la m\u00e9thode des moindres carr\u00e9s\", Journal de Math\u00e9matiques Pures et Appliqu\u00e9es, S\u00e9rie 2, Tome 12, p. 158\u2013167; digital copy available [2][3]\n
                                                                                  14. \n
                                                                                  15. ^ Cornell, J R, and Benjamin, C A, Probability, Statistics, and Decisions for Civil Engineers, McGraw-Hill, NY, 1970, pp.178-9.\n
                                                                                  16. \n
                                                                                  17. ^ Goodman, Leo A. (December 1960). \"On the Exact Variance of Products\". Journal of the American Statistical Association. 55 (292): 708\u2013713. doi:10.2307/2281592. JSTOR 2281592.\n
                                                                                  18. \n
                                                                                  19. ^ a b Reichmann, W. J. (1961). \"Appendix 8\". Use and Abuse of Statistics (Reprinted 1964\u20131970 by Pelican ed.). London: Methuen.\n
                                                                                  20. \n
                                                                                  21. ^ a b Kourouklis, Stavros (2012). \"A New Estimator of the Variance Based on Minimizing Mean Squared Error\". The American Statistician. 66 (4): 234\u2013236. doi:10.1080/00031305.2012.735209. ISSN 0003-1305. JSTOR 23339501.\n
                                                                                  22. \n
                                                                                  23. ^ Brugger, R. M. (1969). \"A Note on Unbiased Estimation of the Standard Deviation\". The American Statistician. 23 (4): 32. doi:10.1080/00031305.1969.1048186 (inactive 16 December 2024).{{cite journal}}: CS1 maint: DOI inactive as of December 2024 (link)\n
                                                                                  24. \n
                                                                                  25. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                                  26. \n
                                                                                  27. ^ Navidi, William (2006) Statistics for Engineers and Scientists, McGraw-Hill, p. 14.\n
                                                                                  28. \n
                                                                                  29. ^ Montgomery, D. C. and Runger, G. C. (1994) Applied statistics and probability for engineers, page 201. John Wiley & Sons New York\n
                                                                                  30. \n
                                                                                  31. ^ Yuli Zhang; Huaiyu Wu; Lei Cheng (June 2012). Some new deformation formulas about variance and covariance. Proceedings of 4th International Conference on Modelling, Identification and Control(ICMIC2012). pp. 987\u2013992.\n
                                                                                  32. \n
                                                                                  33. ^ Knight K. (2000), Mathematical Statistics, Chapman and Hall, New York. (proposition 2.11)\n
                                                                                  34. \n
                                                                                  35. ^ Casella and Berger (2002) Statistical Inference, Example 7.3.3, p. 331 [full citation needed]\n
                                                                                  36. \n
                                                                                  37. ^ Mood, A. M., Graybill, F. A., and Boes, D.C. (1974) Introduction to the Theory of Statistics, 3rd Edition, McGraw-Hill, New York, p. 229\n
                                                                                  38. \n
                                                                                  39. ^ Kenney, John F.; Keeping, E.S. (1951). Mathematics of Statistics. Part Two (PDF) (2nd ed.). Princeton, New Jersey: D. Van Nostrand Company, Inc. Archived from the original (PDF) on Nov 17, 2018 \u2013 via KrishiKosh.\n
                                                                                  40. \n
                                                                                  41. ^ Rose, Colin; Smith, Murray D. (2002). \"Mathematical Statistics with Mathematica\". Springer-Verlag, New York.\n
                                                                                  42. \n
                                                                                  43. ^ Weisstein, Eric W. \"Sample Variance Distribution\". MathWorld Wolfram.\n
                                                                                  44. \n
                                                                                  45. ^ Samuelson, Paul (1968). \"How Deviant Can You Be?\". Journal of the American Statistical Association. 63 (324): 1522\u20131525. doi:10.1080/01621459.1968.10480944. JSTOR 2285901.\n
                                                                                  46. \n
                                                                                  47. ^ Mercer, A. McD. (2000). \"Bounds for A\u2013G, A\u2013H, G\u2013H, and a family of inequalities of Ky Fan's type, using a general method\". J. Math. Anal. Appl. 243 (1): 163\u2013173. doi:10.1006/jmaa.1999.6688.\n
                                                                                  48. \n
                                                                                  49. ^ Sharma, R. (2008). \"Some more inequalities for arithmetic mean, harmonic mean and variance\". Journal of Mathematical Inequalities. 2 (1): 109\u2013114. CiteSeerX 10.1.1.551.9397. doi:10.7153/jmi-02-11.\n
                                                                                  50. \n
                                                                                  51. ^ a b Magnello, M. Eileen. \"Karl Pearson and the Origins of Modern Statistics: An Elastician becomes a Statistician\". The Rutherford Journal.\n
                                                                                  52. \n
                                                                                  53. ^ Fama, Eugene F.; French, Kenneth R. (2010-04-21). \"Q&A: Semi-Variance: A Better Risk Measure?\". Fama/French Forum.\n
                                                                                  54. \n
                                                                                  55. ^ Ronald Fisher (1918) The correlation between relatives on the supposition of Mendelian Inheritance\n
                                                                                  56. \n
                                                                                  57. ^ Kocherlakota, S.; Kocherlakota, K. (2004). \"Generalized Variance\". Encyclopedia of Statistical Sciences. Wiley Online Library. doi:10.1002/0471667196.ess0869. ISBN 0-471-66719-6.\n
                                                                                  58. \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n
                                                                                  \n\n
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n"} diff --git a/bench/data/groundtruth/math_physicsforums_1.jsonl b/bench/data/groundtruth/math_physicsforums_1.jsonl new file mode 100644 index 00000000..d95046e6 --- /dev/null +++ b/bench/data/groundtruth/math_physicsforums_1.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "paragraph", "raw_content": "
                                                                                  Jul 21, 2008
                                                                                  ", "content": [{"c": "Jul 21, 2008", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "#1", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\n\n\n\n\n\n\n\t\t\t\t\tCan anyone help me prove under what conditions on the distance function
                                                                                  ", "content": [{"c": "Can anyone help me prove under what conditions on the distance function", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]d(x_1,x_2)[/tex]", "content": {"math_content": "d(x_1,x_2)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  the following inequality holds for any two probability distributions (represented by probability densities)
                                                                                  ", "content": [{"c": "the following inequality holds for any two probability distributions (represented by probability densities)", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]p(x)[/tex]", "content": {"math_content": "p(x)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  and
                                                                                  ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]q(x)[/tex]", "content": {"math_content": "q(x)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  :

                                                                                  \n[tex]2\\int{\\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}
                                                                                  \n\\geq
                                                                                  \n\\int{\\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +
                                                                                  \n\\int{\\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}
                                                                                  \n[/tex]

                                                                                  \nwhere
                                                                                  ", "content": [{"c": ":\n\n[tex]2\\int{\\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}\n\\geq\n\\int{\\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +\n\\int{\\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}\n[/tex]\n\n where", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]d^2(x_1,x_2)[/tex]", "content": {"math_content": "d^2(x_1,x_2)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  is the squared distance between
                                                                                  ", "content": [{"c": "is the squared distance between", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]x_1[/tex]", "content": {"math_content": "x_1", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  and
                                                                                  ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]x_2[/tex]", "content": {"math_content": "x_2", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  in some metric space
                                                                                  ", "content": [{"c": "in some metric space", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]\\Theta[/tex]", "content": {"math_content": "\\Theta", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  . All integrals are over
                                                                                  ", "content": [{"c": ". All integrals are over", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]\\Theta[/tex]", "content": {"math_content": "\\Theta", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  .

                                                                                  \nOne can easily verify by insertion that the inequality holds for a Euclidian metric where
                                                                                  ", "content": [{"c": ".\n\n One can easily verify by insertion that the inequality holds for a Euclidian metric where", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]d^2(x_1,x_2)=(x_1-x_2)^2[/tex]", "content": {"math_content": "d^2(x_1,x_2)=(x_1-x_2)^2", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  , with equality if and only if the expectation of
                                                                                  ", "content": [{"c": ", with equality if and only if the expectation of", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]p(x)[/tex]", "content": {"math_content": "p(x)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  and
                                                                                  ", "content": [{"c": "and", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]q(x)[/tex]", "content": {"math_content": "q(x)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  are the same.

                                                                                  \nIt must surely hold for some more general class of metrics (described by
                                                                                  ", "content": [{"c": "are the same.\n\n It must surely hold for some more general class of metrics (described by", "t": "text"}]}, {"type": "equation-interline", "raw_content": "[tex]d^2(x_1,x_2)[/tex]", "content": {"math_content": "d^2(x_1,x_2)", "math_type": "latex", "by": "mathjax_customized"}}, {"type": "paragraph", "raw_content": "
                                                                                  ) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case?\n\t\t\t\t\t
                                                                                  ", "content": [{"c": ") - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case?", "t": "text"}]}, {"type": "image", "raw_content": "\"jcsd\"", "content": {"url": "https://physicsforums-bernhardtmediall.netdna-ssl.com/styles/default/xenforo/physorg.png", "data": null, "alt": "jcsd", "title": null, "caption": null}}, {"type": "paragraph", "raw_content": "
                                                                                  Know someone interested in this topic? Share this thread via Reddit,\n Google+,\n Twitter, or\n Facebook
                                                                                  ", "content": [{"c": "Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\nCan you offer guidance or do you also need help? \n\n
                                                                                  ", "content": [{"c": "Can you offer guidance or do you also need help?\n", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                                  Similar Discussions: Probability theoretic inequality
                                                                                  ", "content": {"items": [[[{"c": "Similar Discussions:", "t": "text"}, {"c": " Probability theoretic inequality", "t": "text"}]]], "ordered": true, "list_nest_level": "1"}}, {"type": "list", "raw_content": "
                                                                                  1. A basic probability inequality\n\t\t\t\t\t(Replies: 2)\n\t\t\t\t

                                                                                  2. Probability of a probability\n\t\t\t\t\t(Replies: 4)\n\t\t\t\t

                                                                                  3. Empirical and theoretical probability\n\t\t\t\t\t(Replies: 0)\n\t\t\t\t

                                                                                  ", "content": {"items": [[], [[{"c": "A basic probability inequality", "t": "text"}, {"c": "\n\t\t\t\t\t(Replies: 2)\n\t\t\t\t", "t": "text"}]], [[{"c": "Probability of a probability", "t": "text"}, {"c": "\n\t\t\t\t\t(Replies: 4)\n\t\t\t\t", "t": "text"}]], [[{"c": "Empirical and theoretical probability", "t": "text"}, {"c": "\n\t\t\t\t\t(Replies: 0)\n\t\t\t\t", "t": "text"}]], []], "ordered": true, "list_nest_level": "1"}}, {"type": "paragraph", "raw_content": "
                                                                                  Loading...
                                                                                  ", "content": [{"c": "Loading...", "t": "text"}]}]], "main_html": "
                                                                                  Jul 21, 2008
                                                                                  \n\n\n\n\n\n\n\n\t\t\t\t\tCan anyone help me prove under what conditions on the distance function
                                                                                  [tex]d(x_1,x_2)[/tex]
                                                                                  the following inequality holds for any two probability distributions (represented by probability densities)
                                                                                  [tex]p(x)[/tex]
                                                                                  and
                                                                                  [tex]q(x)[/tex]
                                                                                  :

                                                                                  \n[tex]2\\int{\\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}
                                                                                  \n\\geq
                                                                                  \n\\int{\\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +
                                                                                  \n\\int{\\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}
                                                                                  \n[/tex]

                                                                                  \nwhere
                                                                                  [tex]d^2(x_1,x_2)[/tex]
                                                                                  is the squared distance between
                                                                                  [tex]x_1[/tex]
                                                                                  and
                                                                                  [tex]x_2[/tex]
                                                                                  in some metric space
                                                                                  [tex]\\Theta[/tex]
                                                                                  . All integrals are over
                                                                                  [tex]\\Theta[/tex]
                                                                                  .

                                                                                  \nOne can easily verify by insertion that the inequality holds for a Euclidian metric where
                                                                                  [tex]d^2(x_1,x_2)=(x_1-x_2)^2[/tex]
                                                                                  , with equality if and only if the expectation of
                                                                                  [tex]p(x)[/tex]
                                                                                  and
                                                                                  [tex]q(x)[/tex]
                                                                                  are the same.

                                                                                  \nIt must surely hold for some more general class of metrics (described by
                                                                                  [tex]d^2(x_1,x_2)[/tex]
                                                                                  ) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case?\n\t\t\t\t\t
                                                                                  \"jcsd\"
                                                                                  Know someone interested in this topic? Share this thread via Reddit,\n Google+,\n Twitter, or\n Facebook
                                                                                  \n\nCan you offer guidance or do you also need help? \n\n
                                                                                  Similar Discussions: Probability theoretic inequality
                                                                                  1. A basic probability inequality\n\t\t\t\t\t(Replies: 2)\n\t\t\t\t

                                                                                  2. Probability of a probability\n\t\t\t\t\t(Replies: 4)\n\t\t\t\t

                                                                                  3. Empirical and theoretical probability\n\t\t\t\t\t(Replies: 0)\n\t\t\t\t

                                                                                  Loading...
                                                                                  ", "statics": {"paragraph": 18, "paragraph.text": 18, "equation-interline": 12, "image": 1, "list": 2, "list.text": 8}, "url": "https://www.physicsforums.com/threads/probability-theoretic-inequality.246150/", "content": "Jul 21, 2008\n\n\\#1\n\nCan anyone help me prove under what conditions on the distance function\n\n$$\nd(x_1,x_2)\n$$\n\nthe following inequality holds for any two probability distributions (represented by probability densities)\n\n$$\np(x)\n$$\n\nand\n\n$$\nq(x)\n$$\n\n:\n\n[tex]2\\int{\\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}\n\\geq\n\\int{\\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +\n\\int{\\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}\n[/tex]\n\n where\n\n$$\nd^2(x_1,x_2)\n$$\n\nis the squared distance between\n\n$$\nx_1\n$$\n\nand\n\n$$\nx_2\n$$\n\nin some metric space\n\n$$\n\\Theta\n$$\n\n. All integrals are over\n\n$$\n\\Theta\n$$\n\n.\n\n One can easily verify by insertion that the inequality holds for a Euclidian metric where\n\n$$\nd^2(x_1,x_2)=(x_1-x_2)^2\n$$\n\n, with equality if and only if the expectation of\n\n$$\np(x)\n$$\n\nand\n\n$$\nq(x)\n$$\n\nare the same.\n\n It must surely hold for some more general class of metrics (described by\n\n$$\nd^2(x_1,x_2)\n$$\n\n) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case?\n\nKnow someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook\n\nCan you offer guidance or do you also need help?\n\n1. Similar Discussions: Probability theoretic inequality\n\n\n2. A basic probability inequality (Replies: 2)\n3. Probability of a probability (Replies: 4)\n4. Empirical and theoretical probability (Replies: 0)\n\n\nLoading...\n", "html": "\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\t\t\n\n\n\t\t\n\t\t\n\n\n\tProbability theoretic inequality | Physics Forums - The Fusion of Science and Community\n\n\n\t\n\t\n\t\n\n\n\n\n\t\t\n\n\n\n\t\t\n\n\n\n\n\n\t\n\t\t\n\n\t\t\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\t\n\t \t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\t\n\n\n \n \n \n\n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\n\n
                                                                                  \n\t\n
                                                                                  \n\n\n\n
                                                                                  \n\n\n\n\n\n\n\n\t\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t

                                                                                  \n\t\t\t\t\n\t\t\t

                                                                                  \n\t\t\t\n\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n
                                                                                  \n\n\n\n\n\t
                                                                                  \n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\n\n\n\n\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t\t\t\t\t\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\tDismiss Notice\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\tJoin Physics Forums Today!
                                                                                  \nThe friendliest, high quality science and math community on the planet! Everyone who loves science is here!\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t

                                                                                  \n\n\n\n\n\n\n\n\nProbability theoretic inequality\n\n\n\t\t\t\t\t\t\t\t\t

                                                                                  \n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n
                                                                                  \n\t\n
                                                                                  \n\n\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\n\n\n\t
                                                                                  \n\n\n
                                                                                  \n\n\n\n\n\n
                                                                                  \n\n\t
                                                                                    \n\n\n\n\n\n\n\n\n
                                                                                  1. \n\t
                                                                                    \n\n\t
                                                                                    \n\t\t\n\n\t\t\t\tJul 21, 2008\n\n\t\t\n\n\t\t\n\t\t\t#1\n\n\t\t\n\n\t
                                                                                    \n\n\n\n
                                                                                    \n
                                                                                    \n\t\t

                                                                                    \n\t\twinterfors\n\t\t

                                                                                    \n\n\n\n\t\t
                                                                                    \n\n\n\t\t\t\"User\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\n\n\n\t\t
                                                                                    \n\n\n\n\n\t\t

                                                                                    \n\n\t\t\t\n\n\t\t\t\n\t\t

                                                                                    \n\n\n\t\n\n\n\n\t\n
                                                                                    \n
                                                                                    \n\n\t
                                                                                    \n\n\n\n\n\n\n\n\n\n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\n\n
                                                                                    \n\n\n
                                                                                    \n\n\n\n\n\n\n\n\t\t\t\t\tCan anyone help me prove under what conditions on the distance function [tex]d(x_1,x_2)[/tex] the following inequality holds for any two probability distributions (represented by probability densities) [tex]p(x)[/tex] and [tex]q(x)[/tex] :
                                                                                    \n
                                                                                    \n[tex]2\\int{\\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}
                                                                                    \n\\geq
                                                                                    \n\\int{\\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +
                                                                                    \n\\int{\\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}
                                                                                    \n[/tex]
                                                                                    \n
                                                                                    \nwhere [tex]d^2(x_1,x_2)[/tex] is the squared distance between [tex]x_1[/tex] and [tex]x_2[/tex] in some metric space [tex]\\Theta[/tex]. All integrals are over [tex]\\Theta[/tex].
                                                                                    \n
                                                                                    \nOne can easily verify by insertion that the inequality holds for a Euclidian metric where [tex]d^2(x_1,x_2)=(x_1-x_2)^2[/tex], with equality if and only if the expectation of [tex]p(x)[/tex] and [tex]q(x)[/tex] are the same.
                                                                                    \n
                                                                                    \nIt must surely hold for some more general class of metrics (described by [tex]d^2(x_1,x_2)[/tex]) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case?\n\t\t\t\t\t
                                                                                     
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n\n\t\t
                                                                                    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t
                                                                                    \n\n\t\t\t
                                                                                    \n\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\twinterfors,\n\t\t\t\t\t\t\t\t\tJul 21, 2008\n\t\t\t\t\t\t\t\t\n\n\n\n\t\t\t
                                                                                    \n\n\n\t\t\t
                                                                                    \n\n\n\n\n\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  2. \n\n\n\n\n
                                                                                  3. \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t\"jcsd\"\n\t\t
                                                                                    \n\t
                                                                                    \n\n\t\n
                                                                                  4. \n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\n\n
                                                                                  \n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t
                                                                                  \n\n\n\n
                                                                                  Know someone interested in this topic? Share this thread via Reddit,\n Google+,\n Twitter, or\n Facebook
                                                                                  \n\n
                                                                                  \n\n\n
                                                                                  \n\nCan you offer guidance or do you also need help? \n\n
                                                                                  \n\n\n\n\t\n\n\n\n\n\n
                                                                                  \n\n\t
                                                                                  \n\n\n\n\t
                                                                                  \n\n\t\t\t\n\t\t\t\n\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\tDraft saved\n\t\t\t\tDraft deleted\n\t\t\t
                                                                                  \n\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\n\n\n\t\t\n\t\t\n\t\t\n\n\t
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n

                                                                                  \n\n\n\n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\n\n\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t Similar Discussions: Probability theoretic inequality\n\t\t
                                                                                  \n\n\t
                                                                                  \n\n\t
                                                                                    \n\n\n\n\n\t\t\t
                                                                                  1. \n\n\n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t

                                                                                    \n\n\t\t\t\t\t\t\tProbability inequality for the sum of independent normal random variables\n\n\n\t\t\t\t\n\t\t\t\t\t(Replies: 3)\n\t\t\t\t\n\n\t\t\t\t\t\t

                                                                                    \n\n\n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\t\t\t
                                                                                  2. \n\n\n\n\t\t\t
                                                                                  3. \n\n\n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t

                                                                                    \n\n\t\t\t\t\t\t\tA basic probability inequality\n\n\n\t\t\t\t\n\t\t\t\t\t(Replies: 2)\n\t\t\t\t\n\n\t\t\t\t\t\t

                                                                                    \n\n\n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\t\t\t
                                                                                  4. \n\n\n\n\t\t\t
                                                                                  5. \n\n\n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t

                                                                                    \n\n\t\t\t\t\t\t\tProbability of a probability\n\n\n\t\t\t\t\n\t\t\t\t\t(Replies: 4)\n\t\t\t\t\n\n\t\t\t\t\t\t

                                                                                    \n\n\n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\t\t\t
                                                                                  6. \n\n\n\n\t\t\t
                                                                                  7. \n\n\n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t

                                                                                    \n\n\t\t\t\t\t\t\tEmpirical and theoretical probability\n\n\n\t\t\t\t\n\t\t\t\t\t(Replies: 0)\n\t\t\t\t\n\n\t\t\t\t\t\t

                                                                                    \n\n\n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\t\t\t
                                                                                  8. \n\n\n\n\t\t\t
                                                                                  9. \n\n\n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t

                                                                                    \n\n\t\t\t\t\t\t\tConflict between experimental and theoretical probability results\n\n\n\t\t\t\t\n\t\t\t\t\t(Replies: 5)\n\t\t\t\t\n\n\t\t\t\t\t\t

                                                                                    \n\n\n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\n\t\t\t
                                                                                  10. \n\n\n\t
                                                                                  \n\n\t
                                                                                  \n\t\n\n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tLoading...\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n
                                                                                  \n\n\n\t\t\n\n\n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\n\t\n\t\n\t\n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\t\t\t
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n
                                                                                  \n\n\n
                                                                                  \n\n\n\n
                                                                                  \n\n\n\n\n\n
                                                                                  \n\n\n
                                                                                  \n\t
                                                                                  \n\t\t\n\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n
                                                                                  \n\n\n\n\n\n
                                                                                  \n\n\n\n
                                                                                  \n\n\n
                                                                                  \n\n
                                                                                  \n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\t\t\t
                                                                                  \n\n\n\t\t\t
                                                                                    \n\n\n\n\n\n\t\t\t\t\t
                                                                                  • Contact Us
                                                                                  • \n\n\t\t\t\t
                                                                                  • Help
                                                                                  • \n\t\t\t\t
                                                                                  • About
                                                                                  • \n\t\t\t\t
                                                                                  • Top
                                                                                  • \n\n\n\t\t\t\t
                                                                                  • \n
                                                                                  • \n
                                                                                  • \n
                                                                                  • \n
                                                                                  • \n
                                                                                  • \n
                                                                                  • \n\n\n\n\n\t\t\t
                                                                                  \n\n\n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\n\n\t\t\t\n\t\t\t\t\t\t
                                                                                  © 2001-2016 Physics Forums
                                                                                  \n\n\n\n\n\n\n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\n
                                                                                  \n\n\n\n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"} diff --git a/bench/data/groundtruth/math_physicsforums_2.jsonl b/bench/data/groundtruth/math_physicsforums_2.jsonl new file mode 100644 index 00000000..69718801 --- /dev/null +++ b/bench/data/groundtruth/math_physicsforums_2.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "paragraph", "raw_content": "
                                                                                  The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.

                                                                                  ", "content": [{"c": "The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.\n\n", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Insert Math Editor\u200b

                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!", "content": {"title_content": "Insert Math Editor\u200b", "level": "3"}}, {"type": "paragraph", "raw_content": "
                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!

                                                                                  \nAnd then you can insert the math as either a Block or Inline.

                                                                                  \nScreenshots below:

                                                                                  ", "content": [{"c": "In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!\n\n And then you can insert the math as either a Block or Inline.\n\n Screenshots below:\n\n", "t": "text"}]}, {"type": "image", "raw_content": "\"LaTeX", "content": {"url": "https://physicshelpforum.com/data/attachments/4/4740-7fe09219b74ce4ca36a512e8383c412c.jpg", "data": null, "alt": "LaTeX Math Editor", "title": "LaTeX Math Editor", "caption": null}}, {"type": "image", "raw_content": "\"LaTeX", "content": {"url": "https://physicshelpforum.com/data/attachments/4/4739-460ec05f3727868e315d20ce55ce9340.jpg", "data": null, "alt": "LaTeX Math Equations for Physics", "title": "LaTeX Math Equations for Physics", "caption": null}}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  2 users
                                                                                  ", "content": [{"c": "2 users", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Writing Math Equations\u200b

                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.", "content": {"title_content": "Writing Math Equations\u200b", "level": "3"}}, {"type": "paragraph", "raw_content": "
                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.

                                                                                  \nSame as before, you can wrap your Latex equations with any of the following tags:

                                                                                  ", "content": [{"c": "And when you want to write math equations directly in your post, you are not required to use the Insert Math button.\n\n Same as before, you can wrap your Latex equations with any of the following tags:\n\n", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Block Math\u200b

                                                                                  ", "content": {"title_content": "Block Math\u200b", "level": "4"}}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[MATH] [/MATH]\n[LATEX] [/LATEX]\n[TEX] [/TEX]\n$$ $$", "inline": false, "content": {"code_content": "[MATH] [/MATH]\n[LATEX] [/LATEX]\n[TEX] [/TEX]\n$$ $$", "by": "tag_pre_code"}}, {"type": "title", "raw_content": "

                                                                                  Inline Math\u200b

                                                                                  ", "content": {"title_content": "Inline Math\u200b", "level": "4"}}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[IMATH] [/IMATH]\n[ILATEX] [/ILATEX]\n[ITEX] [/ITEX]\n## ##", "inline": false, "content": {"code_content": "[IMATH] [/IMATH]\n[ILATEX] [/ILATEX]\n[ITEX] [/ITEX]\n## ##", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  1 users
                                                                                  ", "content": [{"c": "1 users", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\n\n Last edited: \n\n\n
                                                                                  ", "content": [{"c": "Last edited:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  And some example Latex Equations, with the math expressions used for writing, to see it working...

                                                                                  Newton's Second Law of Motion
                                                                                  [math]\\vec{F} = m\\vec{a}[/math]

                                                                                  ", "content": [{"c": "And some example Latex Equations, with the math expressions used for writing, to see it working...\n\n Newton's Second Law of Motion\n", "t": "text"}, {"c": "[math]\\vec{F} = m\\vec{a}[/math]", "t": "code-inline"}, {"c": "\n\n", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\\vec{F} = m\\vec{a}", "content": {"math_content": "\\vec{F} = m\\vec{a}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Gauss's Law for Electrcity
                                                                                  ", "content": [{"c": "Gauss's Law for Electrcity", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  [math]\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}[/math]
                                                                                  ", "content": [{"c": "[math]\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}[/math]", "t": "code-inline"}]}, {"type": "equation-interline", "raw_content": "\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}", "content": {"math_content": "\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Einstein's Field Equations of General Relativity
                                                                                  ", "content": [{"c": "Einstein's Field Equations of General Relativity", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  [math]G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}[/math]
                                                                                  ", "content": [{"c": "[math]G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}[/math]", "t": "code-inline"}]}, {"type": "equation-interline", "raw_content": "G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}", "content": {"math_content": "G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  The Dirac Equation
                                                                                  ", "content": [{"c": "The Dirac Equation", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  [math](i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0[/math]
                                                                                  ", "content": [{"c": "[math](i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0[/math]", "t": "code-inline"}]}, {"type": "equation-interline", "raw_content": "(i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0", "content": {"math_content": "(i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  The Schr\u00f6dinger Equation in Quantum Mechanics (Time-Dependent Form)
                                                                                  ", "content": [{"c": "The Schr\u00f6dinger Equation in Quantum Mechanics (Time-Dependent Form)", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  [math]i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)[/math]
                                                                                  ", "content": [{"c": "[math]i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)[/math]", "t": "code-inline"}]}, {"type": "equation-interline", "raw_content": "i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)", "content": {"math_content": "i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  2 users
                                                                                  ", "content": [{"c": "2 users", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Long Math Equations
                                                                                  \nFor very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...

                                                                                  \nFor example, here is a very long equation without the align tags used in MathJax v3:

                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Long Math Equations\n For very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...\n\n For example, here is a very long equation without the", "t": "text"}, {"c": "align", "t": "code-inline"}, {"c": "tags used in MathJax v3:\n\n Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n[/math]", "inline": false, "content": {"code_content": "[math]\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n[/math]", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

                                                                                  \nAnd this is how the equation looks with the horizontal scrollbar:

                                                                                  ", "content": [{"c": "And this is how the equation looks with the horizontal scrollbar:\n\n", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n", "content": {"math_content": "P(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "


                                                                                  \nThe better way to write the exact same equation would be to add the align tags used in MathJax v3, to recognize the \\\\ as line breaks:

                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "The better way to write the exact same equation would be to add the", "t": "text"}, {"c": "align", "t": "code-inline"}, {"c": "tags used in MathJax v3, to recognize the", "t": "text"}, {"c": "\\\\", "t": "code-inline"}, {"c": "as line breaks:\n\n Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n[/math]", "inline": false, "content": {"code_content": "[math]\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n[/math]", "by": "tag_pre_code"}}, {"type": "paragraph", "raw_content": "

                                                                                  \nAnd then it display in a more readable format, as seen here:

                                                                                  ", "content": [{"c": "And then it display in a more readable format, as seen here:\n\n", "t": "text"}]}, {"type": "equation-interline", "raw_content": "\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n", "content": {"math_content": "\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  2 users
                                                                                  ", "content": [{"c": "2 users", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Writing Physics Equations\u200b

                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.", "content": {"title_content": "Writing Physics Equations\u200b", "level": "3"}}, {"type": "paragraph", "raw_content": "
                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.

                                                                                  \nHere are a few physics-related examples:

                                                                                  Derivatives
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "We have also installed a physics science package into MathJax, for physics notation and equation support.\n\n Here are a few physics-related examples:\n\n Derivatives\n Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}[/math]", "inline": false, "content": {"code_content": "[math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}", "content": {"math_content": "\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Partial Derivatives
                                                                                  ", "content": [{"c": "Partial Derivatives", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}[/math]", "inline": false, "content": {"code_content": "[math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}", "content": {"math_content": "\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Vectors
                                                                                  ", "content": [{"c": "Vectors", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}[/math]", "inline": false, "content": {"code_content": "[math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}", "content": {"math_content": "\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Gradient, Divergence, Curl
                                                                                  ", "content": [{"c": "Gradient, Divergence, Curl", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}[/math]\n[math]\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}[/math]\n[math]\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}[/math]", "inline": false, "content": {"code_content": "[math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}[/math]\n[math]\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}[/math]\n[math]\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}", "content": {"math_content": "\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}", "content": {"math_content": "\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}", "content": {"math_content": "\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Bra-Ket Notation
                                                                                  ", "content": [{"c": "Bra-Ket Notation", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}[/math]", "inline": false, "content": {"code_content": "[math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}", "content": {"math_content": "\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Commutators and Anticommutators
                                                                                  ", "content": [{"c": "Commutators and Anticommutators", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}[/math]\n[math]\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}[/math]", "inline": false, "content": {"code_content": "[math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}[/math]\n[math]\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "[\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}", "content": {"math_content": "[\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}", "content": {"math_content": "\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Matrices
                                                                                  ", "content": [{"c": "Matrices", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n[/math]", "inline": false, "content": {"code_content": "[math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n", "content": {"math_content": "\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Dirac Notation (Ket, Bra, Operators)
                                                                                  ", "content": [{"c": "Dirac Notation (Ket, Bra, Operators)", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}[/math]\n[math]\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}[/math]\n[math]\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}[/math]", "inline": false, "content": {"code_content": "[math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}[/math]\n[math]\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}[/math]\n[math]\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}", "content": {"math_content": "|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}", "content": {"math_content": "\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}", "math_type": "latex", "by": "mathjax"}}, {"type": "equation-interline", "raw_content": "\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}", "content": {"math_content": "\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Quick Quadratic Equation
                                                                                  ", "content": [{"c": "Quick Quadratic Equation", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  \n\t\tCode:\n\t
                                                                                  ", "content": [{"c": "Code:", "t": "text"}]}, {"type": "code", "raw_content": "[math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)[/math]", "inline": false, "content": {"code_content": "[math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)[/math]", "by": "tag_pre_code"}}, {"type": "equation-interline", "raw_content": "ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)", "content": {"math_content": "ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)", "math_type": "latex", "by": "mathjax"}}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  1 users
                                                                                  ", "content": [{"c": "1 users", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  This is awesome!
                                                                                  ", "content": [{"c": "This is awesome!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  2 users
                                                                                  ", "content": [{"c": "2 users", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Joined Nov 2013
                                                                                  ", "content": [{"c": "Joined Nov 2013", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  852 Posts | 104+
                                                                                  ", "content": [{"c": "852 Posts | 104+", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  New Zealand
                                                                                  ", "content": [{"c": "New Zealand", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  That looks nice!
                                                                                  ", "content": [{"c": "That looks nice!", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Reactions:
                                                                                  ", "content": [{"c": "Reactions:", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  2 users
                                                                                  ", "content": [{"c": "2 users", "t": "text"}]}]], "main_html": "
                                                                                  The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.

                                                                                  Insert Math Editor\u200b

                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!
                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!

                                                                                  \nAnd then you can insert the math as either a Block or Inline.

                                                                                  \nScreenshots below:

                                                                                  \"LaTeX\"LaTeX
                                                                                  Reactions:
                                                                                  2 users

                                                                                  Writing Math Equations\u200b

                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.
                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.

                                                                                  \nSame as before, you can wrap your Latex equations with any of the following tags:

                                                                                  Block Math\u200b

                                                                                  \n\t\tCode:\n\t
                                                                                  [MATH] [/MATH]\n[LATEX] [/LATEX]\n[TEX] [/TEX]\n$$ $$

                                                                                  Inline Math\u200b

                                                                                  \n\t\tCode:\n\t
                                                                                  [IMATH] [/IMATH]\n[ILATEX] [/ILATEX]\n[ITEX] [/ITEX]\n## ##
                                                                                  Reactions:
                                                                                  1 users
                                                                                  \n\n\n Last edited: \n\n\n
                                                                                  And some example Latex Equations, with the math expressions used for writing, to see it working...

                                                                                  Newton's Second Law of Motion
                                                                                  [math]\\vec{F} = m\\vec{a}[/math]

                                                                                  \\vec{F} = m\\vec{a}
                                                                                  Gauss's Law for Electrcity
                                                                                  [math]\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}[/math]
                                                                                  \\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}
                                                                                  Einstein's Field Equations of General Relativity
                                                                                  [math]G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}[/math]
                                                                                  G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}
                                                                                  The Dirac Equation
                                                                                  [math](i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0[/math]
                                                                                  (i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0
                                                                                  The Schr\u00f6dinger Equation in Quantum Mechanics (Time-Dependent Form)
                                                                                  [math]i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)[/math]
                                                                                  i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)
                                                                                  Reactions:
                                                                                  2 users
                                                                                  Long Math Equations
                                                                                  \nFor very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...

                                                                                  \nFor example, here is a very long equation without the align tags used in MathJax v3:

                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n[/math]

                                                                                  \nAnd this is how the equation looks with the horizontal scrollbar:

                                                                                  \nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n


                                                                                  \nThe better way to write the exact same equation would be to add the align tags used in MathJax v3, to recognize the \\\\ as line breaks:

                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n[/math]

                                                                                  \nAnd then it display in a more readable format, as seen here:

                                                                                  \n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n
                                                                                  Reactions:
                                                                                  2 users

                                                                                  Writing Physics Equations\u200b

                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.
                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.

                                                                                  \nHere are a few physics-related examples:

                                                                                  Derivatives
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}[/math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}
                                                                                  Partial Derivatives
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}[/math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}
                                                                                  Vectors
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}[/math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}
                                                                                  Gradient, Divergence, Curl
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}[/math]\n[math]\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}[/math]\n[math]\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}[/math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}
                                                                                  Bra-Ket Notation
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}[/math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}
                                                                                  Commutators and Anticommutators
                                                                                  \n\t\tCode:\n\t
                                                                                  [math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}[/math]\n[math]\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}[/math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}
                                                                                  Matrices
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n[/math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n
                                                                                  Dirac Notation (Ket, Bra, Operators)
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}[/math]\n[math]\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}[/math]\n[math]\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}[/math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}
                                                                                  Quick Quadratic Equation
                                                                                  \n\t\tCode:\n\t
                                                                                  [math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)[/math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)
                                                                                  Reactions:
                                                                                  1 users
                                                                                  This is awesome!
                                                                                  Reactions:
                                                                                  2 users
                                                                                  Joined Nov 2013
                                                                                  852 Posts | 104+
                                                                                  New Zealand
                                                                                  That looks nice!
                                                                                  Reactions:
                                                                                  2 users
                                                                                  ", "statics": {"paragraph": 55, "paragraph.text": 55, "title": 5, "image": 2, "code": 13, "paragraph.code-inline": 8, "equation-interline": 21}, "url": "https://physicshelpforum.com/t/latex-upgrade-physics-forum-powered-by-mathjax-v3.17489/", "content": "The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.\n\n### Insert Math Editor\u200b\n\nIn the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!\n\n And then you can insert the math as either a Block or Inline.\n\n Screenshots below:\n\nReactions:\n\n2 users\n\n### Writing Math Equations\u200b\n\nAnd when you want to write math equations directly in your post, you are not required to use the Insert Math button.\n\n Same as before, you can wrap your Latex equations with any of the following tags:\n\n#### Block Math\u200b\n\nCode:\n\n```\n[MATH] [/MATH]\n[LATEX] [/LATEX]\n[TEX] [/TEX]\n$$ $$\n```\n\n#### Inline Math\u200b\n\nCode:\n\n```\n[IMATH] [/IMATH]\n[ILATEX] [/ILATEX]\n[ITEX] [/ITEX]\n## ##\n```\n\nReactions:\n\n1 users\n\nLast edited:\n\nAnd some example Latex Equations, with the math expressions used for writing, to see it working...\n\n Newton's Second Law of Motion `[math]\\vec{F} = m\\vec{a}[/math]`\n\n$$\n\\vec{F} = m\\vec{a}\n$$\n\nGauss's Law for Electrcity\n\n`[math]\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}[/math]`\n\n$$\n\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}\n$$\n\nEinstein's Field Equations of General Relativity\n\n`[math]G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}[/math]`\n\n$$\nG_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}\n$$\n\nThe Dirac Equation\n\n`[math](i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0[/math]`\n\n$$\n(i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0\n$$\n\nThe Schr\u00f6dinger Equation in Quantum Mechanics (Time-Dependent Form)\n\n`[math]i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)[/math]`\n\n$$\ni\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)\n$$\n\nReactions:\n\n2 users\n\nLong Math Equations\n For very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...\n\n For example, here is a very long equation without the `align` tags used in MathJax v3:\n\n Code:\n\n```\n[math]\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n[/math]\n```\n\nAnd this is how the equation looks with the horizontal scrollbar:\n\n$$\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n$$\n\nThe better way to write the exact same equation would be to add the `align` tags used in MathJax v3, to recognize the `\\\\` as line breaks:\n\n Code:\n\n```\n[math]\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n[/math]\n```\n\nAnd then it display in a more readable format, as seen here:\n\n$$\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n$$\n\nReactions:\n\n2 users\n\n### Writing Physics Equations\u200b\n\nWe have also installed a physics science package into MathJax, for physics notation and equation support.\n\n Here are a few physics-related examples:\n\n Derivatives\n Code:\n\n```\n[math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}[/math]\n```\n\n$$\n\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}\n$$\n\nPartial Derivatives\n\nCode:\n\n```\n[math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}[/math]\n```\n\n$$\n\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}\n$$\n\nVectors\n\nCode:\n\n```\n[math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}[/math]\n```\n\n$$\n\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}\n$$\n\nGradient, Divergence, Curl\n\nCode:\n\n```\n[math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}[/math]\n[math]\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}[/math]\n[math]\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}[/math]\n```\n\n$$\n\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}\n$$\n\n$$\n\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}\n$$\n\n$$\n\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}\n$$\n\nBra-Ket Notation\n\nCode:\n\n```\n[math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}[/math]\n```\n\n$$\n\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}\n$$\n\nCommutators and Anticommutators\n\nCode:\n\n```\n[math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}[/math]\n[math]\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}[/math]\n```\n\n$$\n[\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}\n$$\n\n$$\n\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}\n$$\n\nMatrices\n\nCode:\n\n```\n[math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n[/math]\n```\n\n$$\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n$$\n\nDirac Notation (Ket, Bra, Operators)\n\nCode:\n\n```\n[math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}[/math]\n[math]\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}[/math]\n[math]\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}[/math]\n```\n\n$$\n|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}\n$$\n\n$$\n\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}\n$$\n\n$$\n\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}\n$$\n\nQuick Quadratic Equation\n\nCode:\n\n```\n[math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)[/math]\n```\n\n$$\nax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)\n$$\n\nReactions:\n\n1 users\n\nThis is awesome!\n\nReactions:\n\n2 users\n\nJoined Nov 2013\n\n852 Posts | 104+\n\nNew Zealand\n\nThat looks nice!\n\nReactions:\n\n2 users\n", "html": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\n\n\n\t\tInfo - Latex Upgrade - Physics Forum Powered by MathJax v3 | Physics Forum\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\n\n\t\t\t\n\n\n\n\n\t\t\n\t\t\n\t\t\n\n\n\t\t\t\n\n\t\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\t\t\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\t\t\n\t\t\n\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\t\t\n\t\t\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\t\t\n\n\n\t\t\n\n\n\t\n\n\n\n\t\t\t\n\n\n\t\t\t\n\n\n\n\t\t\n\n\t\n\n\n\n\n\n\t\n\n\n\t\n\n\t\n\t\t\n\n\n\t\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\t\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t

                                                                                  Search

                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tBy:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tAdvanced search\u2026\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tBy:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tAdvanced\u2026\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\n\n\n\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tMenu\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\t
                                                                                  \n
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  Install the app
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\n\n\n\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\n\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\t
                                                                                  You are using an out of date browser. It may not display this or other websites correctly.
                                                                                  You should upgrade or use an alternative browser.
                                                                                  \n\n\n\n\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Info Latex Upgrade - Physics Forum Powered by MathJax v3

                                                                                  \n\n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\t
                                                                                    \n\t\t
                                                                                  • \n\t\t\t\n\t\t\tThread starter\n\n\t\t\tchip\n\t\t
                                                                                  • \n\t\t
                                                                                  • \n\t\t\t\n\t\t\tStart date\n\n\t\t\t\n\t\t
                                                                                  • \n\n\t
                                                                                  \n
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\n\t\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t
                                                                                  \n\n\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"chip\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  chip

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2019
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  34 Posts | 39+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Washington
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.
                                                                                  \n
                                                                                  \n

                                                                                  Insert Math Editor​

                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!
                                                                                  \n
                                                                                  \nAnd then you can insert the math as either a Block or Inline.
                                                                                  \n
                                                                                  \nScreenshots below:
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t2 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"chip\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  chip

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2019
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  34 Posts | 39+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Washington
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t

                                                                                  Writing Math Equations​

                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.
                                                                                  \n
                                                                                  \nSame as before, you can wrap your Latex equations with any of the following tags:
                                                                                  \n
                                                                                  \n

                                                                                  Block Math​

                                                                                  \n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [MATH]      [/MATH]\n[LATEX]     [/LATEX]\n[TEX]       [/TEX]\n$$          $$
                                                                                  \n\t
                                                                                  \n

                                                                                  \n

                                                                                  Inline Math​

                                                                                  \n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [IMATH]     [/IMATH]\n[ILATEX]    [/ILATEX]\n[ITEX]      [/ITEX]\n##          ##
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t1 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"chip\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  chip

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2019
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  34 Posts | 39+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Washington
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n\n Last edited: \n\n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  And some example Latex Equations, with the math expressions used for writing, to see it working...
                                                                                  \n
                                                                                  \nNewton's Second Law of Motion
                                                                                  \n[math]\\vec{F} = m\\vec{a}[/math]
                                                                                  \n
                                                                                  \n\n\t\\vec{F} = m\\vec{a}\n\n\n
                                                                                  \n
                                                                                  \nGauss's Law for Electrcity
                                                                                  \n[math]\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}[/math]
                                                                                  \n
                                                                                  \n\n\t\\nabla \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}\n\n\n
                                                                                  \n
                                                                                  \nEinstein's Field Equations of General Relativity
                                                                                  \n[math]G_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}[/math]
                                                                                  \n
                                                                                  \n\n\tG_{\\mu\\nu} + \\Lambda g_{\\mu\\nu} = \\frac{8\\pi G}{c^4} T_{\\mu\\nu}\n\n\n
                                                                                  \n
                                                                                  \nThe Dirac Equation
                                                                                  \n[math](i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0[/math]
                                                                                  \n
                                                                                  \n\n\t(i\\gamma^\\mu \\partial_\\mu - m)\\psi = 0\n\n\n
                                                                                  \n
                                                                                  \nThe Schr\u00f6dinger Equation in Quantum Mechanics (Time-Dependent Form)
                                                                                  \n[math]i\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)[/math]
                                                                                  \n
                                                                                  \n\n\ti\\hbar\\frac{\\partial}{\\partial t}\\Psi(\\mathbf{r}, t) = \\hat{H}\\Psi(\\mathbf{r}, t)\n\n\n
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t2 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"chip\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  chip

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2019
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  34 Posts | 39+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Washington
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  Long Math Equations
                                                                                  \nFor very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...
                                                                                  \n
                                                                                  \nFor example, here is a very long equation without the align tags used in MathJax v3:
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \nAnd this is how the equation looks with the horizontal scrollbar:
                                                                                  \n
                                                                                  \n\n\t\nP(\\text{16 out of 20}) = \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) = \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) = \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) = \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) = \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\n\n\n
                                                                                  \n
                                                                                  \nThe better way to write the exact same equation would be to add the align tags used in MathJax v3, to recognize the \\\\ as line breaks:
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \nAnd then it display in a more readable format, as seen here:
                                                                                  \n
                                                                                  \n\n\t\n\\begin{align*}\nP(\\text{16 out of 20}) &= \\frac{20!}{16! \\times 4!} \\times 0.85^{16} \\times 0.15^{4} = 0.182122 \\\\\nP(\\text{17 out of 20}) &= \\frac{20!}{17! \\times 3!} \\times 0.85^{17} \\times 0.15^{3} = 0.242829 \\\\\nP(\\text{18 out of 20}) &= \\frac{20!}{18! \\times 2!} \\times 0.85^{18} \\times 0.15^{2} = 0.229338 \\\\\nP(\\text{19 out of 20}) &= \\frac{20!}{19! \\times 1!} \\times 0.85^{19} \\times 0.15^{1} = 0.136798 \\\\\nP(\\text{20 out of 20}) &= \\frac{20!}{20! \\times 0!} \\times 0.85^{20} \\times 0.15^{0} = 0.0387595\n\\end{align*}\n\n\n\n
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t2 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"chip\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  chip

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2019
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  34 Posts | 39+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Washington
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t

                                                                                  Writing Physics Equations​

                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.
                                                                                  \n
                                                                                  \nHere are a few physics-related examples:
                                                                                  \n
                                                                                  \nDerivatives
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\\frac{d}{dx} f(x) \\quad \\text{versus} \\quad \\dv{f}{x}\n\n\n
                                                                                  \n
                                                                                  \nPartial Derivatives
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\\frac{\\partial}{\\partial x} f(x,y) \\quad \\text{versus} \\quad \\pdv{f}{x}\n\n\n
                                                                                  \n
                                                                                  \nVectors
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\\vec{v} \\quad \\text{versus} \\quad \\vb{v} \\quad \\text{and} \\quad \\vec{v} \\cdot \\vec{w} \\quad \\text{versus} \\quad \\vb{v} \\vdot \\vb{w}\n\n\n
                                                                                  \n
                                                                                  \nGradient, Divergence, Curl
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}[/math]\n[math]\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}[/math]\n[math]\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\\vec{\\nabla} \\phi \\quad \\text{versus} \\quad \\grad{\\phi}\n\n\n
                                                                                  \n\n\t\\vec{\\nabla} \\cdot \\vec{v} \\quad \\text{versus} \\quad \\div{\\vb{v}}\n\n\n
                                                                                  \n\n\t\\vec{\\nabla} \\times \\vec{v} \\quad \\text{versus} \\quad \\curl{\\vb{v}}\n\n\n
                                                                                  \n
                                                                                  \nBra-Ket Notation
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\\langle \\psi | \\phi \\rangle \\quad \\text{versus} \\quad \\braket{\\psi}{\\phi}\n\n\n
                                                                                  \n
                                                                                  \nCommutators and Anticommutators
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math][\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}[/math]\n[math]\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t[\\hat{A}, \\hat{B}] \\quad \\text{versus} \\quad \\comm{\\hat{A}}{\\hat{B}}\n\n\n
                                                                                  \n\n\t\\{\\hat{A}, \\hat{B}\\} \\quad \\text{versus} \\quad \\acomm{\\hat{A}}{\\hat{B}}\n\n\n
                                                                                  \n
                                                                                  \nMatrices
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t\n\\begin{pmatrix}\na & b \\\\\nc & d\n\\end{pmatrix} \\quad \\text{versus} \\quad \\mqty(a & b \\\\ c & d)\n\n\n\n
                                                                                  \n
                                                                                  \nDirac Notation (Ket, Bra, Operators)
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}[/math]\n[math]\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}[/math]\n[math]\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\t|\\psi\\rangle \\quad \\text{versus} \\quad \\ket{\\psi}\n\n\n
                                                                                  \n\n\t\\langle\\psi| \\quad \\text{versus} \\quad \\bra{\\psi}\n\n\n
                                                                                  \n\n\t\\hat{H}|\\psi\\rangle \\quad \\text{versus} \\quad \\op{H}{\\psi}\n\n\n
                                                                                  \n
                                                                                  \nQuick Quadratic Equation
                                                                                  \n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\tCode:\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  [math]ax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)[/math]
                                                                                  \n\t
                                                                                  \n

                                                                                  \n\n\tax^2 + bx + c = 0 \\quad \\text{versus} \\quad \\qty(a x^2 + b x + c = 0)\n\n\n
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t1 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\t\"benit13\"\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  benit13

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Oct 2017
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  1K Posts | 768+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  Glasgow
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  This is awesome!
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t2 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\t\t\t\t\n\n\n\t\t\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\n\n\t\t\t\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\t\t\n\t\t\tK\n\t\t\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  kiwiheretic

                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  Joined Nov 2013
                                                                                  \n\n\n\n\n\t\t\t\t\t\t
                                                                                  852 Posts | 104+
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  New Zealand
                                                                                  \n\n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\t\t\n\n\t\t\n\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  That looks nice!
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                   
                                                                                  \n\n\n\n\t\t
                                                                                  \n\n\n\n\n\n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t
                                                                                    \n\n\t\t\t
                                                                                  • \"Like\"
                                                                                  • \n\n\t\t
                                                                                  \n\n\n\nReactions:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t2 users\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  \n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\t\t
                                                                                  \n\t
                                                                                  \n\n\n\t\t
                                                                                  \n\n\n\n\n\n\t\t\t\t\t\n\n\n\t\t
                                                                                  \n\n\n\n\n\n
                                                                                  \n\n\n\n\n\t\n\t\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  \n\n\n\n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n\n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t
                                                                                  \n\n\n\n\n\n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t\n\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\n\n\t\n\n\n\n\n\n\n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\n\n\t\t
                                                                                  \n\n\t\t\n\n\n\n\t\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\t\n\n\n\n\n\n\n\n\t\t\t\n\n\n\n\n\n\n\n\n\n\t\t\t\n\n\n\n\t\n\t\n\n"} diff --git a/bench/data/groundtruth/math_stackexchange_1.jsonl b/bench/data/groundtruth/math_stackexchange_1.jsonl new file mode 100644 index 00000000..097c6eec --- /dev/null +++ b/bench/data/groundtruth/math_stackexchange_1.jsonl @@ -0,0 +1 @@ +{"content_list": [[{"type": "paragraph", "raw_content": "
                                                                                  \n Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.\n

                                                                                  Sign up
                                                                                  ", "content": [{"c": "Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required. Sign up", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Here's how it works:
                                                                                  ", "content": [{"c": "Here's how it works:", "t": "text"}]}, {"type": "list", "raw_content": "
                                                                                  1. Anybody can ask a question\n
                                                                                  2. Anybody can answer\n
                                                                                  3. The best answers are voted up and rise to the top\n
                                                                                  ", "content": {"items": [[[{"c": "Anybody can ask a question\n ", "t": "text"}]], [[{"c": "Anybody can answer\n ", "t": "text"}]], [[{"c": "The best answers are voted up and rise to the top\n ", "t": "text"}]]], "ordered": true}}, {"type": "table", "raw_content": "

                                                                                  I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime?

                                                                                  4
                                                                                  Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$.\n \u2013\u00a0Michael HardyAug 2 '13 at 22:11
                                                                                  5
                                                                                  Wolfram Alpha says that $83^{27}+1= 2^2\u00d73^4\u00d77\u00d7109\u00d7757\u00d72269\u00d79613\u00d749339\u00d72208799\u00d714685985270709080390792801$. Perhaps it's fun to try to prove that 3 and 7 are factors.\n \u2013\u00a0lhfAug 2 '13 at 22:13
                                                                                  51
                                                                                  The number is EVEN!\n \u2013\u00a0AliAug 3 '13 at 5:37
                                                                                  3
                                                                                  @Joseph It is \"well-known\" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself.\n \u2013\u00a0Jeppe Stig NielsenAug 3 '13 at 6:48
                                                                                  5
                                                                                  If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite.\n \u2013\u00a0Ross MillikanAug 3 '13 at 13:04
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>17<br>down vote<br>favorite<br>583^{27} + 1
                                                                                  4<br>Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$.<br>Michael Hardy<br>Aug 2 '13 at 22:11<br>5<br>Wolfram Alpha<br>says<br>lhf<br>Aug 2 '13 at 22:13<br>51<br>The number is EVEN!<br>Ali<br>Aug 3 '13 at 5:37<br>3<br>@Joseph It is \"well-known\" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself.<br>Jeppe Stig Nielsen<br>Aug 3 '13 at 6:48<br>5<br>If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite.<br>Ross Millikan<br>Aug 3 '13 at 13:04<br>|<br>show<br>8
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  $83$ is odd, so is any power of $83$. Hence $83^{27}+1$ is even, but the only even prime number is $2$ and this number is not $2$.

                                                                                  More generally, if $a,k\\in\\mathbb N$ and $k$ is odd, then \n$$a^k+1\\equiv (-1)^k+1\\equiv 0\\pmod{a+1}$$\nSo $a+1\\mid a^k+1$. In this case this yields $84=2^2\\cdot 3\\cdot 7$ as divisor.

                                                                                  3
                                                                                  Your last statement can also be seen by geometric series: $(1+x+\\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right.\n \u2013\u00a0nayrbAug 2 '13 at 21:52
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>68<br>down vote<br>accepted83<br>83<br>83^{27}+1<br>2<br>2<br>a,k\\in\\mathbb N<br>k<br>a+1\\mid a^k+1<br>84=2^2\\cdot 3\\cdot 7
                                                                                  3<br>Your last statement can also be seen by geometric series: $(1+x+\\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right.<br>nayrb<br>Aug 2 '13 at 21:52<br>add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>2<br>down voteLet's ask WolframAlpha
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "code", "raw_content": "PrimeQ[83^27 + 1]", "inline": false, "content": {"code_content": "PrimeQ[83^27 + 1]", "by": "tag_code"}}, {"type": "table", "raw_content": "

                                                                                  is $6\\,532\\,937\\,361\\,590\\,551\\,025\\,727\\,805\\,459\\,013\\,652\\,074\\,798\\,022\\,177\\,030\\,828$ a prime number?

                                                                                  $83^{27} + 1$ is not a prime number

                                                                                  $2^2 \\times 3^4 \\times 7 \\times 109 \\times 757 \\times 2269 \\times 9613 \\times 49339 \\times 2208799 \\times 14685985270709080390792801 \\space\\text{(14 prime factors, 10 distinct)}$


                                                                                  However, using basic knowledge that an odd times an odd is always an odd ($3 \\times 3 = 9$), we see that $83$ (an odd number) raised to any power is an odd number. Then we add one to it and get an even number.

                                                                                  Being even (and obviously not equal to $2$), the definition of a prime tells us that the number is not prime because it is divisible by $2$ (my words):

                                                                                  prime (noun):

                                                                                  1. Any natural number, greater than $1$, that, when divided by any natural number, greater than $1$, other than itself or $1$ does not result in a natural number.
                                                                                  2. Any \"natural number greater than $1$ that has no positive divisors other than $1$ and itself.\" (Wikipedia article \"prime number\")
                                                                                  ", "content": {"html": "
                                                                                  6\\,532\\,937\\,361\\,590\\,551\\,025\\,727\\,805\\,459\\,013\\,652\\,074\\,798\\,022\\,177\\,030\\,828<br>2^2 \\times 3^4 \\times 7 \\times 109 \\times 757 \\times 2269 \\times 9613 \\times 49339 \\times 2208799 \\times 14685985270709080390792801 \\space\\text{(14 prime factors, 10 distinct)}
                                                                                  add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  well it is divisible by $84$ and in general $\\forall a,m\\in\\mathbb {N}$ we have\n$(a+1)\\mid (a^{2m+1}+1)$ So....

                                                                                  ", "content": {"html": "
                                                                                  up vote<br>2<br>down vote84<br>\\forall a,m\\in\\mathbb {N}<br>(a+1)\\mid (a^{2m+1}+1)
                                                                                  add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  The only prime numbers of the form $a^x+b^x$, occur when $x$ is a power of two. This does not guarantee a prime, but if $x$ is not a power of $2$, then the number has algebraic factors.

                                                                                  In practice, there is an algebraic divisor of $a^n-b^n$, for each $m$ that divides $n$. For the equation $a^n+b^n$, one would look for divisors of $2n$ that don't divide $n$. Inthe question we have $n=27$, so the divisors of 54 that don't divide 27. That is, 2, 6, 18 and 54. For powers of 2, there is only one number that divides $2n$ but not $n$.

                                                                                  Extebded answer to include this.\n \u2013\u00a0wendy.kriegerAug 3 '13 at 23:44
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>4<br>down votea^x+b^x<br>x<br>x<br>2<br>a^n-b^n<br>m<br>n<br>a^n+b^n<br>2n<br>n<br>n=27<br>2n<br>n
                                                                                  Extebded answer to include this.<br>wendy.krieger<br>Aug 3 '13 at 23:44<br>add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  We have a chain of divisibilities, based on the fact that $(a-b)\\mid(a^n-b^n)$,\n$$\n83^1-(-1)^1\\mid83^3-(-1)^3\\mid83^9-(-1)^9\\mid83^{27}-(-1)^{27}=83^{27}+1\n$$\nUsing this chain, we get, using $a^3-b^3=(a-b)(a^2+ab+b^2)$,\n$$\n\\begin{align}\n83^{27}+1\n&=\\frac{83^{27}+1}{83^9+1}\\times\\frac{83^9+1}{83^3+1}\\times\\frac{83^3+1}{83^1+1}\\times\\left(83^1+1\\right)\\\\\n&=\\left(83^{18}-83^9+1\\right)\\times\\left(83^6-83^3+1\\right)\\times\\left(83^2-83^1+1\\right)\\times\\left(83^1+1\\right)\\\\[9pt]\n&=34946659039493167203883141969862007\\times326939801583\\times6807\\times84\n\\end{align}\n$$\nThus, $83^{27}+1$ is not prime.

                                                                                  Note: none of these factors are guaranteed to be prime, just factors.

                                                                                  3
                                                                                  Would the downvoter care to comment?\n \u2013\u00a0robjohn\u2666Aug 3 '13 at 19:37
                                                                                  I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1\n \u2013\u00a0AsimovSep 28 '14 at 18:32
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>13<br>down vote(a-b)\\mid(a^n-b^n)<br>a^3-b^3=(a-b)(a^2+ab+b^2)<br>83^{27}+1
                                                                                  3<br>Would the downvoter care to comment?<br>robjohn<br>\u2666<br>Aug 3 '13 at 19:37<br>I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1<br>Asimov<br>Sep 28 '14 at 18:32<br>add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  $$\n83^{27} + 1 = \\Big(83^9\\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \\Big(83^9+1\\Big)\\Big((83^9)^2-83^9+1\\Big).\n$$

                                                                                  So, no, it's not prime.

                                                                                  PS (added later): Some point out that it's obviously an even number, so it's not prime. But what I do above would work just as well if it were $84$ rather than $83$.

                                                                                  ", "content": {"html": "
                                                                                  up vote<br>40<br>down vote83^{27} + 1 = \\Big(83^9\\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \\Big(83^9+1\\Big)\\Big((83^9)^2-83^9+1\\Big).\n<br>So, no, it's not prime.<br>PS (added later):
                                                                                  add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  Note that $83\\equiv -1\\pmod{84}$. Thus $83^{27}+1\\equiv 0\\pmod{84}$.

                                                                                  It follows that our number is divisible by all the divisors of $84$.

                                                                                  It is also non-prime in other ways. For let $x=83^3$. Then our number is $x^9+1$, so is divisible by $x+1$. Similarly, we could let $y=83^9$, and conclude that our number is divisible by $y+1$.

                                                                                  Seriously non-prime!

                                                                                  ", "content": {"html": "
                                                                                  up vote<br>23<br>down vote83\\equiv -1\\pmod{84}<br>83^{27}+1\\equiv 0\\pmod{84}<br>84<br>x=83^3<br>x^9+1<br>x+1<br>y=83^9<br>y+1
                                                                                  add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  It is obviously not prime. $83$ is odd, therefore $83^{27}$ is odd, hence $83^{27}+1$ is even and not prime.

                                                                                  ", "content": {"html": "
                                                                                  up vote<br>14<br>down vote83<br>83^{27}<br>83^{27}+1
                                                                                  add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "table", "raw_content": "

                                                                                  Well, it is an even number, so...

                                                                                  1
                                                                                  I downvoted your answer on the basis that it doesn't provide the reason behind why it is even. For example, it doesn't say that since $83$ is odd, so the powers of it must also be odd and thus, odd + 1 must be even.\n \u2013\u00a0Jeel ShahNov 5 '13 at 3:37
                                                                                  6
                                                                                  @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial after it's been remarked that the number is odd (and thus the OP begins to think \"why?\" and he completes the answer by himself). Think of this, perhaps you'll realize you rush too much to do downvote...\n \u2013\u00a0DonAntonioNov 5 '13 at 4:51
                                                                                  2
                                                                                  I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers.\n \u2013\u00a0Jeel ShahNov 5 '13 at 14:03
                                                                                  I just love the precise nature of this answer. +1\n \u2013\u00a0AsimovSep 28 '14 at 18:31
                                                                                  ", "content": {"html": "
                                                                                  up vote<br>46<br>down voteWell, it is an even number, so...
                                                                                  1<br>I downvoted your answer on the basis that it doesn't provide the reason behind<br>why<br>Jeel Shah<br>Nov 5 '13 at 3:37<br>6<br>@gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial<br>after<br>DonAntonio<br>Nov 5 '13 at 4:51<br>2<br>I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers.<br>Jeel Shah<br>Nov 5 '13 at 14:03<br>I just love the precise nature of this answer. +1<br>Asimov<br>Sep 28 '14 at 18:31<br>add a comment<br>|
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

                                                                                  protected by Community\u2666Jun 21 '14 at 19:06

                                                                                  ", "content": {"title_content": "protected by Community \u2666 Jun 21 '14 at 19:06", "level": "2"}}, {"type": "paragraph", "raw_content": "

                                                                                  \nThank you for your interest in this question. \nBecause it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.\n

                                                                                  \nWould you like to answer one of these unanswered questions instead?\n

                                                                                  ", "content": [{"c": "Thank you for your interest in this question. \nBecause it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site. Would you like to answer one of these unanswered questions instead?", "t": "text"}]}]], "main_html": "
                                                                                  \n Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.\n

                                                                                  Sign up
                                                                                  Here's how it works:
                                                                                  1. Anybody can ask a question\n
                                                                                  2. Anybody can answer\n
                                                                                  3. The best answers are voted up and rise to the top\n

                                                                                  I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime?

                                                                                  4
                                                                                  Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$.\n \u2013\u00a0Michael HardyAug 2 '13 at 22:11
                                                                                  5
                                                                                  Wolfram Alpha says that $83^{27}+1= 2^2\u00d73^4\u00d77\u00d7109\u00d7757\u00d72269\u00d79613\u00d749339\u00d72208799\u00d714685985270709080390792801$. Perhaps it's fun to try to prove that 3 and 7 are factors.\n \u2013\u00a0lhfAug 2 '13 at 22:13
                                                                                  51
                                                                                  The number is EVEN!\n \u2013\u00a0AliAug 3 '13 at 5:37
                                                                                  3
                                                                                  @Joseph It is \"well-known\" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself.\n \u2013\u00a0Jeppe Stig NielsenAug 3 '13 at 6:48
                                                                                  5
                                                                                  If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite.\n \u2013\u00a0Ross MillikanAug 3 '13 at 13:04

                                                                                  $83$ is odd, so is any power of $83$. Hence $83^{27}+1$ is even, but the only even prime number is $2$ and this number is not $2$.

                                                                                  More generally, if $a,k\\in\\mathbb N$ and $k$ is odd, then \n$$a^k+1\\equiv (-1)^k+1\\equiv 0\\pmod{a+1}$$\nSo $a+1\\mid a^k+1$. In this case this yields $84=2^2\\cdot 3\\cdot 7$ as divisor.

                                                                                  3
                                                                                  Your last statement can also be seen by geometric series: $(1+x+\\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right.\n \u2013\u00a0nayrbAug 2 '13 at 21:52
                                                                                  PrimeQ[83^27 + 1]

                                                                                  is $6\\,532\\,937\\,361\\,590\\,551\\,025\\,727\\,805\\,459\\,013\\,652\\,074\\,798\\,022\\,177\\,030\\,828$ a prime number?

                                                                                  $83^{27} + 1$ is not a prime number

                                                                                  $2^2 \\times 3^4 \\times 7 \\times 109 \\times 757 \\times 2269 \\times 9613 \\times 49339 \\times 2208799 \\times 14685985270709080390792801 \\space\\text{(14 prime factors, 10 distinct)}$


                                                                                  However, using basic knowledge that an odd times an odd is always an odd ($3 \\times 3 = 9$), we see that $83$ (an odd number) raised to any power is an odd number. Then we add one to it and get an even number.

                                                                                  Being even (and obviously not equal to $2$), the definition of a prime tells us that the number is not prime because it is divisible by $2$ (my words):

                                                                                  prime (noun):

                                                                                  1. Any natural number, greater than $1$, that, when divided by any natural number, greater than $1$, other than itself or $1$ does not result in a natural number.
                                                                                  2. Any \"natural number greater than $1$ that has no positive divisors other than $1$ and itself.\" (Wikipedia article \"prime number\")

                                                                                  well it is divisible by $84$ and in general $\\forall a,m\\in\\mathbb {N}$ we have\n$(a+1)\\mid (a^{2m+1}+1)$ So....

                                                                                  The only prime numbers of the form $a^x+b^x$, occur when $x$ is a power of two. This does not guarantee a prime, but if $x$ is not a power of $2$, then the number has algebraic factors.

                                                                                  In practice, there is an algebraic divisor of $a^n-b^n$, for each $m$ that divides $n$. For the equation $a^n+b^n$, one would look for divisors of $2n$ that don't divide $n$. Inthe question we have $n=27$, so the divisors of 54 that don't divide 27. That is, 2, 6, 18 and 54. For powers of 2, there is only one number that divides $2n$ but not $n$.

                                                                                  Extebded answer to include this.\n \u2013\u00a0wendy.kriegerAug 3 '13 at 23:44

                                                                                  We have a chain of divisibilities, based on the fact that $(a-b)\\mid(a^n-b^n)$,\n$$\n83^1-(-1)^1\\mid83^3-(-1)^3\\mid83^9-(-1)^9\\mid83^{27}-(-1)^{27}=83^{27}+1\n$$\nUsing this chain, we get, using $a^3-b^3=(a-b)(a^2+ab+b^2)$,\n$$\n\\begin{align}\n83^{27}+1\n&=\\frac{83^{27}+1}{83^9+1}\\times\\frac{83^9+1}{83^3+1}\\times\\frac{83^3+1}{83^1+1}\\times\\left(83^1+1\\right)\\\\\n&=\\left(83^{18}-83^9+1\\right)\\times\\left(83^6-83^3+1\\right)\\times\\left(83^2-83^1+1\\right)\\times\\left(83^1+1\\right)\\\\[9pt]\n&=34946659039493167203883141969862007\\times326939801583\\times6807\\times84\n\\end{align}\n$$\nThus, $83^{27}+1$ is not prime.

                                                                                  Note: none of these factors are guaranteed to be prime, just factors.

                                                                                  3
                                                                                  Would the downvoter care to comment?\n \u2013\u00a0robjohn\u2666Aug 3 '13 at 19:37
                                                                                  I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1\n \u2013\u00a0AsimovSep 28 '14 at 18:32

                                                                                  $$\n83^{27} + 1 = \\Big(83^9\\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \\Big(83^9+1\\Big)\\Big((83^9)^2-83^9+1\\Big).\n$$

                                                                                  So, no, it's not prime.

                                                                                  PS (added later): Some point out that it's obviously an even number, so it's not prime. But what I do above would work just as well if it were $84$ rather than $83$.

                                                                                  Note that $83\\equiv -1\\pmod{84}$. Thus $83^{27}+1\\equiv 0\\pmod{84}$.

                                                                                  It follows that our number is divisible by all the divisors of $84$.

                                                                                  It is also non-prime in other ways. For let $x=83^3$. Then our number is $x^9+1$, so is divisible by $x+1$. Similarly, we could let $y=83^9$, and conclude that our number is divisible by $y+1$.

                                                                                  Seriously non-prime!

                                                                                  It is obviously not prime. $83$ is odd, therefore $83^{27}$ is odd, hence $83^{27}+1$ is even and not prime.

                                                                                  Well, it is an even number, so...

                                                                                  1
                                                                                  I downvoted your answer on the basis that it doesn't provide the reason behind why it is even. For example, it doesn't say that since $83$ is odd, so the powers of it must also be odd and thus, odd + 1 must be even.\n \u2013\u00a0Jeel ShahNov 5 '13 at 3:37
                                                                                  6
                                                                                  @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial after it's been remarked that the number is odd (and thus the OP begins to think \"why?\" and he completes the answer by himself). Think of this, perhaps you'll realize you rush too much to do downvote...\n \u2013\u00a0DonAntonioNov 5 '13 at 4:51
                                                                                  2
                                                                                  I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers.\n \u2013\u00a0Jeel ShahNov 5 '13 at 14:03
                                                                                  I just love the precise nature of this answer. +1\n \u2013\u00a0AsimovSep 28 '14 at 18:31

                                                                                  protected by Community\u2666Jun 21 '14 at 19:06

                                                                                  \nThank you for your interest in this question. \nBecause it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.\n

                                                                                  \nWould you like to answer one of these unanswered questions instead?\n

                                                                                  ", "statics": {"paragraph": 3, "paragraph.text": 3, "list": 1, "list.text": 3, "table": 11, "code": 1, "title": 1}, "url": "https://math.stackexchange.com/questions/458323/is-8327-1-a-prime-number?answertab=active", "content": "Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required. Sign up\n\nHere's how it works:\n\n1. Anybody can ask a question\n2. Anybody can answer\n3. The best answers are voted up and rise to the top\n\n| up vote
                                                                                  17
                                                                                  down vote
                                                                                  favorite
                                                                                  5 | 83^{27} + 1 |\n|---|---|\n| | 4
                                                                                  Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$.
                                                                                  Michael Hardy
                                                                                  Aug 2 '13 at 22:11
                                                                                  5
                                                                                  Wolfram Alpha
                                                                                  says
                                                                                  lhf
                                                                                  Aug 2 '13 at 22:13
                                                                                  51
                                                                                  The number is EVEN!
                                                                                  Ali
                                                                                  Aug 3 '13 at 5:37
                                                                                  3
                                                                                  @Joseph It is \"well-known\" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself.
                                                                                  Jeppe Stig Nielsen
                                                                                  Aug 3 '13 at 6:48
                                                                                  5
                                                                                  If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite.
                                                                                  Ross Millikan
                                                                                  Aug 3 '13 at 13:04
                                                                                  |
                                                                                  show
                                                                                  8 |\n\n| up vote
                                                                                  68
                                                                                  down vote
                                                                                  accepted | 83
                                                                                  83
                                                                                  83^{27}+1
                                                                                  2
                                                                                  2
                                                                                  a,k\\in\\mathbb N
                                                                                  k
                                                                                  a+1\\mid a^k+1
                                                                                  84=2^2\\cdot 3\\cdot 7 |\n|---|---|\n| | 3
                                                                                  Your last statement can also be seen by geometric series: $(1+x+\\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right.
                                                                                  nayrb
                                                                                  Aug 2 '13 at 21:52
                                                                                  add a comment
                                                                                  | |\n\n| up vote
                                                                                  2
                                                                                  down vote | Let's ask WolframAlpha |\n|---|---|\n\n```\nPrimeQ[83^27 + 1]\n```\n\n| 6\\,532\\,937\\,361\\,590\\,551\\,025\\,727\\,805\\,459\\,013\\,652\\,074\\,798\\,022\\,177\\,030\\,828
                                                                                  2^2 \\times 3^4 \\times 7 \\times 109 \\times 757 \\times 2269 \\times 9613 \\times 49339 \\times 2208799 \\times 14685985270709080390792801 \\space\\text{(14 prime factors, 10 distinct)} | |\n|---|---|\n| | add a comment
                                                                                  | |\n\n| up vote
                                                                                  2
                                                                                  down vote | 84
                                                                                  \\forall a,m\\in\\mathbb {N}
                                                                                  (a+1)\\mid (a^{2m+1}+1) |\n|---|---|\n| | add a comment
                                                                                  | |\n\n| up vote
                                                                                  4
                                                                                  down vote | a^x+b^x
                                                                                  x
                                                                                  x
                                                                                  2
                                                                                  a^n-b^n
                                                                                  m
                                                                                  n
                                                                                  a^n+b^n
                                                                                  2n
                                                                                  n
                                                                                  n=27
                                                                                  2n
                                                                                  n |\n|---|---|\n| | Extebded answer to include this.
                                                                                  wendy.krieger
                                                                                  Aug 3 '13 at 23:44
                                                                                  add a comment
                                                                                  | |\n\n| up vote
                                                                                  13
                                                                                  down vote | (a-b)\\mid(a^n-b^n)
                                                                                  a^3-b^3=(a-b)(a^2+ab+b^2)
                                                                                  83^{27}+1 |\n|---|---|\n| | 3
                                                                                  Would the downvoter care to comment?
                                                                                  robjohn
                                                                                  \u2666
                                                                                  Aug 3 '13 at 19:37
                                                                                  I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1
                                                                                  Asimov
                                                                                  Sep 28 '14 at 18:32
                                                                                  add a comment
                                                                                  | |\n\n| up vote
                                                                                  40
                                                                                  down vote | 83^{27} + 1 = \\Big(83^9\\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \\Big(83^9+1\\Big)\\Big((83^9)^2-83^9+1\\Big).\n
                                                                                  So, no, it's not prime.
                                                                                  PS (added later): |\n|---|---|\n| | add a comment
                                                                                  | |\n\n| up vote
                                                                                  23
                                                                                  down vote | 83\\equiv -1\\pmod{84}
                                                                                  83^{27}+1\\equiv 0\\pmod{84}
                                                                                  84
                                                                                  x=83^3
                                                                                  x^9+1
                                                                                  x+1
                                                                                  y=83^9
                                                                                  y+1 |\n|---|---|\n| | add a comment
                                                                                  | |\n\n| up vote
                                                                                  14
                                                                                  down vote | 83
                                                                                  83^{27}
                                                                                  83^{27}+1 |\n|---|---|\n| | add a comment
                                                                                  | |\n\n| up vote
                                                                                  46
                                                                                  down vote | Well, it is an even number, so... |\n|---|---|\n| | 1
                                                                                  I downvoted your answer on the basis that it doesn't provide the reason behind
                                                                                  why
                                                                                  Jeel Shah
                                                                                  Nov 5 '13 at 3:37
                                                                                  6
                                                                                  @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial
                                                                                  after
                                                                                  DonAntonio
                                                                                  Nov 5 '13 at 4:51
                                                                                  2
                                                                                  I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers.
                                                                                  Jeel Shah
                                                                                  Nov 5 '13 at 14:03
                                                                                  I just love the precise nature of this answer. +1
                                                                                  Asimov
                                                                                  Sep 28 '14 at 18:31
                                                                                  add a comment
                                                                                  | |\n\n## protected by Community \u2666 Jun 21 '14 at 19:06\n\nThank you for your interest in this question. \nBecause it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site. Would you like to answer one of these unanswered questions instead?\n", "html": "\r\n\r\n\r\n\r\nfactoring - Is $83^{27} +1 $ a prime number? - Mathematics Stack Exchange\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n
                                                                                  \r\n\r\n
                                                                                  \r\n\r\n\r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  \r\nyour communities

                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\nSign up or log in to customize your list.\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n\r\n\r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.\r\n
                                                                                  \r\n
                                                                                  \r\n Sign up\r\n
                                                                                  \r\n
                                                                                  \r\n Here's how it works:\r\n
                                                                                    \r\n
                                                                                  1. Anybody can ask a question\r\n
                                                                                  2. \r\n
                                                                                  3. Anybody can answer\r\n
                                                                                  4. \r\n
                                                                                  5. The best answers are voted up and rise to the top\r\n
                                                                                  6. \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n\t\t\t\r\n\t\t\t
                                                                                  \r\n\r\n\t\t\t\r\n\r\n
                                                                                  \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 17\r\n down vote\r\n\r\n favorite\r\n
                                                                                  5
                                                                                  \r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n

                                                                                  I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime?

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Cole Johnson\r\n
                                                                                  \r\n 531722\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n asked Aug 2 '13 at 21:35\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n milo\r\n
                                                                                  \r\n 373112\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 4\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$.\r\n – Michael Hardy\r\n Aug 2 '13 at 22:11\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 5\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Wolfram Alpha says that $83^{27}+1= 2^2×3^4×7×109×757×2269×9613×49339×2208799×14685985270709080390792801$. Perhaps it's fun to try to prove that 3 and 7 are factors.\r\n – lhf\r\n Aug 2 '13 at 22:13\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 51\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n The number is EVEN!\r\n – Ali\r\n Aug 3 '13 at 5:37\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 3\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n @Joseph It is "well-known" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself.\r\n – Jeppe Stig Nielsen\r\n Aug 3 '13 at 6:48\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 5\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite.\r\n – Ross Millikan\r\n Aug 3 '13 at 13:04\r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n\t\t\t
                                                                                  \r\n\r\n\t\t\t\t\r\n\t\t\t\t
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n\t\t\t\t\t\t

                                                                                  \r\n\t\t\t\t\t\t\t\t9 Answers\r\n 9\r\n\t\t\t\t\t\t

                                                                                  \r\n\t\t\t\t\t\t
                                                                                  \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n\t\t\t\t
                                                                                  \r\n\r\n\r\n\r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 68\r\n down vote\r\n\r\n\r\n\r\n accepted\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  $83$ is odd, so is any power of $83$. Hence $83^{27}+1$ is even, but the only even prime number is $2$ and this number is not $2$.

                                                                                  \n\n

                                                                                  More generally, if $a,k\\in\\mathbb N$ and $k$ is odd, then \n$$a^k+1\\equiv (-1)^k+1\\equiv 0\\pmod{a+1}$$\nSo $a+1\\mid a^k+1$. In this case this yields $84=2^2\\cdot 3\\cdot 7$ as divisor.

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 21:37\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Tomas\r\n
                                                                                  \r\n 3,90111027\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\t\t
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 3\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Your last statement can also be seen by geometric series: $(1+x+\\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right.\r\n – nayrb\r\n Aug 2 '13 at 21:52\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 2\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  Let's ask WolframAlpha!

                                                                                  \n\n
                                                                                  \n

                                                                                  PrimeQ[83^27 + 1]

                                                                                  \n
                                                                                  \n\n\n\n
                                                                                  \n

                                                                                  is $6\\,532\\,937\\,361\\,590\\,551\\,025\\,727\\,805\\,459\\,013\\,652\\,074\\,798\\,022\\,177\\,030\\,828$ a prime number?

                                                                                  \n \n

                                                                                  $83^{27} + 1$ is not a prime number

                                                                                  \n \n

                                                                                  $2^2 \\times 3^4 \\times 7 \\times 109 \\times 757 \\times 2269 \\times 9613 \\times 49339 \\times 2208799 \\times 14685985270709080390792801 \\space\\text{(14 prime factors, 10 distinct)}$

                                                                                  \n
                                                                                  \n\n
                                                                                  \n\n

                                                                                  However, using basic knowledge that an odd times an odd is always an odd ($3 \\times 3 = 9$), we see that $83$ (an odd number) raised to any power is an odd number. Then we add one to it and get an even number.

                                                                                  \n\n

                                                                                  Being even (and obviously not equal to $2$), the definition of a prime tells us that the number is not prime because it is divisible by $2$ (my words):

                                                                                  \n\n
                                                                                  \n

                                                                                  prime (noun):

                                                                                  \n \n
                                                                                    \n
                                                                                  1. Any natural number, greater than $1$, that, when divided by any natural number, greater than $1$, other than itself or $1$ does not result in a natural number.
                                                                                  2. \n
                                                                                  3. Any \"natural number greater than $1$ that has no positive divisors other than $1$ and itself.\" (Wikipedia article \"prime number\")
                                                                                  4. \n
                                                                                  \n
                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 3 '13 at 22:40\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Cole Johnson\r\n
                                                                                  \r\n 531722\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n \r\n \r\n\t\t
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 2\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  well it is divisible by $84$ and in general $\\forall a,m\\in\\mathbb {N}$ we have\n$(a+1)\\mid (a^{2m+1}+1)$ So....

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Nov 14 '13 at 18:39\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n tensor\r\n
                                                                                  \r\n 1094\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n \r\n \r\n\t\t
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 4\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  The only prime numbers of the form $a^x+b^x$, occur when $x$ is a power of two. This does not guarantee a prime, but if $x$ is not a power of $2$, then the number has algebraic factors.

                                                                                  \n\n

                                                                                  In practice, there is an algebraic divisor of $a^n-b^n$, for each $m$ that divides $n$. For the equation $a^n+b^n$, one would look for divisors of $2n$ that don't divide $n$. Inthe question we have $n=27$, so the divisors of 54 that don't divide 27. That is, 2, 6, 18 and 54. For powers of 2, there is only one number that divides $2n$ but not $n$.

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 3 '13 at 11:43\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n wendy.krieger\r\n
                                                                                  \r\n 4,2301921\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\t\t
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n   \r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Extebded answer to include this.\r\n – wendy.krieger\r\n Aug 3 '13 at 23:44\r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 13\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  We have a chain of divisibilities, based on the fact that $(a-b)\\mid(a^n-b^n)$,\n$$\n83^1-(-1)^1\\mid83^3-(-1)^3\\mid83^9-(-1)^9\\mid83^{27}-(-1)^{27}=83^{27}+1\n$$\nUsing this chain, we get, using $a^3-b^3=(a-b)(a^2+ab+b^2)$,\n$$\n\\begin{align}\n83^{27}+1\n&=\\frac{83^{27}+1}{83^9+1}\\times\\frac{83^9+1}{83^3+1}\\times\\frac{83^3+1}{83^1+1}\\times\\left(83^1+1\\right)\\\\\n&=\\left(83^{18}-83^9+1\\right)\\times\\left(83^6-83^3+1\\right)\\times\\left(83^2-83^1+1\\right)\\times\\left(83^1+1\\right)\\\\[9pt]\n&=34946659039493167203883141969862007\\times326939801583\\times6807\\times84\n\\end{align}\n$$\nThus, $83^{27}+1$ is not prime.

                                                                                  \n\n

                                                                                  Note: none of these factors are guaranteed to be prime, just factors.

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 23:15\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n robjohn\r\n
                                                                                  \r\n 194k18223483\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 3\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Would the downvoter care to comment?\r\n – robjohn\r\n Aug 3 '13 at 19:37\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n   \r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1\r\n – Asimov\r\n Sep 28 '14 at 18:32\r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 40\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  $$\n83^{27} + 1 = \\Big(83^9\\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \\Big(83^9+1\\Big)\\Big((83^9)^2-83^9+1\\Big).\n$$

                                                                                  \n\n

                                                                                  So, no, it's not prime.

                                                                                  \n\n

                                                                                  PS (added later): Some point out that it's obviously an even number, so it's not prime. But what I do above would work just as well if it were $84$ rather than $83$.

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 22:10\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Michael Hardy\r\n
                                                                                  \r\n 144k15134324\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n \r\n \r\n\t\t
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 23\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  Note that $83\\equiv -1\\pmod{84}$. Thus $83^{27}+1\\equiv 0\\pmod{84}$.

                                                                                  \n\n

                                                                                  It follows that our number is divisible by all the divisors of $84$.

                                                                                  \n\n

                                                                                  It is also non-prime in other ways. For let $x=83^3$. Then our number is $x^9+1$, so is divisible by $x+1$. Similarly, we could let $y=83^9$, and conclude that our number is divisible by $y+1$.

                                                                                  \n\n

                                                                                  Seriously non-prime!

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 21:45\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n André Nicolas\r\n
                                                                                  \r\n 396k30342660\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n \r\n \r\n\t\t
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 14\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  It is obviously not prime. $83$ is odd, therefore $83^{27}$ is odd, hence $83^{27}+1$ is even and not prime.

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 21:38\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n John Marty\r\n
                                                                                  \r\n 1,799734\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n \r\n \r\n\t\t
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n \r\n\r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n\r\n
                                                                                  \r\n \r\n up vote\r\n 46\r\n down vote\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  Well, it is an even number, so...

                                                                                  \n
                                                                                  \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
                                                                                  \r\n \r\n \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n answered Aug 2 '13 at 21:38\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \"\"
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n DonAntonio\r\n
                                                                                  \r\n 106k859149\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\t\t \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 1\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n I downvoted your answer on the basis that it doesn't provide the reason behind why it is even. For example, it doesn't say that since $83$ is odd, so the powers of it must also be odd and thus, odd + 1 must be even.\r\n – Jeel Shah\r\n Nov 5 '13 at 3:37\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 6\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial after it's been remarked that the number is odd (and thus the OP begins to think "why?" and he completes the answer by himself). Think of this, perhaps you'll realize you rush too much to do downvote...\r\n – DonAntonio\r\n Nov 5 '13 at 4:51\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n 2\r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers.\r\n – Jeel Shah\r\n Nov 5 '13 at 14:03\r\n
                                                                                  \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n   \r\n \r\n  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n I just love the precise nature of this answer. +1\r\n – Asimov\r\n Sep 28 '14 at 18:31\r\n
                                                                                  \r\n
                                                                                  \r\n\t
                                                                                  \r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t
                                                                                  \r\n

                                                                                  protected by Community Jun 21 '14 at 19:06\r\n

                                                                                  \r\n

                                                                                  \r\nThank you for your interest in this question. \nBecause it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.\n

                                                                                  \nWould you like to answer one of these unanswered questions instead?\n

                                                                                  \r\n
                                                                                  \r\n\r\n\r\n\r\n\r\n\r\n\t\t\t\t\t\t

                                                                                  \r\nNot the answer you're looking for?\t\t\t\t\t\t\tBrowse other questions tagged prime-numbers factoring or ask your own question.\t\t\t\t\t\t

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t
                                                                                  \r\n\t\t\t\t
                                                                                  \r\n\t\t\t\t\t\t
                                                                                  \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  asked

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  2 years ago

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  viewed

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  \r\n\t\t\t 2393 times\r\n\t\t\t

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  active

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t

                                                                                  1 year ago

                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t
                                                                                  \r\n\t\t\t\t\t\t\r\n\t\t\t\r\n\r\n \r\n
                                                                                  \r\n
                                                                                  \r\n\r\n
                                                                                  \r\n \r\n\r\n\r\n\r\n\r\n\r\n
                                                                                  \r\n

                                                                                  Get the weekly newsletter! In it, you'll get:

                                                                                  \r\n
                                                                                    \r\n
                                                                                  • The week's top questions and answers
                                                                                  • \r\n
                                                                                  • Important community announcements
                                                                                  • \r\n
                                                                                  • Questions that need answers
                                                                                  • \r\n
                                                                                  \r\n
                                                                                  \r\n

                                                                                  see an example newsletter

                                                                                  \r\n
                                                                                  \r\n \r\n

                                                                                  \r\nBy subscribing, you agree to the privacy policy and terms of service.

                                                                                  \r\n\r\n
                                                                                  \r\n
                                                                                  \r\n\r\n
                                                                                  \r\n\t\t\t \r\n \r\n \r\n\r\n\t\t\t\t\r\n \r\n
                                                                                  \r\n

                                                                                  \r\n \r\n Hot Network Questions\r\n \r\n

                                                                                  \r\n \r\n\r\n \r\n more hot questions\r\n \r\n
                                                                                  \r\n\t\t
                                                                                  \r\n\t\r\n
                                                                                  \r\n \r\n
                                                                                  \t\r\n
                                                                                  \r\n\r\n\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                                                                                  \r\n Technology\r\n \r\n Life / Arts\r\n \r\n Culture / Recreation\r\n \r\n Science\r\n \r\n Other\r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  1. Stack Overflow
                                                                                  2. \r\n
                                                                                  3. Server Fault
                                                                                  4. \r\n
                                                                                  5. Super User
                                                                                  6. \r\n
                                                                                  7. Web Applications
                                                                                  8. \r\n
                                                                                  9. Ask Ubuntu
                                                                                  10. \r\n
                                                                                  11. Webmasters
                                                                                  12. \r\n
                                                                                  13. Game Development
                                                                                  14. \r\n
                                                                                  15. TeX - LaTeX
                                                                                  16. \r\n
                                                                                    \r\n
                                                                                  1. Programmers
                                                                                  2. \r\n
                                                                                  3. Unix & Linux
                                                                                  4. \r\n
                                                                                  5. Ask Different (Apple)
                                                                                  6. \r\n
                                                                                  7. WordPress Development
                                                                                  8. \r\n
                                                                                  9. Geographic Information Systems
                                                                                  10. \r\n
                                                                                  11. Electrical Engineering
                                                                                  12. \r\n
                                                                                  13. Android Enthusiasts
                                                                                  14. \r\n
                                                                                  15. Information Security
                                                                                  16. \r\n
                                                                                    \r\n
                                                                                  1. Database Administrators
                                                                                  2. \r\n
                                                                                  3. Drupal Answers
                                                                                  4. \r\n
                                                                                  5. SharePoint
                                                                                  6. \r\n
                                                                                  7. User Experience
                                                                                  8. \r\n
                                                                                  9. Mathematica
                                                                                  10. \r\n
                                                                                  11. Salesforce
                                                                                  12. \r\n
                                                                                  13. ExpressionEngine® Answers
                                                                                  14. \r\n \r\n
                                                                                  15. \r\n \r\n more (13)\r\n \r\n
                                                                                  16. \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  1. Photography
                                                                                  2. \r\n
                                                                                  3. Science Fiction & Fantasy
                                                                                  4. \r\n
                                                                                  5. Graphic Design
                                                                                  6. \r\n
                                                                                  7. Movies & TV
                                                                                  8. \r\n
                                                                                  9. Seasoned Advice (cooking)
                                                                                  10. \r\n
                                                                                  11. Home Improvement
                                                                                  12. \r\n
                                                                                  13. Personal Finance & Money
                                                                                  14. \r\n
                                                                                  15. Academia
                                                                                  16. \r\n \r\n
                                                                                  17. \r\n \r\n more (9)\r\n \r\n
                                                                                  18. \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  1. English Language & Usage
                                                                                  2. \r\n
                                                                                  3. Skeptics
                                                                                  4. \r\n
                                                                                  5. Mi Yodeya (Judaism)
                                                                                  6. \r\n
                                                                                  7. Travel
                                                                                  8. \r\n
                                                                                  9. Christianity
                                                                                  10. \r\n
                                                                                  11. Arqade (gaming)
                                                                                  12. \r\n
                                                                                  13. Bicycles
                                                                                  14. \r\n
                                                                                  15. Role-playing Games
                                                                                  16. \r\n \r\n
                                                                                  17. \r\n \r\n more (21)\r\n \r\n
                                                                                  18. \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  1. Mathematics
                                                                                  2. \r\n
                                                                                  3. Cross Validated (stats)
                                                                                  4. \r\n
                                                                                  5. Theoretical Computer Science
                                                                                  6. \r\n
                                                                                  7. Physics
                                                                                  8. \r\n
                                                                                  9. MathOverflow
                                                                                  10. \r\n
                                                                                  11. Chemistry
                                                                                  12. \r\n
                                                                                  13. Biology
                                                                                  14. \r\n \r\n
                                                                                  15. \r\n \r\n more (5)\r\n \r\n
                                                                                  16. \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  1. Stack Apps
                                                                                  2. \r\n
                                                                                  3. Meta Stack Exchange
                                                                                  4. \r\n
                                                                                  5. Area 51
                                                                                  6. \r\n
                                                                                  7. Stack Overflow Careers
                                                                                  8. \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n site design / logo © 2016 Stack Exchange Inc; user contributions licensed under cc by-sa 3.0 \r\n with attribution required\r\n
                                                                                  \r\n
                                                                                  \r\n rev 2016.4.29.3525\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n\r\n \r\n \r\n \r\n \r\n\n"} diff --git a/bench/data/groundtruth/table_1.jsonl b/bench/data/groundtruth/table_1.jsonl index 786ab487..d928441f 100644 --- a/bench/data/groundtruth/table_1.jsonl +++ b/bench/data/groundtruth/table_1.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "
                                                                                  \n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t
                                                                                  ", "content": [{"c": "Ziet u iets wat niet hoort of niet klopt?", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "Rapporteren", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  ", "content": [{"c": "Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Openingstijden

                                                                                  ", "content": {"title_content": "Openingstijden", "level": "2"}}, {"type": "table", "raw_content": "
                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  ", "content": {"html": "
                                                                                  Maandag-
                                                                                  Dinsdag-
                                                                                  Woensdag-
                                                                                  Donderdag-
                                                                                  Vrijdag-
                                                                                  Zaterdag-
                                                                                  Zondag-
                                                                                  ", "is_complex": false}}, {"type": "title", "raw_content": "

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t

                                                                                  ", "content": {"title_content": "Is Grondwerk GWY in Noordwolde uw bedrijf?", "level": "3"}}, {"type": "paragraph", "raw_content": "

                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  ", "content": [{"c": "Claim uw pagina, vul uw gegevens aan en word beter gevonden. Binnen een paar minuten geregeld en volledig gratis!", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Eigenschappen Grondwerk

                                                                                  ", "content": {"title_content": "Eigenschappen Grondwerk", "level": "2"}}, {"type": "paragraph", "raw_content": "
                                                                                  Niet bekend
                                                                                  ", "content": [{"c": "Niet bekend", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Niet bekend
                                                                                  ", "content": [{"c": "Niet bekend", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  ", "content": {"title_content": "Beoordelingen", "level": "2"}}, {"type": "title", "raw_content": "

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  ", "content": {"title_content": "Hoe waardeer jij grondwerk GWY uit Noordwolde ?", "level": "4"}}]], "main_html": "
                                                                                  \n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  Openingstijden

                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t


                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  Eigenschappen Grondwerk

                                                                                  Niet bekend
                                                                                  Niet bekend

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  ", "statics": {"paragraph": 6, "paragraph.text": 6, "title": 5, "table": 1}, "url": "https://grondwerken-overzicht.nl/noordwolde/gwy", "content": "Ziet u iets wat niet hoort of niet klopt?\n\nRapporteren\n\nDit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.\n\n## Openingstijden\n\n| Maandag | - |\n|---|---|\n| Dinsdag | - |\n| Woensdag | - |\n| Donderdag | - |\n| Vrijdag | - |\n| Zaterdag | - |\n| Zondag | - |\n\n### Is Grondwerk GWY in Noordwolde uw bedrijf?\n\nClaim uw pagina, vul uw gegevens aan en word beter gevonden. Binnen een paar minuten geregeld en volledig gratis!\n\n## Eigenschappen Grondwerk\n\nNiet bekend\n\nNiet bekend\n\n## Beoordelingen\n\n#### Hoe waardeer jij grondwerk GWY uit Noordwolde ?\n", "html": "\n\n\n\n\n\n\n\n\n\n\tGrondwerk GWY in Noordwolde - Grondwerkgids grondwerken-overzicht.nl\n\n\t\n\t\n\t\n\t\n\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t\t\t\t\n\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\n\n\t\n \n \n\t\n\t\n \t\n\t\n \n \n \n \n \t\n \n\n\t\n\t\n\n\t\n\t\n\t\n\n\n\n\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\tIs Grondwerk GWY in\n\t\t\t\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\"Grondwerken-overzicht.nl\"\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t\n\n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\n\t\n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t
                                                                                  \n\n\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\t\t\t\t\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\t\t\t\t\t\tGWY\n\t\t\t\t\t\t\t\t\t

                                                                                  \n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tIndustriestraat 11
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t8391AG\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tNoordwolde\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t

                                                                                  \n \t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t05614 ... Toon nummer\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t

                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t0 beoordelingen\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tVolgen\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t Delen\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t Tip bedrijf\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t Streetview\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t Route\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNeem contact op\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContact opnemen\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSchrijf een beoordeling\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSchrijf beoordeling\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\n\t\t\n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t\n\t\t\t\n\t\t\t\t Rapporteren\n\t\t\t\n\t\t
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  Openingstijden

                                                                                  \n\t
                                                                                  \n\t
                                                                                  \n\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t
                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t


                                                                                  \n\t\t\t\t

                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \t
                                                                                  \n
                                                                                  \n \n \n \n
                                                                                  \n
                                                                                  \n

                                                                                  Eigenschappen Grondwerk

                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tNiet bekend\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tNiet bekend\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n

                                                                                  \n Facebook\n

                                                                                  \n\n
                                                                                  \n

                                                                                  \n Facebook\n

                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n
                                                                                  \n\n
                                                                                  \n

                                                                                  \n

                                                                                  Berichten laden ..

                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  \n Geen Facebook gegevens gevonden\n

                                                                                  \n

                                                                                  \n Claim uw bedrijf
                                                                                  om uw tijdlijn hier weer te geven\n

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  \n\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Waardering van bezoekers

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tUitstekend\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tHeel goed\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tGemiddeld\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tMatig\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tVreselijk\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Overzicht waarderingen

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\tDeel je mening
                                                                                  en help andere bezoekers
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tCommunicatie\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tUitgevoerde werkzaamheden\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tBetrouwbaarheid\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tPrijs / kwaliteit\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  \n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\tU dient ingelogd te zijn om een review te plaatsen. Nu inloggen of registreer een account.\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\tWilt uw als eigenaar van deze vermelding notificaties van nieuwe beoordelingen ontvangen?\n\t\t\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\t\t\t\t\t\tStap direct over naar een betaalde vermelding,
                                                                                  of bekijk nu alle mogelijkheden.\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n

                                                                                  Informeer GWY over deze vermelding

                                                                                  \n
                                                                                  \n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n \n\n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n

                                                                                  Verwijderingsverzoek indienen voor
                                                                                  GWY

                                                                                  \n
                                                                                  \n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n \n (Minimaal 50 tekens)\n
                                                                                  \n\n
                                                                                  \n\n\n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t

                                                                                  Afbeelding toevoegen

                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\n\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t

                                                                                  Bezig met uploaden ..

                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  0% Complete
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t

                                                                                  Deze bedrijfsvermelding rapporteren

                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\tgrondwerken-overzicht.nl streeft ernaar om de vermelde gegevens zo juist, nuttig & netjes mogelijk te houden. We nemen uw bericht zo snel mogelijk in behandeling.\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n Je bent niet ingelogd. Log eerst even in of registreer je Crasmedia account.\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Inloggen

                                                                                  \n\n
                                                                                  \n \n \n \n\n \n \n Wachtwoord vergeten?\n \n

                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Nog geen account?

                                                                                  \n

                                                                                  De voordelen van een account:

                                                                                  \n\n
                                                                                    \n
                                                                                  • Plaats reviews bij al uw favoriete bedrijven
                                                                                  • \n
                                                                                  • Volg het laatste nieuws van bedrijven waar uw interesse in heeft
                                                                                  • \n
                                                                                  • Registreer of claim uw eigen bedrijf
                                                                                  • \n
                                                                                  • \n \n Crasmedia account - \u00e9\u00e9n account voor al onze\n gidsen\n
                                                                                  • \n
                                                                                  \n\n Nog geen account? Registeer nu!\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n Je bent niet ingelogd. Log eerst even in of registreer je Crasmedia account.\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Inloggen

                                                                                  \n\n
                                                                                  \n \n \n\n \n \n Wachtwoord vergeten?\n \n

                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Nog geen account?

                                                                                  \n

                                                                                  De voordelen van een account:

                                                                                  \n\n
                                                                                    \n
                                                                                  • Plaats reviews bij al uw favoriete bedrijven
                                                                                  • \n
                                                                                  • Volg het laatste nieuws van bedrijven waar uw interesse in heeft
                                                                                  • \n
                                                                                  • Registreer of claim uw eigen bedrijf
                                                                                  • \n
                                                                                  • \n \n Crasmedia account - \u00e9\u00e9n account voor al onze\n gidsen\n
                                                                                  • \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Registreren

                                                                                  \n
                                                                                  \n\t\n\t\n\n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\n\t\t\n\t\t* Het wachtwoord dient uit minimaal 8 karakters te bestaan\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\n\t
                                                                                  \n\t\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t\t\n\n\t
                                                                                  \n\t
                                                                                  \n\t\n\n\t\n\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                    \n\t\t\t\t\t
                                                                                  1. \n\t\t\t\t\n\t\t\t\t\tGrondwerken-overzicht.nl\n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  2. \n\n\n\t\t\t\t\t\t
                                                                                  3. \n\t\t\t\t \u203a \n\t\t\t\t\n\t\t\t\t\tFriesland\n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  4. \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  5. \n\t\t\t\t\t\t \u203a \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNoordwolde\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  6. \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  7. \n\t\t\t\t\t\t \u203a \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGwy\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  8. \n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Informatie
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tAlgemene voorwaarden\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tDisclaimer\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tCopyright\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tPrivacy & Cookiebeleid\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Crasmedia
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tOver ons\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tWebsite\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tBlog\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tFacebook\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Voor grondwerk bedrijven
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tBedrijf aanmelden\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tPrijzen\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tAdverteren\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tInloggen\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  © 2025 Grondwerken-overzicht.nl All rights reserved. Map data \u00a9 OpenStreetMap-auteurs

                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t \n\t
                                                                                  \n\t\n\n\t\n\t\t\t\n\n\t\t\n\n\t\t\n\t\t\n\t\t\n\t\t\n\n\n"} +{"content_list": [[{"type": "paragraph", "raw_content": "
                                                                                  \n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t
                                                                                  ", "content": [{"c": "Ziet u iets wat niet hoort of niet klopt?", "t": "text"}]}, {"type": "paragraph", "raw_content": "", "content": [{"c": "Rapporteren", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  ", "content": [{"c": "Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Openingstijden

                                                                                  ", "content": {"title_content": "Openingstijden", "level": "2"}}, {"type": "table", "raw_content": "
                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  ", "content": {"html": "
                                                                                  Maandag-
                                                                                  Dinsdag-
                                                                                  Woensdag-
                                                                                  Donderdag-
                                                                                  Vrijdag-
                                                                                  Zaterdag-
                                                                                  Zondag-
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}, {"type": "title", "raw_content": "

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t

                                                                                  ", "content": {"title_content": "Is Grondwerk GWY in Noordwolde uw bedrijf?", "level": "3"}}, {"type": "paragraph", "raw_content": "

                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  ", "content": [{"c": "Claim uw pagina, vul uw gegevens aan en word beter gevonden. Binnen een paar minuten geregeld en volledig gratis!", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  Eigenschappen Grondwerk

                                                                                  ", "content": {"title_content": "Eigenschappen Grondwerk", "level": "2"}}, {"type": "paragraph", "raw_content": "
                                                                                  Niet bekend
                                                                                  ", "content": [{"c": "Niet bekend", "t": "text"}]}, {"type": "paragraph", "raw_content": "
                                                                                  Niet bekend
                                                                                  ", "content": [{"c": "Niet bekend", "t": "text"}]}, {"type": "title", "raw_content": "

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  ", "content": {"title_content": "Beoordelingen", "level": "2"}}, {"type": "title", "raw_content": "

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  ", "content": {"title_content": "Hoe waardeer jij grondwerk GWY uit Noordwolde ?", "level": "4"}}]], "main_html": "
                                                                                  \n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  Openingstijden

                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t


                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  Eigenschappen Grondwerk

                                                                                  Niet bekend
                                                                                  Niet bekend

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  ", "statics": {"paragraph": 6, "paragraph.text": 6, "title": 5, "table": 1}, "url": "https://grondwerken-overzicht.nl/noordwolde/gwy", "content": "Ziet u iets wat niet hoort of niet klopt?\n\nRapporteren\n\nDit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.\n\n## Openingstijden\n\n| Maandag | - |\n|---|---|\n| Dinsdag | - |\n| Woensdag | - |\n| Donderdag | - |\n| Vrijdag | - |\n| Zaterdag | - |\n| Zondag | - |\n\n### Is Grondwerk GWY in Noordwolde uw bedrijf?\n\nClaim uw pagina, vul uw gegevens aan en word beter gevonden. Binnen een paar minuten geregeld en volledig gratis!\n\n## Eigenschappen Grondwerk\n\nNiet bekend\n\nNiet bekend\n\n## Beoordelingen\n\n#### Hoe waardeer jij grondwerk GWY uit Noordwolde ?\n", "html": "\n\n\n\n\n\n\n\n\n\n\tGrondwerk GWY in Noordwolde - Grondwerkgids grondwerken-overzicht.nl\n\n\t\n\t\n\t\n\t\n\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t\t\t\t\n\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\n\n\t\n \n \n\t\n\t\n \t\n\t\n \n \n \n \n \t\n \n\n\t\n\t\n\n\t\n\t\n\t\n\n\n\n\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\tIs Grondwerk GWY in\n\t\t\t\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\"Grondwerken-overzicht.nl\"\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t\n\n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\n\t\n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t
                                                                                  \n\n\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\n\t\t\t\t\n\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\t\t\t\t\t\tGWY\n\t\t\t\t\t\t\t\t\t

                                                                                  \n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tIndustriestraat 11
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t8391AG\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tNoordwolde\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\n\n\n\t\t\t\t\t\t\t

                                                                                  \n \t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t05614 ... Toon nummer\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t

                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t0 beoordelingen\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tVolgen\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t Delen\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t Tip bedrijf\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t Streetview\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t Route\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNeem contact op\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContact opnemen\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSchrijf een beoordeling\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSchrijf beoordeling\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\n\t\t\n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\n\n\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t\n\t\t\t\n\t\t\t\t Rapporteren\n\t\t\t\n\t\t
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Dit bedrijf heeft helaas nog geen omschrijving. Bent u echter de eigenaar van dit bedrijf? Claim dan uw pagina en vul uw gegevens aan, of help ons en je mede-bezoekers door dit bedrijf te tippen over deze vermelding.

                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\n
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\n\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  Openingstijden

                                                                                  \n\t
                                                                                  \n\t
                                                                                  \n\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t
                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n\n\n\n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Is Grondwerk GWY in\n\t\t\t\t\tNoordwolde uw bedrijf?\n\t\t\t\t


                                                                                  \n\t\t\t\t

                                                                                  Claim uw pagina, vul uw gegevens aan en word beter gevonden.

                                                                                  \n\t\t\t\tBinnen een paar minuten geregeld en volledig gratis!

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \t
                                                                                  \n
                                                                                  \n \n \n \n
                                                                                  \n
                                                                                  \n

                                                                                  Eigenschappen Grondwerk

                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tNiet bekend\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tNiet bekend\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n

                                                                                  \n Facebook\n

                                                                                  \n\n
                                                                                  \n

                                                                                  \n Facebook\n

                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n
                                                                                  \n\n
                                                                                  \n

                                                                                  \n

                                                                                  Berichten laden ..

                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  \n Geen Facebook gegevens gevonden\n

                                                                                  \n

                                                                                  \n Claim uw bedrijf
                                                                                  om uw tijdlijn hier weer te geven\n

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  \n\t\t\tBeoordelingen\n\t\t

                                                                                  \n\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Waardering van bezoekers

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tUitstekend\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tHeel goed\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tGemiddeld\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tMatig\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\tVreselijk\n\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t

                                                                                  Overzicht waarderingen

                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\tDeel je mening
                                                                                  en help andere bezoekers
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tCommunicatie\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tUitgevoerde werkzaamheden\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tBetrouwbaarheid\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t
                                                                                  \n\n\t\t\tPrijs / kwaliteit\n\t
                                                                                  \n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\tHoe waardeer jij grondwerk GWY uit Noordwolde?\n\t\t\t\t

                                                                                  \n\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\tU dient ingelogd te zijn om een review te plaatsen. Nu inloggen of registreer een account.\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\tWilt uw als eigenaar van deze vermelding notificaties van nieuwe beoordelingen ontvangen?\n\t\t\t\t\t\t\t\t\t\t

                                                                                  \n\t\t\t\t\t\t\t\t\t\tStap direct over naar een betaalde vermelding,
                                                                                  of bekijk nu alle mogelijkheden.\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n\n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n

                                                                                  Informeer GWY over deze vermelding

                                                                                  \n
                                                                                  \n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n \n\n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n

                                                                                  Verwijderingsverzoek indienen voor
                                                                                  GWY

                                                                                  \n
                                                                                  \n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n\n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n \n (Minimaal 50 tekens)\n
                                                                                  \n\n
                                                                                  \n\n\n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t

                                                                                  Afbeelding toevoegen

                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\n\t\t\t\t\n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t

                                                                                  Bezig met uploaden ..

                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  0% Complete
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t

                                                                                  Deze bedrijfsvermelding rapporteren

                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t
                                                                                  \n\n\n\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\tgrondwerken-overzicht.nl streeft ernaar om de vermelde gegevens zo juist, nuttig & netjes mogelijk te houden. We nemen uw bericht zo snel mogelijk in behandeling.\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n Je bent niet ingelogd. Log eerst even in of registreer je Crasmedia account.\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Inloggen

                                                                                  \n\n
                                                                                  \n \n \n \n\n \n \n Wachtwoord vergeten?\n \n

                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Nog geen account?

                                                                                  \n

                                                                                  De voordelen van een account:

                                                                                  \n\n
                                                                                    \n
                                                                                  • Plaats reviews bij al uw favoriete bedrijven
                                                                                  • \n
                                                                                  • Volg het laatste nieuws van bedrijven waar uw interesse in heeft
                                                                                  • \n
                                                                                  • Registreer of claim uw eigen bedrijf
                                                                                  • \n
                                                                                  • \n \n Crasmedia account - \u00e9\u00e9n account voor al onze\n gidsen\n
                                                                                  • \n
                                                                                  \n\n Nog geen account? Registeer nu!\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n Je bent niet ingelogd. Log eerst even in of registreer je Crasmedia account.\n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Inloggen

                                                                                  \n\n
                                                                                  \n \n \n\n \n \n Wachtwoord vergeten?\n \n

                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Nog geen account?

                                                                                  \n

                                                                                  De voordelen van een account:

                                                                                  \n\n
                                                                                    \n
                                                                                  • Plaats reviews bij al uw favoriete bedrijven
                                                                                  • \n
                                                                                  • Volg het laatste nieuws van bedrijven waar uw interesse in heeft
                                                                                  • \n
                                                                                  • Registreer of claim uw eigen bedrijf
                                                                                  • \n
                                                                                  • \n \n Crasmedia account - \u00e9\u00e9n account voor al onze\n gidsen\n
                                                                                  • \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  Registreren

                                                                                  \n
                                                                                  \n\t\n\t\n\n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\n\t\t\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\n\t\t\n\t\t* Het wachtwoord dient uit minimaal 8 karakters te bestaan\n\t
                                                                                  \n\n\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\n\t
                                                                                  \n\t\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t\t\n\n\t
                                                                                  \n\t
                                                                                  \n\t\n\n\t\n\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                    \n\t\t\t\t\t
                                                                                  1. \n\t\t\t\t\n\t\t\t\t\tGrondwerken-overzicht.nl\n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  2. \n\n\n\t\t\t\t\t\t
                                                                                  3. \n\t\t\t\t \u203a \n\t\t\t\t\n\t\t\t\t\tFriesland\n\t\t\t\t\n\t\t\t\t\n\t\t\t
                                                                                  4. \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  5. \n\t\t\t\t\t\t \u203a \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNoordwolde\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  6. \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  7. \n\t\t\t\t\t\t \u203a \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGwy\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  8. \n\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Informatie
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tAlgemene voorwaarden\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tDisclaimer\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tCopyright\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\tPrivacy & Cookiebeleid\n\t\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Crasmedia
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tOver ons\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tWebsite\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tBlog\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tFacebook\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\t
                                                                                  • Voor grondwerk bedrijven
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tBedrijf aanmelden\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tPrijzen\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tAdverteren\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t\t\tInloggen\n\t\t\t\t\t\t\t\t\t
                                                                                  • \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  © 2025 Grondwerken-overzicht.nl All rights reserved. Map data \u00a9 OpenStreetMap-auteurs

                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t \n\t
                                                                                  \n\t\n\n\t\n\t\t\t\n\n\t\t\n\n\t\t\n\t\t\n\t\t\n\t\t\n\n\n"} diff --git a/bench/data/groundtruth/table_2.jsonl b/bench/data/groundtruth/table_2.jsonl index 3c79d5c0..f97bdf06 100644 --- a/bench/data/groundtruth/table_2.jsonl +++ b/bench/data/groundtruth/table_2.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "paragraph", "raw_content": "

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  ", "content": [{"c": "Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  ", "content": [{"c": "To help you in your search, we have completed this list of the Best Underbody Underglow Kits.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                                                  RankProduct NameScore
                                                                                  1
                                                                                  \"Car
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  9.7
                                                                                  2
                                                                                  \"4pcs
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  9.5
                                                                                  3
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  9.1
                                                                                  4
                                                                                  \"Car
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  8.8
                                                                                  5
                                                                                  \"GOODRUN
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  8.6
                                                                                  6
                                                                                  \"OPT7
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  8.3
                                                                                  7
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  8.1
                                                                                  8
                                                                                  \"LEDGlow
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  7.8
                                                                                  9
                                                                                  \"KORJO
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  7.5
                                                                                  10
                                                                                  \"XTAUTO
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  7.2
                                                                                  ", "content": {"html": "
                                                                                  RankProduct NameScore
                                                                                  1Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color9.7
                                                                                  24pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent9.5
                                                                                  3Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function9.1
                                                                                  4Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof8.8
                                                                                  5GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent8.6
                                                                                  6OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync8.3
                                                                                  7Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody8.1
                                                                                  8LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars7.8
                                                                                  9KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color7.5
                                                                                  10XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light7.2
                                                                                  ", "is_complex": false}}]], "main_html": "

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  RankProduct NameScore
                                                                                  1
                                                                                  \"Car
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  9.7
                                                                                  2
                                                                                  \"4pcs
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  9.5
                                                                                  3
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  9.1
                                                                                  4
                                                                                  \"Car
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  8.8
                                                                                  5
                                                                                  \"GOODRUN
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  8.6
                                                                                  6
                                                                                  \"OPT7
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  8.3
                                                                                  7
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  8.1
                                                                                  8
                                                                                  \"LEDGlow
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  7.8
                                                                                  9
                                                                                  \"KORJO
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  7.5
                                                                                  10
                                                                                  \"XTAUTO
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  7.2
                                                                                  ", "statics": {"paragraph": 2, "paragraph.text": 2, "table": 1}, "url": "https://10bestreviewz.com/automotive/best-underbody-underglow-kits", "content": "Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.\n\nTo help you in your search, we have completed this list of the Best Underbody Underglow Kits.\n\n| Rank | Product Name | Score |\n|---|---|---|\n| 1 | Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color | 9.7 |\n| 2 | 4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent | 9.5 |\n| 3 | Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function | 9.1 |\n| 4 | Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof | 8.8 |\n| 5 | GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent | 8.6 |\n| 6 | OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync | 8.3 |\n| 7 | Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody | 8.1 |\n| 8 | LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars | 7.8 |\n| 9 | KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color | 7.5 |\n| 10 | XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light | 7.2 |\n", "html": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n Top #10 Best Underbody Underglow Kits in 2025 | Reviews by Experts\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n

                                                                                  Best Underbody Underglow Kits In January 2025

                                                                                  \n \n \n
                                                                                  \n
                                                                                  Facebook
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Twitter
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Tumblr
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Pinterest
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Reddit
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  WhatsApp
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Telegram
                                                                                  \n
                                                                                  \n

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  \n

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  \n

                                                                                  Top Rated Best Underbody Underglow Kits Of 2025

                                                                                  \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  RankProduct NameScore
                                                                                  \n
                                                                                  \n
                                                                                  1
                                                                                  \n
                                                                                  \n \"Car\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.7
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  2
                                                                                  \n
                                                                                  \n \"4pcs\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.5
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  3
                                                                                  \n
                                                                                  \n \"Xprite\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.1
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  4
                                                                                  \n
                                                                                  \n \"Car\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.8
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  5
                                                                                  \n
                                                                                  \n \"GOODRUN\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.6
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  6
                                                                                  \n
                                                                                  \n \"OPT7\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.3
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7
                                                                                  \n
                                                                                  \n \"Xprite\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.1
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8
                                                                                  \n
                                                                                  \n \"LEDGlow\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.8
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9
                                                                                  \n
                                                                                  \n \"KORJO\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.5
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  10
                                                                                  \n
                                                                                  \n \"XTAUTO\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.2
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n

                                                                                  1. Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color

                                                                                  \n
                                                                                  \n
                                                                                  \n 1\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Car\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.7/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Sound active & music decorationthe car led neon underglow lights has also 8 color flashing modes with sound sensors that lets under car glow system synchronize with music beat.the led music light strip follows the beat and adjusts flashing to fit the strength of the sound,adjustable brightness.
                                                                                  • High quality led chipwireless remote control color changing, flashing mode and music mode, create colorful gradient mode. upgraded high intensity smd 5050 led chip, provide brighter light, add the look and feel of the vehicle with bright lighting effects.
                                                                                  • More color & energy savingthe led under car glow system lights up colorful colors,it can be bent, fold, with your imagination to create your ambience,give a stylishly stunning look to the areas you may want to put them on.even though they're really bright, they're great power savers so you don't have to worry energy consumption.
                                                                                  • Universal compatibilitycar underglow lights its voltage is compatible with 12v. led underbody lights is waterproof and comes with built-in overload protection, so it can be used safely.it can be used by almost all of the car. perfect for under wheel arches, around the front grille, under foot-wells, in the trunk, along the dash.
                                                                                  • Easy installationstrong adhesive led strip lights kit(with black fixed tie), flexible and easy to install.designed with flexible tubing, protected from terrible road conditions and debris. high quality material and low temperature resistance.
                                                                                  \n

                                                                                  2. 4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent

                                                                                  \n
                                                                                  \n
                                                                                  \n 2\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"4pcs\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.5/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • High brightness led chip: high quality flexible smd 5050 led strip lights, waterproof, anti-collision, anti-corrosion, suitable for outdoor and indoor use. (remote works within 32ft/10m).
                                                                                  • Easy to install: with 3m sticker on the back of the light, soft and flexible, easy to install, no need to change the wire circuit in your car, can be used in a variety of interior and exterior applications including all cars, truck, jeep, suv, vans, motorcycle, boats and much more, installation area:car bumper, inlet grid, cainterior, car rear, car bottom, etc..
                                                                                  • Package included: 2 x 3ft (36 inch) & 2 x 4ft(48 inch) music control led strip lights, remote, ir/voice control box
                                                                                  • Sound functions and multi-color: contains 8 preset static colors. 4 lighting effects: 2 preset jump and 2 preset fading patterns. 4 sound active modes, the led under car glow system produces multi colors (blue, green, purple, red, teal, white, and yellow)
                                                                                  • Waterproof and protection: our underglow lights are entirely sealed by waterproof(ip68) pvc. made of flexible rubber tubing protecting from dust and high/low temperature. can be bent freely and used for more than 50000 hrs lifetime.
                                                                                  \n

                                                                                  3. Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function

                                                                                  \n
                                                                                  \n
                                                                                  \n 3\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Xprite\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.1/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Hight quality - made of flexible rubber tubing, protected from road conditions and debris. it can be bent freely and has the characteristic of high and low temperature resistance.waterproof rate: ip67 note: it is very necessary to use the included fuse holder to install in order to proper protect your vehicle and equipment.
                                                                                  • New remote control design - faster on/off response and more easy adjustable brightness/function button,easier to operate.lightweight and easy to carry.the remote range over 100ft.
                                                                                  • High brightness led chip - high intensity smd 5050 led chips. 3 in 1 rgb chips, brighter output ,uniform lighting. enhances the look and feel of your vehicle with brilliant lighting effects.
                                                                                  • Multi-color function - this undercar strips lighting kits have 8 preset static colors .4 lighting effects: 2 preset jump and 2 preset fading patterns. 4 sound active modes, leds change according to sound. pre-applied adhesive tape.
                                                                                  • Easy installation - with quick connect plugs and pre-applied adhesive tape to apply the led strips under the car. can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans ,truck, boats, motorcycle decoration, etc,.
                                                                                  \n

                                                                                  4. Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof

                                                                                  \n
                                                                                  \n
                                                                                  \n 4\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Car\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.8/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Addressable led strip & chasing effect ----- special design by adding ic in strip lights, you can control a variety of colors, brightness and chasing speed as you want. built-in 120 kinds of color chasing modes looks like recurrently chasing, skipping, dancing, twinkling on the strip, give you an amazing visual experience. you also can mark your favorite chasing ...
                                                                                  • Easy installationlight strips with strong sturdy self-adhesive tape can be simply peeled off and pasted on any smooth surface (please make sure the surface you intend to stick the light is clean,flat and dry). waterproof rate: ip68
                                                                                  • Car underglow strip lights perfect application for all cars, suv, jeep, truck decoration, etc. low-power design neon lights strip : this car atmosphere lights kit designed to be simple, also provides elegance outside the car when driving at night or enjoying music.using for lighting up the entire under car, enhances the look and feel of your vehicle with brilliant eye-c...
                                                                                  • App controlldownload app in google play or app store, connect bluetooth, no setting or network management required. easily turn on/off, adjust color and brightness. everything controlled by your smartphone, very convenient and easy operation. note: app named: led hue. supports ios 10.0 or above / android 4.4 or above.
                                                                                  • Howtosetuptheappofthecarunderglowlights? https://youtu.be/ehqjfjdh8gq
                                                                                  \n

                                                                                  5. GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent

                                                                                  \n
                                                                                  \n
                                                                                  \n 5\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"GOODRUN\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.6/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • No drilling easy installation: strong double sided adhesive tape installation, comes with quick connect plugs and pre-applied adhesive tape for an easy installation. can be used in a variety of interior and exterior applications including all under car, truck beds, foot wells, rock lights,cars, suv,jeep boats, motorcycle, and many other decorative purposes.
                                                                                  • Multicolor & music sensor - the led strobe light kit can be changed into 8 colors by adjusting the light color and the lighting effect as you wish with the wireless music remote control, also sound-activated function allows you to enjoy the fun with the color changing following your car stereo music rhythm as well as your voice. 20key remote-8 color gradually varied 4 ...
                                                                                  • Higher quality materials: flexible rubber tubing and upgraded adhesive 3m backing used, super viscosity so that make installation easier. double layer copper, better quality than other single layer copper led strips to the same type. protected from road conditions and debris. high and low temperature resistant with a waterproof rate: ip67.
                                                                                  • Package include: 4 x smd5050 car led strip lights, 1 x music remote control, 1x music ir control box, 30 days money back guarantee and 90 days warranty, 100% high-quality & friendly service and 24-hours email response.
                                                                                  • High brightness:made of cree smd 5050 rgb light bulb, it can light up every side of your car underbody as decorative lighting. with the outstandingmerits: long service life, running at low temperature, low energy consumption, less heat radiation, it will be your first choice of wireless led light strip.
                                                                                  \n
                                                                                  \n

                                                                                  \n\n

                                                                                  \n

                                                                                  6. OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync

                                                                                  \n
                                                                                  \n
                                                                                  \n 6\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"OPT7\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.3/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Access to a full spectrum of colors with advanced dimming controls.
                                                                                  • Exclusive soundsync bass-activated technology lets you visualize the beat.
                                                                                  • 4pc aluminum kit: (2) 48\" light bars with 72 leds each and (2) 36\" light bars with 54 leds each.
                                                                                  • Two ways to power: car charger adapter or plug-n-go fuse tap connectors (all included).
                                                                                  • Our smart-color leds mixes colors at the micro level that results in a brilliant colors true to the eye.
                                                                                  \n

                                                                                  7. Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody

                                                                                  \n
                                                                                  \n
                                                                                  \n 7\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Xprite\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.1/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Multi-color function this undercar lighting kits has 4 preset static colors and over 358 lighting effects. with programmable diy mode and auto demo mode.
                                                                                  • High brightness led chiphigh intensity smd 5050 led chips. 3 in 1 rgb chips, brighter output ,uniform lighting. enhances the look and feel of your vehicle with brilliant eye-catching lighting effects.
                                                                                  • Easy installationquick connect plugs into any 12v cigarette adapter or positive/negative wiring. and pre-applied adhesive tape to apply the led strips under the car. can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans,truck,boats,motorcycle decoration, etc,.(note: extension cable wire sold separately asin:b07r1x1mf1)
                                                                                  • High quality5050 led strips encased in flexible rubber tubing with quick-connectors and pre-applied adhesive tape. protected from road conditions and debris. waterproof rate: ip67note: it is very necessary to use the included fuse holder to install in order to proper protect your vehicle and equipment.
                                                                                  • New remote control design faster on/off response and more easy adjustable speed and brightness button, easy to operate. lightweight and easy to carry. remote range over 100ft.
                                                                                  \n

                                                                                  8. LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars

                                                                                  \n
                                                                                  \n
                                                                                  \n 8\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"LEDGlow\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.8/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Add ultra-bright multi-color underglow accent lighting to your car with (2) 46\" & (2) 36\" water-resistant tubes that house 270 smd leds
                                                                                  • Free lifetime technical support & one year limited warranty included with each ledglow purchase
                                                                                  • Choose from 7 different solid color modes that include: blue, red, green, yellow, purple, teal & white
                                                                                  • Underbody tubes feature 6' of wire on each end to daisy chain each tube to the next
                                                                                  • Control box & wireless remote allows you to select from 7 solid colors, 6 flashing modes, 6 scanning modes, 2 chase modes, 2 color cycle modes & 2 sound activated modes that react to the music playing inside of your car!
                                                                                  \n

                                                                                  9. KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color

                                                                                  \n
                                                                                  \n
                                                                                  \n 9\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"KORJO\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.5/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • easy installation & universal compatibility you can power the strip lights by the 12v cigarette adapter or by positive/negative wiring. the features of flexible, strong self-adhesive make it easy to applied under the car. the 12v voltage means it can be used by almost all of the car. perfect for cars, suv, jeep, vans, trucks, boats decoration. and as a decorative ...
                                                                                  • app control car under lights download app, turn on bluetooth, then start the app to control the led lights, turn on/off, set brightness and chasing speed, everything controlled by your phone, very convenient and easy operation. https://youtu.be/ehqjfjdh8gq
                                                                                  • ip 68 waterproof & strong adhesive whole light kit waterproof. the 5050 led strips are protected by the flexible rubber tubing, the controller and all connectors are also made of waterproof material, well protected from road conditions and debris and rain day. strong pre-applied adhesive tape with spare mounting clips and cable tie.
                                                                                  • dream color led strips built-in 120kinds ofcolorchasingmodes looks like recurrently chasing, skipping, dancing, twinkling on the strip. you also can mark your favorite chasing effect. 16 million colors for you to diy a static color for lighting.
                                                                                  • all in 1 kit & 1 year warranty package includes: 6 pcs car led lights (2 * 61in+ 4 * 23.6in ) + 1 bluetooth controller + 1 cigarette power adapter + 1 bag of mounting clips + 1x user manual. our korjo car underglow kit comes with 1 year warranty & 90 days money backand life long technical support. if you have any questions, please don't hesitate to contact us....
                                                                                  \n

                                                                                  10. XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light

                                                                                  \n
                                                                                  \n
                                                                                  \n 10\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"XTAUTO\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.2/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • High brightness led chip -- with the wireless remote to control power switch,the led music light strip follows the beat and adjusts flashing to fit the strength of the sound, makes your car more attractive.
                                                                                  • Control mode--4 music control mode, 8 signal color control, 2 preset jump and 2 preset fading patterns, on/off.you can control it anywhere in the car and feel free to control the color change and brightness.
                                                                                  • Can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans ,truck, boats, motorcycle, and many other decorative purposes.
                                                                                  • Easy to install - you don't even need the wiring. first plugged into car cigarette lighter, then peel the back 3m double-sided tape, paste the light strips on the car floor.
                                                                                  • Safe & energy saving--car led light strip has a working voltage of 12v and powered by car charger are equipped with short circuit protection and memory function.
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  \n\n

                                                                                  Powered by  

                                                                                  \n
                                                                                  Related Posts
                                                                                  \n \n \n \n \n \n \n \n
                                                                                  Featured Article
                                                                                  \n \n \n \n \n \n \n
                                                                                  \n \n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"10BestReviewz\"\n \n \n

                                                                                  Copyright @ 2025, 10BestReviewz. all right reserved

                                                                                  \n

                                                                                  10BestReviewz.com Participates In The Amazon Associates Associates Program,An Affiliate Advertising Program Designed To Provide
                                                                                  A Means For Sites To Earn Commissions By Linking To Amazon.This Means That Whenever You Buy A Product On Amazon
                                                                                  From A Link On Here, We Get A Small Percentage Of Its Price.

                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n \n \n \n
                                                                                  \n\n\n
                                                                                  \n\n
                                                                                  \n\n\n \n \n
                                                                                  \n 10BR uses cookies to provide you with the best user experience. For further information please refer to our Privacy Policy.
                                                                                  \n\n\n\n"} +{"content_list": [[{"type": "paragraph", "raw_content": "

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  ", "content": [{"c": "Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.", "t": "text"}]}, {"type": "paragraph", "raw_content": "

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  ", "content": [{"c": "To help you in your search, we have completed this list of the Best Underbody Underglow Kits.", "t": "text"}]}, {"type": "table", "raw_content": "
                                                                                  RankProduct NameScore
                                                                                  1
                                                                                  \"Car
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  9.7
                                                                                  2
                                                                                  \"4pcs
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  9.5
                                                                                  3
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  9.1
                                                                                  4
                                                                                  \"Car
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  8.8
                                                                                  5
                                                                                  \"GOODRUN
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  8.6
                                                                                  6
                                                                                  \"OPT7
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  8.3
                                                                                  7
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  8.1
                                                                                  8
                                                                                  \"LEDGlow
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  7.8
                                                                                  9
                                                                                  \"KORJO
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  7.5
                                                                                  10
                                                                                  \"XTAUTO
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  7.2
                                                                                  ", "content": {"html": "
                                                                                  RankProduct NameScore
                                                                                  1Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color9.7
                                                                                  24pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent9.5
                                                                                  3Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function9.1
                                                                                  4Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof8.8
                                                                                  5GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent8.6
                                                                                  6OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync8.3
                                                                                  7Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody8.1
                                                                                  8LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars7.8
                                                                                  9KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color7.5
                                                                                  10XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light7.2
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}]], "main_html": "

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  RankProduct NameScore
                                                                                  1
                                                                                  \"Car
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  9.7
                                                                                  2
                                                                                  \"4pcs
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  9.5
                                                                                  3
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  9.1
                                                                                  4
                                                                                  \"Car
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  8.8
                                                                                  5
                                                                                  \"GOODRUN
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  8.6
                                                                                  6
                                                                                  \"OPT7
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  8.3
                                                                                  7
                                                                                  \"Xprite
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  8.1
                                                                                  8
                                                                                  \"LEDGlow
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  7.8
                                                                                  9
                                                                                  \"KORJO
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  7.5
                                                                                  10
                                                                                  \"XTAUTO
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  7.2
                                                                                  ", "statics": {"paragraph": 2, "paragraph.text": 2, "table": 1}, "url": "https://10bestreviewz.com/automotive/best-underbody-underglow-kits", "content": "Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.\n\nTo help you in your search, we have completed this list of the Best Underbody Underglow Kits.\n\n| Rank | Product Name | Score |\n|---|---|---|\n| 1 | Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color | 9.7 |\n| 2 | 4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent | 9.5 |\n| 3 | Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function | 9.1 |\n| 4 | Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof | 8.8 |\n| 5 | GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent | 8.6 |\n| 6 | OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync | 8.3 |\n| 7 | Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody | 8.1 |\n| 8 | LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars | 7.8 |\n| 9 | KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color | 7.5 |\n| 10 | XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light | 7.2 |\n", "html": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n Top #10 Best Underbody Underglow Kits in 2025 | Reviews by Experts\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n\n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n

                                                                                  Best Underbody Underglow Kits In January 2025

                                                                                  \n \n \n
                                                                                  \n
                                                                                  Facebook
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Twitter
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Tumblr
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Pinterest
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Reddit
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  WhatsApp
                                                                                  \n
                                                                                  \n\n \n \n
                                                                                  \n
                                                                                  Telegram
                                                                                  \n
                                                                                  \n

                                                                                  Looking for the Best Underbody Underglow Kits that can last long and perform well? Read our review and buying guide on Best Underbody Underglow Kits below.

                                                                                  \n

                                                                                  To help you in your search, we have completed this list of the Best Underbody Underglow Kits.

                                                                                  \n

                                                                                  Top Rated Best Underbody Underglow Kits Of 2025

                                                                                  \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  RankProduct NameScore
                                                                                  \n
                                                                                  \n
                                                                                  1
                                                                                  \n
                                                                                  \n \"Car\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.7
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  2
                                                                                  \n
                                                                                  \n \"4pcs\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.5
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  3
                                                                                  \n
                                                                                  \n \"Xprite\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.1
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  4
                                                                                  \n
                                                                                  \n \"Car\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.8
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  5
                                                                                  \n
                                                                                  \n \"GOODRUN\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.6
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  6
                                                                                  \n
                                                                                  \n \"OPT7\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.3
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7
                                                                                  \n
                                                                                  \n \"Xprite\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.1
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  8
                                                                                  \n
                                                                                  \n \"LEDGlow\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.8
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  9
                                                                                  \n
                                                                                  \n \"KORJO\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.5
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  10
                                                                                  \n
                                                                                  \n \"XTAUTO\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light
                                                                                  \n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.2
                                                                                  \n \n \n \n
                                                                                  \n \n
                                                                                  \n

                                                                                  1. Car Underglow Lights,EJ's SUPER CAR Underglow Underbody System Neon Strip Lights Kit,8 Color

                                                                                  \n
                                                                                  \n
                                                                                  \n 1\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Car\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.7/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Sound active & music decorationthe car led neon underglow lights has also 8 color flashing modes with sound sensors that lets under car glow system synchronize with music beat.the led music light strip follows the beat and adjusts flashing to fit the strength of the sound,adjustable brightness.
                                                                                  • High quality led chipwireless remote control color changing, flashing mode and music mode, create colorful gradient mode. upgraded high intensity smd 5050 led chip, provide brighter light, add the look and feel of the vehicle with bright lighting effects.
                                                                                  • More color & energy savingthe led under car glow system lights up colorful colors,it can be bent, fold, with your imagination to create your ambience,give a stylishly stunning look to the areas you may want to put them on.even though they're really bright, they're great power savers so you don't have to worry energy consumption.
                                                                                  • Universal compatibilitycar underglow lights its voltage is compatible with 12v. led underbody lights is waterproof and comes with built-in overload protection, so it can be used safely.it can be used by almost all of the car. perfect for under wheel arches, around the front grille, under foot-wells, in the trunk, along the dash.
                                                                                  • Easy installationstrong adhesive led strip lights kit(with black fixed tie), flexible and easy to install.designed with flexible tubing, protected from terrible road conditions and debris. high quality material and low temperature resistance.
                                                                                  \n

                                                                                  2. 4pcs 8 Colors LED Strip Under Car Tube Underglow Underbody System Neon Accent

                                                                                  \n
                                                                                  \n
                                                                                  \n 2\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"4pcs\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.5/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • High brightness led chip: high quality flexible smd 5050 led strip lights, waterproof, anti-collision, anti-corrosion, suitable for outdoor and indoor use. (remote works within 32ft/10m).
                                                                                  • Easy to install: with 3m sticker on the back of the light, soft and flexible, easy to install, no need to change the wire circuit in your car, can be used in a variety of interior and exterior applications including all cars, truck, jeep, suv, vans, motorcycle, boats and much more, installation area:car bumper, inlet grid, cainterior, car rear, car bottom, etc..
                                                                                  • Package included: 2 x 3ft (36 inch) & 2 x 4ft(48 inch) music control led strip lights, remote, ir/voice control box
                                                                                  • Sound functions and multi-color: contains 8 preset static colors. 4 lighting effects: 2 preset jump and 2 preset fading patterns. 4 sound active modes, the led under car glow system produces multi colors (blue, green, purple, red, teal, white, and yellow)
                                                                                  • Waterproof and protection: our underglow lights are entirely sealed by waterproof(ip68) pvc. made of flexible rubber tubing protecting from dust and high/low temperature. can be bent freely and used for more than 50000 hrs lifetime.
                                                                                  \n

                                                                                  3. Xprite Car Underglow Neon Accent Strip Lights Kit 8 Color Sound Active Function

                                                                                  \n
                                                                                  \n
                                                                                  \n 3\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Xprite\n \n
                                                                                  \n
                                                                                  \n
                                                                                  9.1/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Hight quality - made of flexible rubber tubing, protected from road conditions and debris. it can be bent freely and has the characteristic of high and low temperature resistance.waterproof rate: ip67 note: it is very necessary to use the included fuse holder to install in order to proper protect your vehicle and equipment.
                                                                                  • New remote control design - faster on/off response and more easy adjustable brightness/function button,easier to operate.lightweight and easy to carry.the remote range over 100ft.
                                                                                  • High brightness led chip - high intensity smd 5050 led chips. 3 in 1 rgb chips, brighter output ,uniform lighting. enhances the look and feel of your vehicle with brilliant lighting effects.
                                                                                  • Multi-color function - this undercar strips lighting kits have 8 preset static colors .4 lighting effects: 2 preset jump and 2 preset fading patterns. 4 sound active modes, leds change according to sound. pre-applied adhesive tape.
                                                                                  • Easy installation - with quick connect plugs and pre-applied adhesive tape to apply the led strips under the car. can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans ,truck, boats, motorcycle decoration, etc,.
                                                                                  \n

                                                                                  4. Car Underglow Lights, Bluetooth Dream Color Chasing Strip Lights Kit, 6 PCS Waterproof

                                                                                  \n
                                                                                  \n
                                                                                  \n 4\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Car\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.8/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Addressable led strip & chasing effect ----- special design by adding ic in strip lights, you can control a variety of colors, brightness and chasing speed as you want. built-in 120 kinds of color chasing modes looks like recurrently chasing, skipping, dancing, twinkling on the strip, give you an amazing visual experience. you also can mark your favorite chasing ...
                                                                                  • Easy installationlight strips with strong sturdy self-adhesive tape can be simply peeled off and pasted on any smooth surface (please make sure the surface you intend to stick the light is clean,flat and dry). waterproof rate: ip68
                                                                                  • Car underglow strip lights perfect application for all cars, suv, jeep, truck decoration, etc. low-power design neon lights strip : this car atmosphere lights kit designed to be simple, also provides elegance outside the car when driving at night or enjoying music.using for lighting up the entire under car, enhances the look and feel of your vehicle with brilliant eye-c...
                                                                                  • App controlldownload app in google play or app store, connect bluetooth, no setting or network management required. easily turn on/off, adjust color and brightness. everything controlled by your smartphone, very convenient and easy operation. note: app named: led hue. supports ios 10.0 or above / android 4.4 or above.
                                                                                  • Howtosetuptheappofthecarunderglowlights? https://youtu.be/ehqjfjdh8gq
                                                                                  \n

                                                                                  5. GOODRUN Underglow Underbody Lighting Kit, Multicolored LED Strip Light with Light Bulbs,Neon Accent

                                                                                  \n
                                                                                  \n
                                                                                  \n 5\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"GOODRUN\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.6/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • No drilling easy installation: strong double sided adhesive tape installation, comes with quick connect plugs and pre-applied adhesive tape for an easy installation. can be used in a variety of interior and exterior applications including all under car, truck beds, foot wells, rock lights,cars, suv,jeep boats, motorcycle, and many other decorative purposes.
                                                                                  • Multicolor & music sensor - the led strobe light kit can be changed into 8 colors by adjusting the light color and the lighting effect as you wish with the wireless music remote control, also sound-activated function allows you to enjoy the fun with the color changing following your car stereo music rhythm as well as your voice. 20key remote-8 color gradually varied 4 ...
                                                                                  • Higher quality materials: flexible rubber tubing and upgraded adhesive 3m backing used, super viscosity so that make installation easier. double layer copper, better quality than other single layer copper led strips to the same type. protected from road conditions and debris. high and low temperature resistant with a waterproof rate: ip67.
                                                                                  • Package include: 4 x smd5050 car led strip lights, 1 x music remote control, 1x music ir control box, 30 days money back guarantee and 90 days warranty, 100% high-quality & friendly service and 24-hours email response.
                                                                                  • High brightness:made of cree smd 5050 rgb light bulb, it can light up every side of your car underbody as decorative lighting. with the outstandingmerits: long service life, running at low temperature, low energy consumption, less heat radiation, it will be your first choice of wireless led light strip.
                                                                                  \n
                                                                                  \n

                                                                                  \n\n

                                                                                  \n

                                                                                  6. OPT7 Aura 4pc Pickup Truck Underglow LED Lighting Kit w/remote - Soundsync

                                                                                  \n
                                                                                  \n
                                                                                  \n 6\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"OPT7\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.3/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Access to a full spectrum of colors with advanced dimming controls.
                                                                                  • Exclusive soundsync bass-activated technology lets you visualize the beat.
                                                                                  • 4pc aluminum kit: (2) 48\" light bars with 72 leds each and (2) 36\" light bars with 54 leds each.
                                                                                  • Two ways to power: car charger adapter or plug-n-go fuse tap connectors (all included).
                                                                                  • Our smart-color leds mixes colors at the micro level that results in a brilliant colors true to the eye.
                                                                                  \n

                                                                                  7. Xprite Car Underglow RGB Dancing Light Kit with Wireless Remote Control 6PC Underbody

                                                                                  \n
                                                                                  \n
                                                                                  \n 7\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Xprite\n \n
                                                                                  \n
                                                                                  \n
                                                                                  8.1/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Multi-color function this undercar lighting kits has 4 preset static colors and over 358 lighting effects. with programmable diy mode and auto demo mode.
                                                                                  • High brightness led chiphigh intensity smd 5050 led chips. 3 in 1 rgb chips, brighter output ,uniform lighting. enhances the look and feel of your vehicle with brilliant eye-catching lighting effects.
                                                                                  • Easy installationquick connect plugs into any 12v cigarette adapter or positive/negative wiring. and pre-applied adhesive tape to apply the led strips under the car. can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans,truck,boats,motorcycle decoration, etc,.(note: extension cable wire sold separately asin:b07r1x1mf1)
                                                                                  • High quality5050 led strips encased in flexible rubber tubing with quick-connectors and pre-applied adhesive tape. protected from road conditions and debris. waterproof rate: ip67note: it is very necessary to use the included fuse holder to install in order to proper protect your vehicle and equipment.
                                                                                  • New remote control design faster on/off response and more easy adjustable speed and brightness button, easy to operate. lightweight and easy to carry. remote range over 100ft.
                                                                                  \n

                                                                                  8. LEDGlow 4pc Multi-Color Slimline LED Underbody Underglow Accent Neon Lighting Kit for Cars

                                                                                  \n
                                                                                  \n
                                                                                  \n 8\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"LEDGlow\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.8/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • Add ultra-bright multi-color underglow accent lighting to your car with (2) 46\" & (2) 36\" water-resistant tubes that house 270 smd leds
                                                                                  • Free lifetime technical support & one year limited warranty included with each ledglow purchase
                                                                                  • Choose from 7 different solid color modes that include: blue, red, green, yellow, purple, teal & white
                                                                                  • Underbody tubes feature 6' of wire on each end to daisy chain each tube to the next
                                                                                  • Control box & wireless remote allows you to select from 7 solid colors, 6 flashing modes, 6 scanning modes, 2 chase modes, 2 color cycle modes & 2 sound activated modes that react to the music playing inside of your car!
                                                                                  \n

                                                                                  9. KORJO Car Underglow Lights, 6 Pcs Bluetooth Led Strip Lights with Dream Color

                                                                                  \n
                                                                                  \n
                                                                                  \n 9\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"KORJO\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.5/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • easy installation & universal compatibility you can power the strip lights by the 12v cigarette adapter or by positive/negative wiring. the features of flexible, strong self-adhesive make it easy to applied under the car. the 12v voltage means it can be used by almost all of the car. perfect for cars, suv, jeep, vans, trucks, boats decoration. and as a decorative ...
                                                                                  • app control car under lights download app, turn on bluetooth, then start the app to control the led lights, turn on/off, set brightness and chasing speed, everything controlled by your phone, very convenient and easy operation. https://youtu.be/ehqjfjdh8gq
                                                                                  • ip 68 waterproof & strong adhesive whole light kit waterproof. the 5050 led strips are protected by the flexible rubber tubing, the controller and all connectors are also made of waterproof material, well protected from road conditions and debris and rain day. strong pre-applied adhesive tape with spare mounting clips and cable tie.
                                                                                  • dream color led strips built-in 120kinds ofcolorchasingmodes looks like recurrently chasing, skipping, dancing, twinkling on the strip. you also can mark your favorite chasing effect. 16 million colors for you to diy a static color for lighting.
                                                                                  • all in 1 kit & 1 year warranty package includes: 6 pcs car led lights (2 * 61in+ 4 * 23.6in ) + 1 bluetooth controller + 1 cigarette power adapter + 1 bag of mounting clips + 1x user manual. our korjo car underglow kit comes with 1 year warranty & 90 days money backand life long technical support. if you have any questions, please don't hesitate to contact us....
                                                                                  \n

                                                                                  10. XTAUTO 4Pcs Car 72 LED Neon Undercar Underglow Glow Atmosphere Decorative Bar Light

                                                                                  \n
                                                                                  \n
                                                                                  \n 10\n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"XTAUTO\n \n
                                                                                  \n
                                                                                  \n
                                                                                  7.2/10 our score
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n Buy Now\n
                                                                                  \n
                                                                                  \n

                                                                                  \n
                                                                                    \n
                                                                                  • High brightness led chip -- with the wireless remote to control power switch,the led music light strip follows the beat and adjusts flashing to fit the strength of the sound, makes your car more attractive.
                                                                                  • Control mode--4 music control mode, 8 signal color control, 2 preset jump and 2 preset fading patterns, on/off.you can control it anywhere in the car and feel free to control the color change and brightness.
                                                                                  • Can be used in a variety of interior and exterior applications including all cars, suv,jeep,vans ,truck, boats, motorcycle, and many other decorative purposes.
                                                                                  • Easy to install - you don't even need the wiring. first plugged into car cigarette lighter, then peel the back 3m double-sided tape, paste the light strips on the car floor.
                                                                                  • Safe & energy saving--car led light strip has a working voltage of 12v and powered by car charger are equipped with short circuit protection and memory function.
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  \n\n

                                                                                  Powered by  

                                                                                  \n
                                                                                  Related Posts
                                                                                  \n \n \n \n \n \n \n \n
                                                                                  Featured Article
                                                                                  \n \n \n \n \n \n \n
                                                                                  \n \n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n\n

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"10BestReviewz\"\n \n \n

                                                                                  Copyright @ 2025, 10BestReviewz. all right reserved

                                                                                  \n

                                                                                  10BestReviewz.com Participates In The Amazon Associates Associates Program,An Affiliate Advertising Program Designed To Provide
                                                                                  A Means For Sites To Earn Commissions By Linking To Amazon.This Means That Whenever You Buy A Product On Amazon
                                                                                  From A Link On Here, We Get A Small Percentage Of Its Price.

                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n \n \n \n
                                                                                  \n\n\n
                                                                                  \n\n
                                                                                  \n\n\n \n \n
                                                                                  \n 10BR uses cookies to provide you with the best user experience. For further information please refer to our Privacy Policy.
                                                                                  \n\n\n\n"} diff --git a/bench/data/groundtruth/table_3.jsonl b/bench/data/groundtruth/table_3.jsonl index ca498ba3..129cac09 100644 --- a/bench/data/groundtruth/table_3.jsonl +++ b/bench/data/groundtruth/table_3.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "table", "raw_content": "
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  ", "content": {"html": "
                                                                                  Mrs S Hindle
                                                                                  ShowCCRCC
                                                                                  Driffield 5th October 2006CH. Ricksbury Royal HeroCH. Keyingham Branwell
                                                                                  Manchester 16th January 2008CH. Lochbuie GeordieMerryoth Maeve
                                                                                  Darlington 20th September 2009CH. Maibee Make BelieveCH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012CH. Loranka Sherrie BabyDear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014Brymarden Carolina SunriseCh. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014Ch. Charnell Clematis of SalegreenCH. Byermoor Queens Maid
                                                                                  ", "is_complex": false}}]], "main_html": "
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  ", "statics": {"table": 1}, "url": "https://cavaliers.co.uk/results/judges/Mrs%20S%20Hindle.htm", "content": "| Mrs S Hindle | | |\n|---|---|---|\n| Show | CC | RCC |\n| Driffield 5th October 2006 | CH. Ricksbury Royal Hero | CH. Keyingham Branwell |\n| Manchester 16th January 2008 | CH. Lochbuie Geordie | Merryoth Maeve |\n| Darlington 20th September 2009 | CH. Maibee Make Believe | CH. Loranka Just Like Heaven JW |\n| Blackpool 22nd June 2012 | CH. Loranka Sherrie Baby | Dear Magic Touch De La Fi Au Songeur |\n| Welsh Kennel Club 2014 | Brymarden Carolina Sunrise | Ch. Wandris Evan Elp Us |\n| Welsh Kennel Club 2014 | Ch. Charnell Clematis of Salegreen | CH. Byermoor Queens Maid |\n", "html": "\n\n Results by GAYHALO results program 21/01/2017\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  \n \n \n"} +{"content_list": [[{"type": "table", "raw_content": "
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  ", "content": {"html": "
                                                                                  Mrs S Hindle
                                                                                  ShowCCRCC
                                                                                  Driffield 5th October 2006CH. Ricksbury Royal HeroCH. Keyingham Branwell
                                                                                  Manchester 16th January 2008CH. Lochbuie GeordieMerryoth Maeve
                                                                                  Darlington 20th September 2009CH. Maibee Make BelieveCH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012CH. Loranka Sherrie BabyDear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014Brymarden Carolina SunriseCh. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014Ch. Charnell Clematis of SalegreenCH. Byermoor Queens Maid
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}]], "main_html": "
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  ", "statics": {"table": 1}, "url": "https://cavaliers.co.uk/results/judges/Mrs%20S%20Hindle.htm", "content": "| Mrs S Hindle | | |\n|---|---|---|\n| Show | CC | RCC |\n| Driffield 5th October 2006 | CH. Ricksbury Royal Hero | CH. Keyingham Branwell |\n| Manchester 16th January 2008 | CH. Lochbuie Geordie | Merryoth Maeve |\n| Darlington 20th September 2009 | CH. Maibee Make Believe | CH. Loranka Just Like Heaven JW |\n| Blackpool 22nd June 2012 | CH. Loranka Sherrie Baby | Dear Magic Touch De La Fi Au Songeur |\n| Welsh Kennel Club 2014 | Brymarden Carolina Sunrise | Ch. Wandris Evan Elp Us |\n| Welsh Kennel Club 2014 | Ch. Charnell Clematis of Salegreen | CH. Byermoor Queens Maid |\n", "html": "\n\n Results by GAYHALO results program 21/01/2017\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  Mrs S Hindle
                                                                                  Show CC RCC
                                                                                  Driffield 5th October 2006 CH. Ricksbury Royal Hero CH. Keyingham Branwell
                                                                                  Manchester 16th January 2008 CH. Lochbuie Geordie Merryoth Maeve
                                                                                  Darlington 20th September 2009 CH. Maibee Make Believe CH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012 CH. Loranka Sherrie Baby Dear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014 Brymarden Carolina Sunrise Ch. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014 Ch. Charnell Clematis of Salegreen CH. Byermoor Queens Maid
                                                                                  \n \n \n"} diff --git a/bench/data/groundtruth/table_4.jsonl b/bench/data/groundtruth/table_4.jsonl index 7e1aba6a..28bd37a9 100644 --- a/bench/data/groundtruth/table_4.jsonl +++ b/bench/data/groundtruth/table_4.jsonl @@ -1 +1 @@ -{"content_list": [[{"type": "table", "raw_content": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  ", "content": {"html": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403<br>\u5718\u9ad4\u8cfd\u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d<br>\u65b9\u9756\u7def<br>\u674e\u6631\u8ce2<br>\u5468\u6587\u6bc5<br>\u5468\u66c9\u98a8<br>\u6d2a\u53ef\u6d69<br>\u5f90\u6668\u63da<br>\u8521\u53f3\u627f\u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78<br>\u5468\u9806\u5fb7<br>\u4faf\u5091\u6069<br>\u7d22\u5357\u55ac\u67cf<br>\u694a\u51f1\u6069<br>\u5289\u5b50\u8aa0<br>\u8cf4\u79b9\u821c<br>\u8607\u79b9\u4e1e\u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d<br>\u4f59\u51a0\u61b2<br>\u5433\u4f2f\u5b87<br>\u5433\u6649\u5cb1<br>\u9673\u5b5f\u8b19<br>\u9ec3\u653f\u9594<br>\u8521\u548c\u8afa<br>\u8521\u627f\u7950\u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d<br>\u738b\u7167\u9321<br>\u90b1\u9756\u748b<br>\u5510\u90e1<br>\u66f9\u9594\u7fd4<br>\u9673\u6cd3\u8aed<br>\u9673\u8a9e\u7db8<br>\u6e6f\u71ca\u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d<br>\u65b9\u5b8f\u6137<br>\u7530\u6fec\u744b<br>\u5442\u674e\u6b3d\u7fd4<br>\u8449\u4f73\u5049<br>\u6f58\u7acb\u8ed2<br>\u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d<br>\u67ef\u535a\u9594<br>\u9ad8\u58eb\u51f1<br>\u90ed\u7d18\u777f<br>\u9673\u5764\u4f51<br>\u5289\u5f37\u68ee<br>\u912d\u4f0d\u6d0b<br>\u76e7\u5b87\u6f54<br>\u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5<br>\u674e\u6649\u6e90<br>\u6797\u627f\u9032<br>\u5f35\u4e2d\u777f<br>\u9ec3\u97cb\u7db8<br>\u8521\u4f73\u4fee<br>\u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d<br>\u5433\u6607\u6a3a<br>\u675c\u5764\u6649<br>\u9673\u4ee5\u8ed2<br>\u9673\u6600\u744b<br>\u5ed6\u6d69\u5ef7<br>\u6b50\u5091\u6587<br>\u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403<br>\u5718\u9ad4\u8cfd\u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d<br>\u674e\u4e88\u85b0<br>\u674e\u79d1\u7de3<br>\u6797\u82b3\u5b89<br>\u5f35\u5929\u99a8<br>\u6881\u5bb8\u5f0b<br>\u9673\u923a\u8553<br>\u842c\u5955\u5f63\u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5<br>\u6e29\u4fde\u699b<br>\u5df4\u55ac\u767b<br>\u5442\u4f73\u7a4e<br>\u6797\u7acb\u5fc3<br>\u9ec3\u5955\u6674<br>\u5289\u5b5d\u6148<br>\u912d\u6f54\u682d\u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d<br>\u9673\u6631\u5e0c<br>\u9673\u96c5\u541b<br>\u66fe\u7766\u6f54<br>\u9ec3\u6df5\u5100<br>\u9ec3\u9756\u6df3<br>\u5289\u598d\u5e0c<br>\u8b1d\u96e8\u6069\u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d<br>\u53e4\u9038\u5a77<br>\u674e\u6b23\u5a77<br>\u6797\u7acb\u7d43<br>\u9673\u744b\u55ac<br>\u66fe\u5b50\u7a4e<br>\u5289\u90c1\u82b3<br>\u8b1d\u4f73\u6069\u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d<br>\u5353\u61ff\u7444<br>\u5f35\u5de7\u6db5<br>\u9ec3\u5a49\u59ae<br>\u9ec3\u59f5\u59ae<br>\u5289\u5955\u8431<br>\u8b1d\u5143\u85b0<br>\u8607\u739f\u6615<br>\u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d<br>\u738b\u4f73\u5043<br>\u4f55\u5029\u4f69<br>\u675c\u4f9d\u7d14<br>\u9673\u5bd7\u81fb<br>\u9ec3\u7230\u84c1<br>\u8607\u6021\u5be7<br>\u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d<br>\u738b\u5a55\u82b8<br>\u4f59\u5a55\u7433<br>\u674e\u5b9c\u84c1<br>\u6797\u80b2\u8431<br>\u9673\u4e8e\u6db5<br>\u9ec3\u90c1\u742a<br>\u5289\u66c8\u749f<br>\u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d<br>\u738b\u7d2b\u82b8<br>\u674e\u5b9c\u85b0<br>\u6797\u51a0\u59a4<br>\u9673\u601d\u9f4a<br>\u8521\u6085<br>\u8521\u6190\u61ab<br>\u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403<br>\u5718\u9ad4\u8cfd\u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d<br>\u6bdb\u51a0\u6dee<br>\u674e\u5cfb\u4ea6<br>\u6797\u90c1\u654f<br>\u838a\u5b78\u6fc2<br>\u838a\u6def\u7fd4<br>\u6b50\u5b50\u6bc5<br>\u8b1d\u79c9\u5bb8\u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d<br>\u674e\u5bb6\u7a4e<br>\u6797\u8c6a\u923a<br>\u5f90\u7693\u9706<br>\u8881\u4fca\u777f<br>\u694a\u6615\u7fa9<br>\u912d\u53cb\u6069<br>\u9f94\u6631\u627f\u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d<br>\u6797\u6587\u8a70<br>\u6797\u7fbd\u8ed2<br>\u694a\u627f\u7ff0<br>\u8449\u9326\u4e1e<br>\u5ed6\u5927\u921e<br>\u8d99\u5149\u5ba5<br>\u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279\u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d<br>\u738b\u6689\u5ef7<br>\u4f59\u6893\u52e4<br>\u5433\u665f\u69d0<br>\u8a31\u5bb6\u7a0b<br>\u9673\u5b8f\u8ed2<br>\u9673\u6975\u8a9e<br>\u9ec3\u51a0\u744b\u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d<br>\u5433\u6587\u65ed<br>\u674e\u5149\u555f<br>\u5353\u6b63\u5091<br>\u6797\u8b1d\u5b89<br>\u8a31\u723e\u5a01<br>\u9ec3\u6587\u5ba5<br>\u8cf4\u6649\u5bec<br>\u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d<br>\u738b\u67cf\u921e<br>\u80e1\u4fca\u7965<br>\u9ad8\u5b87\u8861<br>\u9ec3\u54c1\u582f<br>\u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d<br>\u65b9\u97cb\u55ac<br>\u738b\u5f65\u73fa<br>\u738b\u555f\u5b89<br>\u6885\u5cea\u61f7<br>\u6b50\u967d\u4f2f\u5f65<br>\u912d\u4e0a\u99ad<br>\u912d\u7fd4\u4e91<br>\u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d<br>\u738b\u5ba5\u921e<br>\u5433\u5cb3\u6fa4<br>\u9673\u5ba5\u9716<br>\u66fe\u5b50\u6df5<br>\u9ec3\u5b50\u5100<br>\u694a\u5ead\u79be<br>\u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403<br>\u5718\u9ad4\u8cfd\u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d<br>\u82b1\u82e1\u6069<br>\u9ad8\u82b7\u6db5<br>\u8a31\u82b8\u8c9e<br>\u9673\u53c8\u7dad<br>\u9ec3\u6c38\u5609<br>\u9127\u774e\u55ac<br>\u8cf4\u5bb6\u965e\u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d<br>\u91d1\u5de7\u502b<br>\u7d00\u84d3\u5ba3<br>\u66f9\u5609\u51cc<br>\u9ec3\u73c9\u81fb<br>\u9ec3\u59ff\u5609<br>\u859b\u5b50\u5100<br>\u8b1d\u79c9\u6a3a\u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d<br>\u674e\u6c9b\u7df9<br>\u90b1\u923a\u55ac<br>\u67ef\u96e8\u5c91<br>\u5d14\u6085\u5bb9<br>\u838a\u598d\u9234<br>\u96f7\u5982\u5ba3<br>\u912d\u5b89\u6f54\u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d<br>\u6797\u5955\u5f64<br>\u9673\u5ba5\u9321<br>\u9ec3\u53ef\u6615<br>\u9ec3\u54c1\u745c<br>\u694a\u6e58\u82d3<br>\u6f58\u5de7\u6df3<br>\u8521\u8a60\u5e06\u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d<br>\u6797\u5bb6\u7504<br>\u5f35\u5c91\u7433<br>\u90ed\u84c1<br>\u694a\u6b23\u4ead<br>\u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d<br>\u738b\u54c1\u7440<br>\u9673\u6b46\u55ac<br>\u5289\u90c1\u9e97<br>\u8607\u5ba5\u84c1<br>\u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d<br>\u9673\u76c8\u7a4e<br>\u9673\u52ad\u5ead<br>\u9ec3\u5b50\u82b8<br>\u8521\u5bb6\u745e<br>\u8521\u6c84\u84d2<br>\u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d<br>\u9673\u82b7\u82b8<br>\u9673\u828a\u58ec<br>\u66fe\u598d\u84c9<br>\u8449\u4fd0\u4f36
                                                                                  ", "is_complex": false}}]], "main_html": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  ", "statics": {"table": 1}, "url": "https://112sport.hcc.edu.tw/Module/Score/FinalsReport_List.php?LID=203", "content": "| \u6bd4\u8cfd\u9805\u76ee | \u7b2c\u4e00\u540d | \u7b2c\u4e8c\u540d | \u7b2c\u4e09\u540d | \u7b2c\u56db\u540d | \u7b2c\u4e94\u540d | \u7b2c\u516d\u540d | \u7b2c\u4e03\u540d | \u7b2c\u516b\u540d |\n|---|---|---|---|---|---|---|---|---|\n| \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd | \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f | \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e | \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950 | \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca | \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe | | | |\n| \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd | \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63 | \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d | \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069 | \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069 | \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1 | | | |\n| \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd | \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8 | \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f | \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279 | \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b | \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f | | | |\n| \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd | \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e | \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a | \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54 | \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06 | \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36 | | | |\n", "html": "\n\n\n\n\n\u4e2d\u83ef\u6c11\u570b112\u5e74\u5168\u570b\u4e2d\u7b49\u5b78\u6821\u904b\u52d5\u6703-112\u5168\u4e2d\u904b\n\n\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\t\n \n\n \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n
                                                                                  \n\n
                                                                                  \n\n \t\t\t\t\n
                                                                                  \n\n
                                                                                  \n\n\t
                                                                                  \u8df3\u5230\u4e3b\u8981\u5167\u5bb9\n\t\t
                                                                                    \n\t\t\t
                                                                                  1. \n\t\t\t\t:::\n\t\t\t\t\u7db2\u7ad9\u5c0e\u89bd\n\t\t\t
                                                                                  2. \n\t\t\t
                                                                                  3. \u7cfb\u7d71\u767b\u5165
                                                                                  4. \n\t\t
                                                                                  \n\t

                                                                                  \"\u4e2d\u83ef\u6c11\u570b112\u5e74\u5168\u570b\u4e2d\u7b49\u5b78\u6821\u904b\u52d5\u6703\"

                                                                                  \n\n\n\t
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n\n
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n\n\n
                                                                                  \n\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t\n\t\n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t \n \n \n \n \n
                                                                                  \n \n
                                                                                  \n\t\t\t
                                                                                  \u7af6\u8cfd\u6210\u7e3e
                                                                                  \n\t\t\t\n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t
                                                                                  \u8cfd\u7a0b\u6210\u7e3e
                                                                                  \u6c7a\u8cfd\u6210\u7e3e\u7d9c\u5408\u67e5\u8a62
                                                                                  \u6210\u7e3e\u8b49\u660e\u5217\u5370
                                                                                  \u6c7a\u8cfd\u6210\u7e3e\u5831\u544a\u8868
                                                                                  \u61c9(\u5df2)\u9812\u734e\u724c
                                                                                  \u734e\u724c\u7d71\u8a08
                                                                                  \u7834\u7d00\uf93f\u67e5\u8a62
                                                                                  \u7af6\u8cfd\u7a2e\u985e\u9326\u6a19
                                                                                  \u6b77\u5e74\u6210\u7e3e\u67e5\u8a62
                                                                                  \n\t\t
                                                                                  \n\t\t\n
                                                                                  \n \n
                                                                                  \n
                                                                                    \n\n
                                                                                  1. \n \"\"\n

                                                                                    \u6c7a\u8cfd\u6210\u7e3e\u5831\u544a\u8868

                                                                                    \n
                                                                                  2. \n
                                                                                  3. \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n \n \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n \n \n \n\n\t
                                                                                  \n \t\t \t\t 4\u670815\u65e5\n \t\t \t\t 4\u670816\u65e5\n \t\t \t\t 4\u670818\u65e5\n \t\t \t\t 4\u670819\u65e5\n \t\t \t\t 4\u670820\u65e5\n \t\t
                                                                                  \n \t\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n \t\t \t\t \n\t\t\t
                                                                                  \"\u7db2\u7403\"
                                                                                  \u7db2\u7403
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  4\u670815\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670816\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u4faf\u5091\u6069
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u81fa\u5357\u5e02\u9577\u69ae\u4e2d\u5b78
                                                                                  \u4f55\u5bb8\u8f1d
                                                                                  \u7f85\u839b\u51f1
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5b89\u96c5\u5229
                                                                                  \u694a\u8283\u51f1
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u90b1\u9756\u748b
                                                                                  \u6e6f\u71ca
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u6731\u7ad1\u7444
                                                                                  \u6881\u93a7\u9e9f
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u912d\u6f54\u682d
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u5289\u66c8\u749f
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u9673\u744b\u55ac
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5f90\u8473
                                                                                  \u9673\u540d\u99a5
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u96c5\u541b
                                                                                  \u5289\u598d\u5e0c
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670818\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6b50\u5091\u6587
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u4faf\u9187\u8b19
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5433\u93a7\u5b89
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u5510\u90e1
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u9673\u923a\u8553
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u7fca\u5be7
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5f90\u8473
                                                                                  \u81fa\u5357\u5e02\u5927\u7063\u9ad8\u4e2d
                                                                                  \u9673\u4ead\u6c5d
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u8521\u6190\u61ab
                                                                                  \u9ad8\u4e2d\u7d44\u7db2\u7403
                                                                                  \u7537\u5973\u6df7\u5408\u96d9\u6253\u8cfd
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u5468\u5a01\u8fb0
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u8521\u548c\u8afa
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u738b\u4f73\u5043
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u8a31\u4f73\u742a
                                                                                  \u5357\u6295\u7e23\u5357\u6295\u9ad8\u4e2d
                                                                                  \u9673\u838a\u535a\u7fd4
                                                                                  \u8cf4\u5999\u6893
                                                                                  \u570b\u4e2d\u7d44\u7db2\u7403
                                                                                  \u7537\u5973\u6df7\u5408\u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u76e7\u5ba5\u5ef7
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u674e\u7950\u6f84
                                                                                  \u5f35\u5ead\u7504
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u9ec3\u667a\u5bec
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u555f\u5b89
                                                                                  \u9edb\u5922\u5a1c\u00b7\u963f\u53e4\u96c5\u7d0d
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u9673\u51a0\u5ef7
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u738b\u54c1\u7440
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u9673\u6b46\u55ac
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670819\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u694a\u5ead\u79be
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u6e29\u4fde\u53e1
                                                                                  \u9673\u51a0\u52f3
                                                                                  \u82b1\u84ee\u7e23\u570b\u98a8\u570b\u4e2d
                                                                                  \u67ef\u8fb0\u6f94
                                                                                  \u694a\u8c50\u6e90
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5353\u6b63\u5091
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u9ec3\u7433\u9234
                                                                                  \u8521\u5b87\u752f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u8b1d\u8a9e\u6674
                                                                                  \u9edb\u5922\u5a1c\u00b7\u963f\u53e4\u96c5\u7d0d
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u838a\u598d\u9234
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u5f35\u5ead\u7504
                                                                                  \u8cf4\u7487
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u9ec3\u8a22\u5bb9
                                                                                  \u8a79\u5fc3\u79be
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u859b\u5b50\u5100
                                                                                  \u6843\u5712\u5e02\u6148\u6587\u570b\u4e2d
                                                                                  \u5442\u5bb6\u752f
                                                                                  \u6797\u90c1\u6668
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670820\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n \t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u81fa\u5357\u5e02\u5927\u7063\u9ad8\u4e2d
                                                                                  \u9673\u51a0\u5b88
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u82b1\u84ee\u7e23\u7389\u91cc\u570b\u4e2d
                                                                                  \u5f6d\u6977\u7a0b
                                                                                  \u65b0\u5317\u5e02\u65b0\u6cf0\u570b\u4e2d
                                                                                  \u6c88\u5eb7\u5ef7
                                                                                  \u5c4f\u6771\u7e23\u9577\u6cbb\u570b\u4e2d
                                                                                  \u6234\u5955\u5bcc
                                                                                  \u5f70\u5316\u7e23\u82b1\u58c7\u570b\u4e2d
                                                                                  \u8a31\u5fb7\u5ba5
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u8521\u5b87\u752f
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u6843\u5712\u5e02\u6148\u6587\u570b\u4e2d
                                                                                  \u6797\u90c1\u6668
                                                                                  \u5c4f\u6771\u7e23\u9577\u6cbb\u570b\u4e2d
                                                                                  \u912d\u82e5\u59a4
                                                                                  \u81fa\u5317\u5e02\u897f\u6e56\u570b\u4e2d
                                                                                  \u6c6a\u4e88\u6674
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u9ec3\u7433\u9234
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u912d\u923a\u81fb
                                                                                  \u65b0\u5317\u5e02\u65b0\u6cf0\u570b\u4e2d
                                                                                  \u4f55\u73ee\u7dba
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \n\n
                                                                                  \n\n\n\n
                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n

                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t
                                                                                    \n\t
                                                                                  • \n\t\t\t\u4e3b\u8fa6\u6a5f\u95dc\uff1a\n\t\t\t\n\t\t
                                                                                  • \n\t
                                                                                  • \n\t\t\t\u627f\u8fa6\u55ae\u4f4d\uff1a\n\t\t\t
                                                                                  • \n\t
                                                                                  \n\t
                                                                                    \n\t\t
                                                                                  • 112\u5168\u4e2d\u904b\u57f7\u59d4\u6703
                                                                                  • \n\t\t
                                                                                  • \u5730\u5740\uff1a30210\u65b0\u7af9\u7e23\u7af9\u5317\u5e02\u5149\u660e\u516d\u8def10\u865fB\u68df6\u6a13
                                                                                  • \n\t\t
                                                                                  • \u8fa6\u516c\u6642\u9593\uff1a\u9031\u4e00\u81f3\u9031\u4e94\u4e0a\u53488:00\u81f3\u4e0b\u534816:00
                                                                                  • \n\t\t
                                                                                  • \u96fb\u8a71\uff1a03-5518101\u5206\u6a5f2862
                                                                                  • \n\t\t
                                                                                  • \u4fe1\u7bb1\uff1a20058475@hchg.gov.tw
                                                                                  • \n\t\t
                                                                                  • \ufeff\u700f\u89bd\u4eba\u6578\uff1a3399541\n
                                                                                  • \n\t
                                                                                  \n\n\t\n\n\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n \n\n"} +{"content_list": [[{"type": "table", "raw_content": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  ", "content": {"html": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403\u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d\u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78\u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d\u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d\u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403\u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d\u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5\u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d\u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d\u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u570b\u7537\u7d44\u7db2\u7403\u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d\u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d\u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d\u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d\u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u570b\u5973\u7d44\u7db2\u7403\u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d\u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d\u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d\u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d\u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  ", "is_complex": false, "table_nest_level": "1"}}]], "main_html": "
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  ", "statics": {"table": 1}, "url": "https://112sport.hcc.edu.tw/Module/Score/FinalsReport_List.php?LID=203", "content": "| \u6bd4\u8cfd\u9805\u76ee | \u7b2c\u4e00\u540d | \u7b2c\u4e8c\u540d | \u7b2c\u4e09\u540d | \u7b2c\u56db\u540d | \u7b2c\u4e94\u540d | \u7b2c\u516d\u540d | \u7b2c\u4e03\u540d | \u7b2c\u516b\u540d |\n|---|---|---|---|---|---|---|---|---|\n| \u9ad8\u7537\u7d44\u7db2\u7403 | \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d | \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78 | \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d | \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d | \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d | | | |\n| \u9ad8\u5973\u7d44\u7db2\u7403 | \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d | \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5 | \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d | \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d | \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d | | | |\n| \u570b\u7537\u7d44\u7db2\u7403 | \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d | \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d | \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d | \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d | \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d | | | |\n| \u570b\u5973\u7d44\u7db2\u7403 | \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d | \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d | \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d | \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d | \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d | | | |\n", "html": "\n\n\n\n\n\u4e2d\u83ef\u6c11\u570b112\u5e74\u5168\u570b\u4e2d\u7b49\u5b78\u6821\u904b\u52d5\u6703-112\u5168\u4e2d\u904b\n\n\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\t\n \n\n \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n
                                                                                  \n\n
                                                                                  \n\n \t\t\t\t\n
                                                                                  \n\n
                                                                                  \n\n\t
                                                                                  \u8df3\u5230\u4e3b\u8981\u5167\u5bb9\n\t\t
                                                                                    \n\t\t\t
                                                                                  1. \n\t\t\t\t:::\n\t\t\t\t\u7db2\u7ad9\u5c0e\u89bd\n\t\t\t
                                                                                  2. \n\t\t\t
                                                                                  3. \u7cfb\u7d71\u767b\u5165
                                                                                  4. \n\t\t
                                                                                  \n\t

                                                                                  \"\u4e2d\u83ef\u6c11\u570b112\u5e74\u5168\u570b\u4e2d\u7b49\u5b78\u6821\u904b\u52d5\u6703\"

                                                                                  \n\n\n\t
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n\n
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n
                                                                                  \"\"id=\"_WebBannerImg\"
                                                                                  \n\n\n
                                                                                  \n\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\t\n\t\n\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t \n \n \n \n \n
                                                                                  \n \n
                                                                                  \n\t\t\t
                                                                                  \u7af6\u8cfd\u6210\u7e3e
                                                                                  \n\t\t\t\n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \t\t\t
                                                                                  \u8cfd\u7a0b\u6210\u7e3e
                                                                                  \u6c7a\u8cfd\u6210\u7e3e\u7d9c\u5408\u67e5\u8a62
                                                                                  \u6210\u7e3e\u8b49\u660e\u5217\u5370
                                                                                  \u6c7a\u8cfd\u6210\u7e3e\u5831\u544a\u8868
                                                                                  \u61c9(\u5df2)\u9812\u734e\u724c
                                                                                  \u734e\u724c\u7d71\u8a08
                                                                                  \u7834\u7d00\uf93f\u67e5\u8a62
                                                                                  \u7af6\u8cfd\u7a2e\u985e\u9326\u6a19
                                                                                  \u6b77\u5e74\u6210\u7e3e\u67e5\u8a62
                                                                                  \n\t\t
                                                                                  \n\t\t\n
                                                                                  \n \n
                                                                                  \n
                                                                                    \n\n
                                                                                  1. \n \"\"\n

                                                                                    \u6c7a\u8cfd\u6210\u7e3e\u5831\u544a\u8868

                                                                                    \n
                                                                                  2. \n
                                                                                  3. \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n \n \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n \n \n \n\n\t
                                                                                  \n \t\t \t\t 4\u670815\u65e5\n \t\t \t\t 4\u670816\u65e5\n \t\t \t\t 4\u670818\u65e5\n \t\t \t\t 4\u670819\u65e5\n \t\t \t\t 4\u670820\u65e5\n \t\t
                                                                                  \n \t\t
                                                                                  \n
                                                                                  \n\n\n\n\n\n\n \t\t \t\t \n\t\t\t
                                                                                  \"\u7db2\u7403\"
                                                                                  \u7db2\u7403
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  4\u670815\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u65b9\u9756\u7def
                                                                                  \u674e\u6631\u8ce2
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5468\u9806\u5fb7
                                                                                  \u4faf\u5091\u6069
                                                                                  \u7d22\u5357\u55ac\u67cf
                                                                                  \u694a\u51f1\u6069
                                                                                  \u5289\u5b50\u8aa0
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u8607\u79b9\u4e1e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u9673\u5b5f\u8b19
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u8521\u548c\u8afa
                                                                                  \u8521\u627f\u7950
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u7167\u9321
                                                                                  \u90b1\u9756\u748b
                                                                                  \u5510\u90e1
                                                                                  \u66f9\u9594\u7fd4
                                                                                  \u9673\u6cd3\u8aed
                                                                                  \u9673\u8a9e\u7db8
                                                                                  \u6e6f\u71ca
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u7530\u6fec\u744b
                                                                                  \u5442\u674e\u6b3d\u7fd4
                                                                                  \u8449\u4f73\u5049
                                                                                  \u6f58\u7acb\u8ed2
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u67ef\u535a\u9594
                                                                                  \u9ad8\u58eb\u51f1
                                                                                  \u90ed\u7d18\u777f
                                                                                  \u9673\u5764\u4f51
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u912d\u4f0d\u6d0b
                                                                                  \u76e7\u5b87\u6f54
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u6797\u627f\u9032
                                                                                  \u5f35\u4e2d\u777f
                                                                                  \u9ec3\u97cb\u7db8
                                                                                  \u8521\u4f73\u4fee
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u6607\u6a3a
                                                                                  \u675c\u5764\u6649
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u9673\u6600\u744b
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u6b50\u5091\u6587
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u674e\u4e88\u85b0
                                                                                  \u674e\u79d1\u7de3
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u9673\u923a\u8553
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6e29\u4fde\u699b
                                                                                  \u5df4\u55ac\u767b
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u5289\u5b5d\u6148
                                                                                  \u912d\u6f54\u682d
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u6631\u5e0c
                                                                                  \u9673\u96c5\u541b
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u9ec3\u6df5\u5100
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u5289\u598d\u5e0c
                                                                                  \u8b1d\u96e8\u6069
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u9673\u744b\u55ac
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u5353\u61ff\u7444
                                                                                  \u5f35\u5de7\u6db5
                                                                                  \u9ec3\u5a49\u59ae
                                                                                  \u9ec3\u59f5\u59ae
                                                                                  \u5289\u5955\u8431
                                                                                  \u8b1d\u5143\u85b0
                                                                                  \u8607\u739f\u6615
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u738b\u4f73\u5043
                                                                                  \u4f55\u5029\u4f69
                                                                                  \u675c\u4f9d\u7d14
                                                                                  \u9673\u5bd7\u81fb
                                                                                  \u9ec3\u7230\u84c1
                                                                                  \u8607\u6021\u5be7
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u738b\u5a55\u82b8
                                                                                  \u4f59\u5a55\u7433
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u6797\u80b2\u8431
                                                                                  \u9673\u4e8e\u6db5
                                                                                  \u9ec3\u90c1\u742a
                                                                                  \u5289\u66c8\u749f
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u738b\u7d2b\u82b8
                                                                                  \u674e\u5b9c\u85b0
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9673\u601d\u9f4a
                                                                                  \u8521\u6085
                                                                                  \u8521\u6190\u61ab
                                                                                  \u8cf4\u73ee\u84c1
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u674e\u5cfb\u4ea6
                                                                                  \u6797\u90c1\u654f
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u838a\u6def\u7fd4
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5f90\u7693\u9706
                                                                                  \u8881\u4fca\u777f
                                                                                  \u694a\u6615\u7fa9
                                                                                  \u912d\u53cb\u6069
                                                                                  \u9f94\u6631\u627f
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u6797\u7fbd\u8ed2
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u8449\u9326\u4e1e
                                                                                  \u5ed6\u5927\u921e
                                                                                  \u8d99\u5149\u5ba5
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u738b\u6689\u5ef7
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u5433\u665f\u69d0
                                                                                  \u8a31\u5bb6\u7a0b
                                                                                  \u9673\u5b8f\u8ed2
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u9ec3\u51a0\u744b
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5433\u6587\u65ed
                                                                                  \u674e\u5149\u555f
                                                                                  \u5353\u6b63\u5091
                                                                                  \u6797\u8b1d\u5b89
                                                                                  \u8a31\u723e\u5a01
                                                                                  \u9ec3\u6587\u5ba5
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u738b\u67cf\u921e
                                                                                  \u80e1\u4fca\u7965
                                                                                  \u9ad8\u5b87\u8861
                                                                                  \u9ec3\u54c1\u582f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u65b9\u97cb\u55ac
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u738b\u555f\u5b89
                                                                                  \u6885\u5cea\u61f7
                                                                                  \u6b50\u967d\u4f2f\u5f65
                                                                                  \u912d\u4e0a\u99ad
                                                                                  \u912d\u7fd4\u4e91
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u5433\u5cb3\u6fa4
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u9ec3\u5b50\u5100
                                                                                  \u694a\u5ead\u79be
                                                                                  \u7c21\u5146\u5b8f
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u5718\u9ad4\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u8a31\u82b8\u8c9e
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ec3\u6c38\u5609
                                                                                  \u9127\u774e\u55ac
                                                                                  \u8cf4\u5bb6\u965e
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u91d1\u5de7\u502b
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ec3\u59ff\u5609
                                                                                  \u859b\u5b50\u5100
                                                                                  \u8b1d\u79c9\u6a3a
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u674e\u6c9b\u7df9
                                                                                  \u90b1\u923a\u55ac
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u5d14\u6085\u5bb9
                                                                                  \u838a\u598d\u9234
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u81fa\u5357\u5e02\u5fe0\u5b5d\u570b\u4e2d
                                                                                  \u6797\u5955\u5f64
                                                                                  \u9673\u5ba5\u9321
                                                                                  \u9ec3\u53ef\u6615
                                                                                  \u9ec3\u54c1\u745c
                                                                                  \u694a\u6e58\u82d3
                                                                                  \u6f58\u5de7\u6df3
                                                                                  \u8521\u8a60\u5e06
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u6797\u5bb6\u7504
                                                                                  \u5f35\u5c91\u7433
                                                                                  \u90ed\u84c1
                                                                                  \u694a\u6b23\u4ead
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u54c1\u7440
                                                                                  \u9673\u6b46\u55ac
                                                                                  \u5289\u90c1\u9e97
                                                                                  \u8607\u5ba5\u84c1
                                                                                  \u81fa\u5317\u5e02\u5927\u76f4\u9ad8\u4e2d
                                                                                  \u9673\u76c8\u7a4e
                                                                                  \u9673\u52ad\u5ead
                                                                                  \u9ec3\u5b50\u82b8
                                                                                  \u8521\u5bb6\u745e
                                                                                  \u8521\u6c84\u84d2
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u82b7\u82b8
                                                                                  \u9673\u828a\u58ec
                                                                                  \u66fe\u598d\u84c9
                                                                                  \u8449\u4fd0\u4f36
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670816\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u4faf\u5091\u6069
                                                                                  \u8cf4\u79b9\u821c
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u5433\u4f2f\u5b87
                                                                                  \u9ec3\u653f\u9594
                                                                                  \u81fa\u5357\u5e02\u9577\u69ae\u4e2d\u5b78
                                                                                  \u4f55\u5bb8\u8f1d
                                                                                  \u7f85\u839b\u51f1
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5b89\u96c5\u5229
                                                                                  \u694a\u8283\u51f1
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u90b1\u9756\u748b
                                                                                  \u6e6f\u71ca
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u6731\u7ad1\u7444
                                                                                  \u6881\u93a7\u9e9f
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u9673\u4ee5\u8ed2
                                                                                  \u8b1d\u5fc3\u8afe
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5f90\u6668\u63da
                                                                                  \u8521\u53f3\u627f
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6797\u82b3\u5b89
                                                                                  \u5f35\u5929\u99a8
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6881\u5bb8\u5f0b
                                                                                  \u842c\u5955\u5f63
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u6797\u7acb\u5fc3
                                                                                  \u912d\u6f54\u682d
                                                                                  \u81fa\u5317\u5e02\u5317\u4e00\u5973\u4e2d
                                                                                  \u674e\u5b9c\u84c1
                                                                                  \u5289\u66c8\u749f
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u9673\u744b\u55ac
                                                                                  \u8b1d\u4f73\u6069
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5f90\u8473
                                                                                  \u9673\u540d\u99a5
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u674e\u6b23\u5a77
                                                                                  \u5289\u90c1\u82b3
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u9673\u96c5\u541b
                                                                                  \u5289\u598d\u5e0c
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670818\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u9ad8\u7537\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u6d2a\u53ef\u6d69
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u6b50\u5091\u6587
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u4faf\u9187\u8b19
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5468\u66c9\u98a8
                                                                                  \u82b1\u84ee\u7e23\u82b1\u84ee\u9ad8\u4e2d
                                                                                  \u65b9\u5b8f\u6137
                                                                                  \u81fa\u5317\u5e02\u5efa\u570b\u4e2d\u5b78
                                                                                  \u5433\u93a7\u5b89
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u5510\u90e1
                                                                                  \u9ad8\u96c4\u5e02\u65b0\u838a\u9ad8\u4e2d
                                                                                  \u5468\u6587\u6bc5
                                                                                  \u9ad8\u5973\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u9673\u923a\u8553
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u5442\u4f73\u7a4e
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u66fe\u7766\u6f54
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u6797\u51a0\u59a4
                                                                                  \u9ad8\u96c4\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5433\u7fca\u5be7
                                                                                  \u81fa\u4e2d\u5e02\u6771\u5c71\u9ad8\u4e2d
                                                                                  \u5f90\u8473
                                                                                  \u81fa\u5357\u5e02\u5927\u7063\u9ad8\u4e2d
                                                                                  \u9673\u4ead\u6c5d
                                                                                  \u65b0\u5317\u5e02\u65b0\u5317\u9ad8\u4e2d
                                                                                  \u8521\u6190\u61ab
                                                                                  \u9ad8\u4e2d\u7d44\u7db2\u7403
                                                                                  \u7537\u5973\u6df7\u5408\u96d9\u6253\u8cfd
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u5433\u6649\u5cb1
                                                                                  \u66fe\u5b50\u7a4e
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u4f59\u51a0\u61b2
                                                                                  \u53e4\u9038\u5a77
                                                                                  \u65b0\u5317\u5e02\u4e09\u91cd\u9ad8\u4e2d
                                                                                  \u5468\u5a01\u8fb0
                                                                                  \u9ec3\u9756\u6df3
                                                                                  \u81fa\u5357\u5e02\u5584\u5316\u9ad8\u4e2d
                                                                                  \u8521\u548c\u8afa
                                                                                  \u6797\u7acb\u7d43
                                                                                  \u81fa\u5317\u5e02\u5357\u6e2f\u9ad8\u5de5
                                                                                  \u674e\u6649\u6e90
                                                                                  \u9ec3\u5955\u6674
                                                                                  \u65b0\u5317\u5e02\u4e09\u6c11\u9ad8\u4e2d
                                                                                  \u5ed6\u6d69\u5ef7
                                                                                  \u738b\u4f73\u5043
                                                                                  \u5c4f\u6771\u7e23\u5927\u540c\u9ad8\u4e2d
                                                                                  \u5289\u5f37\u68ee
                                                                                  \u8a31\u4f73\u742a
                                                                                  \u5357\u6295\u7e23\u5357\u6295\u9ad8\u4e2d
                                                                                  \u9673\u838a\u535a\u7fd4
                                                                                  \u8cf4\u5999\u6893
                                                                                  \u570b\u4e2d\u7d44\u7db2\u7403
                                                                                  \u7537\u5973\u6df7\u5408\u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u76e7\u5ba5\u5ef7
                                                                                  \u82b1\u82e1\u6069
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u674e\u7950\u6f84
                                                                                  \u5f35\u5ead\u7504
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u9ec3\u667a\u5bec
                                                                                  \u66f9\u5609\u51cc
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u555f\u5b89
                                                                                  \u9edb\u5922\u5a1c\u00b7\u963f\u53e4\u96c5\u7d0d
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u9673\u51a0\u5ef7
                                                                                  \u9ec3\u73c9\u81fb
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u8b1d\u79c9\u5bb8
                                                                                  \u96f7\u5982\u5ba3
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u9673\u5ba5\u9716
                                                                                  \u738b\u54c1\u7440
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u738b\u5ba5\u921e
                                                                                  \u9673\u6b46\u55ac
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670819\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \t\t \t\t\t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u6bdb\u51a0\u6dee
                                                                                  \u6b50\u5b50\u6bc5
                                                                                  \u81fa\u5357\u5e02\u5b89\u5b9a\u570b\u4e2d
                                                                                  \u66fe\u5b50\u6df5
                                                                                  \u694a\u5ead\u79be
                                                                                  \u65b0\u7af9\u5e02\u4e09\u6c11\u570b\u4e2d
                                                                                  \u674e\u5bb6\u7a4e
                                                                                  \u6797\u8c6a\u923a
                                                                                  \u5c4f\u6771\u7e23\u81f3\u6b63\u570b\u4e2d
                                                                                  \u4f59\u6893\u52e4
                                                                                  \u9673\u6975\u8a9e
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u694a\u627f\u7ff0
                                                                                  \u6492\u7490\uff0e\u4f0a\u65af\u5361\u5361\u592b\u7279
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u6e29\u4fde\u53e1
                                                                                  \u9673\u51a0\u52f3
                                                                                  \u82b1\u84ee\u7e23\u570b\u98a8\u570b\u4e2d
                                                                                  \u67ef\u8fb0\u6f94
                                                                                  \u694a\u8c50\u6e90
                                                                                  \u81fa\u5317\u5e02\u65b0\u6c11\u570b\u4e2d
                                                                                  \u5353\u6b63\u5091
                                                                                  \u8cf4\u6649\u5bec
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u96d9\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u9ec3\u7433\u9234
                                                                                  \u8521\u5b87\u752f
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u8b1d\u8a9e\u6674
                                                                                  \u9edb\u5922\u5a1c\u00b7\u963f\u53e4\u96c5\u7d0d
                                                                                  \u81fa\u5317\u5e02\u81f3\u5584\u570b\u4e2d
                                                                                  \u9ad8\u82b7\u6db5
                                                                                  \u9673\u53c8\u7dad
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u67ef\u96e8\u5c91
                                                                                  \u838a\u598d\u9234
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u5f35\u5ead\u7504
                                                                                  \u8cf4\u7487
                                                                                  \u82b1\u84ee\u7e23\u5b9c\u660c\u570b\u4e2d
                                                                                  \u9ec3\u8a22\u5bb9
                                                                                  \u8a79\u5fc3\u79be
                                                                                  \u81fa\u5317\u5e02\u65b0\u8208\u570b\u4e2d
                                                                                  \u7d00\u84d3\u5ba3
                                                                                  \u859b\u5b50\u5100
                                                                                  \u6843\u5712\u5e02\u6148\u6587\u570b\u4e2d
                                                                                  \u5442\u5bb6\u752f
                                                                                  \u6797\u90c1\u6668
                                                                                  \t\t\t\t\n\t\t\t\t
                                                                                  4\u670820\u65e5
                                                                                  \n\n\t\t
                                                                                  \n\n\t\t \n\t\t \t\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n \t
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \u570b\u7537\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u81fa\u5357\u5e02\u5927\u7063\u9ad8\u4e2d
                                                                                  \u9673\u51a0\u5b88
                                                                                  \u81fa\u5357\u5e02\u5357\u79d1\u9ad8\u4e2d
                                                                                  \u738b\u5f65\u73fa
                                                                                  \u81fa\u4e2d\u5e02\u9ece\u660e\u570b\u4e2d
                                                                                  \u6797\u6587\u8a70
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u838a\u5b78\u6fc2
                                                                                  \u82b1\u84ee\u7e23\u7389\u91cc\u570b\u4e2d
                                                                                  \u5f6d\u6977\u7a0b
                                                                                  \u65b0\u5317\u5e02\u65b0\u6cf0\u570b\u4e2d
                                                                                  \u6c88\u5eb7\u5ef7
                                                                                  \u5c4f\u6771\u7e23\u9577\u6cbb\u570b\u4e2d
                                                                                  \u6234\u5955\u5bcc
                                                                                  \u5f70\u5316\u7e23\u82b1\u58c7\u570b\u4e2d
                                                                                  \u8a31\u5fb7\u5ba5
                                                                                  \u570b\u5973\u7d44\u7db2\u7403
                                                                                  \u55ae\u6253\u8cfd
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u8521\u5b87\u752f
                                                                                  \u9ad8\u96c4\u5e02\u6b63\u8208\u570b\u4e2d
                                                                                  \u912d\u5b89\u6f54
                                                                                  \u6843\u5712\u5e02\u6148\u6587\u570b\u4e2d
                                                                                  \u6797\u90c1\u6668
                                                                                  \u5c4f\u6771\u7e23\u9577\u6cbb\u570b\u4e2d
                                                                                  \u912d\u82e5\u59a4
                                                                                  \u81fa\u5317\u5e02\u897f\u6e56\u570b\u4e2d
                                                                                  \u6c6a\u4e88\u6674
                                                                                  \u81fa\u5317\u5e02\u967d\u660e\u9ad8\u4e2d
                                                                                  \u9ec3\u7433\u9234
                                                                                  \u5f70\u5316\u7e23\u5927\u540c\u570b\u4e2d
                                                                                  \u912d\u923a\u81fb
                                                                                  \u65b0\u5317\u5e02\u65b0\u6cf0\u570b\u4e2d
                                                                                  \u4f55\u73ee\u7dba
                                                                                  \u6bd4\u8cfd\u9805\u76ee\u7b2c\u4e00\u540d\u7b2c\u4e8c\u540d\u7b2c\u4e09\u540d\u7b2c\u56db\u540d\u7b2c\u4e94\u540d\u7b2c\u516d\u540d\u7b2c\u4e03\u540d\u7b2c\u516b\u540d
                                                                                  \n\n
                                                                                  \n\n\n\n
                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n

                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t
                                                                                    \n\t
                                                                                  • \n\t\t\t\u4e3b\u8fa6\u6a5f\u95dc\uff1a\n\t\t\t\n\t\t
                                                                                  • \n\t
                                                                                  • \n\t\t\t\u627f\u8fa6\u55ae\u4f4d\uff1a\n\t\t\t
                                                                                  • \n\t
                                                                                  \n\t
                                                                                    \n\t\t
                                                                                  • 112\u5168\u4e2d\u904b\u57f7\u59d4\u6703
                                                                                  • \n\t\t
                                                                                  • \u5730\u5740\uff1a30210\u65b0\u7af9\u7e23\u7af9\u5317\u5e02\u5149\u660e\u516d\u8def10\u865fB\u68df6\u6a13
                                                                                  • \n\t\t
                                                                                  • \u8fa6\u516c\u6642\u9593\uff1a\u9031\u4e00\u81f3\u9031\u4e94\u4e0a\u53488:00\u81f3\u4e0b\u534816:00
                                                                                  • \n\t\t
                                                                                  • \u96fb\u8a71\uff1a03-5518101\u5206\u6a5f2862
                                                                                  • \n\t\t
                                                                                  • \u4fe1\u7bb1\uff1a20058475@hchg.gov.tw
                                                                                  • \n\t\t
                                                                                  • \ufeff\u700f\u89bd\u4eba\u6578\uff1a3399541\n
                                                                                  • \n\t
                                                                                  \n\n\t\n\n\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n \n\n"} diff --git a/bench/data/origin/artical_health_com.html b/bench/data/origin/artical_health_com.html new file mode 100644 index 00000000..a3fe3042 --- /dev/null +++ b/bench/data/origin/artical_health_com.html @@ -0,0 +1,3181 @@ + + + + + + + + + + + + + +11 Fruits That Are High in Magnesium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  11 Fruits That Are High in Magnesium

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Westend61 / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Magnesium is a mineral that's needed for important processes such as nerve function, blood pressure and blood sugar regulation, bone health maintenance, and more. +

                                                                                  +
                                                                                  +

                                                                                  Your daily magnesium needs depend on factors like your age and gender. Adult males need 400-420 milligrams of magnesium per day, and adult females require 310-400 milligrams per day. +

                                                                                  +
                                                                                  +

                                                                                  Nearly half of the United States population falls short of their daily magnesium intake needs, which can increase their risk of conditions like heart disease. Eating more magnesium-rich foods, like fruit, can help boost magnesium intake.  +

                                                                                  +
                                                                                  +

                                                                                  1. Prickly Pear

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  lacaosa / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Prickly pear is a plant native to Mexico. It grows oval-shaped fruits that have a sweet, berry-like flavor. +

                                                                                  +
                                                                                  +

                                                                                  Prickly pears are healthy and high in several vitamins, minerals, and healthy plant compounds. These fruits are one of the best sources of magnesium you can eat. +

                                                                                  +
                                                                                  +

                                                                                  A 1-cup serving of raw prickly pear fruit contains 127 milligrams of magnesium, which is 30% of the Daily Value (DV) for magnesium. +

                                                                                  +
                                                                                  +

                                                                                  Prickly pears are also rich in vitamin C and fiber. Vitamin C is essential for immune function, while fiber promotes gut health by supporting regular bowel movements and encouraging the growth of healthy bacteria in your digestive tract. A cup of raw prickly pear provides 23% of your DV for vitamin C and 19.2% for fiber. +

                                                                                  +
                                                                                  +

                                                                                  2. Dried Figs

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Inga Rasmussen / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Dried figs are an excellent source of magnesium. One cup provides 101 milligrams, 24% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  In addition to magnesium, figs are high in fiber and other vitamins and minerals, like vitamin B6 and calcium. A cup of dried figs contains 14.6 grams of fiber, which covers over 50% of the DV for fiber. +

                                                                                  +
                                                                                  +

                                                                                  Figs are also packed with polyphenol antioxidants, which protect against cellular damage and regulate inflammation. +

                                                                                  +
                                                                                  +

                                                                                  3. Durian

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Fajrul Islam / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Durian is a large tropical fruit native to Southeast Asia. It has a creamy texture and a sweet yet bitter taste. Durian is known for its strong smell—sometimes described as a combination of sulfur and rotten onions. +

                                                                                  +
                                                                                  +

                                                                                  Durian is a good source of fiber and several vitamins and minerals, including vitamin C, potassium, B vitamins, and magnesium. A cup of raw durian contains 72.9 milligrams of magnesium, 17% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  The same serving contains 53% of the DV for vitamin C, which functions as an antioxidant in the body and is required for immune function, collagen synthesis, and neurotransmitter production. +

                                                                                  +
                                                                                  +

                                                                                  4. Passion Fruit

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Sutthiwat Srikhrueadam / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Passion fruit is a vining plant native to South America. The plant produces small fruits with hard rinds ranging from green to purple, depending on ripeness.  +

                                                                                  +
                                                                                  +

                                                                                  The soft, seed-filled flesh of passion fruit is a good source of several nutrients, including magnesium. A cup of passionfruit contains 68.4 milligrams of magnesium, 16.2% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  It's also a good source of vitamin A, providing 16.7% of the DV. Vitamin A is needed for vision, reproductive health, immune function, and normal growth and development. +

                                                                                  +
                                                                                  +

                                                                                  5. Jackfruit

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Flori Vasilescu / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Jackfruit is the fruit of the Artocarpus heterophyllus tree, which is native to India. Jackfruits are the largest edible fruit in the world and can grow up to 110 pounds. +

                                                                                  +
                                                                                  +

                                                                                  A cup of raw jackfruit contains 47 milligrams of magnesium, 11% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  The same serving covers 16% of the DV for potassium. Like magnesium, potassium is necessary for blood pressure regulation. Eating more foods high in potassium and magnesium may help reduce high blood pressure and lower the risk of heart disease.
                                                                                  +

                                                                                  +
                                                                                  +

                                                                                  6. Avocado

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Milan Krasula / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Avocados are one of the healthiest fruits you can eat. They are rich in a number of nutrients, including fiber, healthy fats, and minerals like magnesium. A cup of cubed avocado contains 43.5 milligrams of magnesium, 10.35% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  Unlike most other fruits, avocados are low in carbohydrates and high in healthy fats, making them a good option for those on low-carbohydrate diets, like keto diets, and those with diabetes. +

                                                                                  +
                                                                                  +

                                                                                  They're also high in fiber, which promotes healthy blood sugar control by slowing the absorption of sugar into the bloodstream. A cup of cubed avocado provides 35% of the DV for fiber. +

                                                                                  +
                                                                                  +

                                                                                  7. Dried Apricots

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  BURCU ATALAY TANKUT / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Dried apricots are sweet and chewy, making them an excellent option for those craving a healthy alternative to sweets like candy.  +

                                                                                  +
                                                                                  +

                                                                                  A cup of dried apricots provides 41.6 milligrams of magnesium, 9.9% of the DV. They are also packed with other nutrients, such as potassium and iron. +

                                                                                  +
                                                                                  +

                                                                                  The same serving of dried apricots covers 19.2% of the DV for iron, which is needed for oxygen transportation, growth, energy production, hormone synthesis, and neurological development. +

                                                                                  +
                                                                                  +

                                                                                  8. Bananas

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Vera_Petrunina / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Bananas are tropical fruits that contain an impressive amount of nutrients. A cup of banana slices contains 40.6 milligrams of magnesium, 9.6% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  Bananas are also high in vitamin B6, a B vitamin needed for metabolism, immune function, neurotransmitter production, and the formation of hemoglobin, the oxygen-carrying part of red blood cells. +

                                                                                  +
                                                                                  +

                                                                                  9. Guava

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  RBB / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Guava is a tropical fruit with a sweet but tart taste. It's a good source of magnesium, with a cup of guava providing 36.4 milligrams of magnesium, or 8.6% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  Guava stands out from other fruits because it's relatively high in protein, providing 4.21 grams per cup. This fruit is also rich in vitamin C, with the same serving covering over 400% of the DV.
                                                                                  +

                                                                                  +
                                                                                  +

                                                                                  10. Papaya

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Anucha Muphasa / Getty Images

                                                                                  +
                                                                                  +

                                                                                  Papayas are large tropical fruits with bright orange, sweet-tasting flesh. Papaya is a good source of vitamins and minerals, including magnesium. A cup of papaya contains 34.6 milligrams of magnesium, 8.2% of the DV. +

                                                                                  +
                                                                                  +

                                                                                  Papayas are also high in folate, vitamin C, and carotenoid antioxidants. They are especially high in lycopene, a carotenoid pigment with powerful heart-protective properties. Research shows that following a diet high in lycopene is an effective way to lower heart disease risk. +

                                                                                  +
                                                                                  +

                                                                                  11. Blackberries

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  Iuliia Bondar / Getty Images

                                                                                  +
                                                                                  +

                                                                                  A cup of blackberries contains 28.8 milligrams of magnesium, 7% of the DV. They are also high in vitamins C and K and manganese, a mineral involved in immune health, energy metabolism, and nervous system function. +

                                                                                  +
                                                                                  +

                                                                                  Blackberries contain concentrated antioxidants, such as phenolic acids and anthocyanins, which give them powerful anti-inflammatory and cellular protective properties. +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Other Food Sources of Magnesium

                                                                                  +

                                                                                  In addition to fruits, magnesium can be found in nuts, vegetables, seeds, and beans. +

                                                                                  +
                                                                                  +

                                                                                  Here are some of the best dietary sources of magnesium: +

                                                                                  +
                                                                                  +
                                                                                  • Spinach: 156 milligrams (mg) per cooked cup, or 37% of the Daily Value (DV)
                                                                                  • Pumpkin seeds: 156 mg per ounce, or 37% of the DV
                                                                                  • Chia seeds: 111 mg per ounce, or 26% of the DV
                                                                                  • Black beans: 120 mg per cup, or 28% of the DV
                                                                                  • Edamame: 100 mg per cup, or 24% of the DV
                                                                                  • Brown rice: 84 mg per cup, or 20% of the DV
                                                                                  • Almonds: 80 mg per ounce, or 19% of the DV
                                                                                  • Cashews: 74 mg per ounce, or 18% of the DV
                                                                                  • Soy milk: 61 mg per cup, or 15% of the DV
                                                                                  • Yogurt: 42 mg per 8 ounces, or 10% of the DV
                                                                                  • +
                                                                                  +
                                                                                  +

                                                                                  To ensure you hit your daily magnesium requirements, try consuming a variety of magnesium-rich foods, like greens, beans, nuts, and seeds. +

                                                                                  +
                                                                                  +

                                                                                  A Quick Review

                                                                                  +

                                                                                  Magnesium is a mineral needed to regulate blood pressure, nerve function, and many other critical body processes. +

                                                                                  +
                                                                                  +

                                                                                  Some fruits, like prickly pear, jackfruit, durian, and blackberries, are high in magnesium. Try incorporating these and other magnesium-rich foods into your diet to help you meet your daily magnesium needs.
                                                                                  +

                                                                                  +
                                                                                  +
                                                                                  Was this page helpful?
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  29 Sources + + + + + +
                                                                                  +
                                                                                  Health.com uses only high-quality sources, including peer-reviewed studies, to support the facts within our articles. Read our editorial process to learn more about how we fact-check and keep our content accurate, reliable, and trustworthy.
                                                                                  +
                                                                                    +
                                                                                  1. National Institutes of Health: Office of Dietary Supplements. Magnesium.

                                                                                  2. +
                                                                                  3. Rosique-Esteban N, Guasch-Ferré M, Hernández-Alonso P, Salas-Salvadó J. Dietary magnesium and cardiovascular disease: A review with emphasis in epidemiological studies. Nutrients. 2018;10(2):168. doi:10.3390/nu10020168

                                                                                  4. +
                                                                                  5. The University of Arizona Cooperative Extension. Prickly pear cactus: Food of the desert.

                                                                                  6. +
                                                                                  7. Madrigal-Santillán E, Portillo-Reyes J, Madrigal-Bujaidar E, et al. Opuntia spp. In human health: A comprehensive summary on its pharmacological, therapeutic and preventive properties. Part 2. Plants (Basel). 2022;11(18):2333. doi:10.3390/plants11182333

                                                                                  8. +
                                                                                  9. U.S. Department of Agriculture: FoodData Central. Prickly pears, raw.

                                                                                  10. +
                                                                                  11. Akbar A, Shreenath AP. High fiber diet. In: StatPearls. StatPearls Publishing; 2023.

                                                                                  12. +
                                                                                  13. U.S. Department of Agriculture: FoodData Central. Figs, dried, uncooked.

                                                                                  14. +
                                                                                  15. Sandhu AK, Islam M, Edirisinghe I, Burton-Freeman B. Phytochemical composition and health benefits of figs (fresh and dried): A review of literature from 2000 to 2022. Nutrients. 2023;15(11):2623. doi:10.3390/nu15112623

                                                                                  16. +
                                                                                  17. Lee J, Che Hamzah J, Mohd Khialdin S, Naffi AA. Bilateral open globe injury secondary to the king of fruits: Durian fall. Cureus. 15(5):e39153. doi:10.7759/cureus.39153

                                                                                  18. +
                                                                                  19. U.S. Department of Agriculture: FoodData Central. Durian, raw or frozen.

                                                                                  20. +
                                                                                  21. National Institutes of Health: Office of Dietary Supplements. Vitamin C.

                                                                                  22. +
                                                                                  23. U.S. Department of Agriculture: FoodData Central. Passion fruit, raw.

                                                                                  24. +
                                                                                  25. U.S. Department of Agriculture: FoodData Central. Passion-fruit, (granadilla), purple, raw.

                                                                                  26. +
                                                                                  27. National Institutes of Health: Office of Dietary Supplements. Vitamin A.

                                                                                  28. +
                                                                                  29. Ranasinghe RASN, Maduwanthi SDT, Marapana RAUJ. Nutritional and health benefits of jackfruit (Artocarpus heterophyllus Lam.): A review. Int J Food Sci. 2019;2019:4327183. doi:10.1155/2019/4327183

                                                                                  30. +
                                                                                  31. U.S. Department of Agriculture. FoodData Central. Jackfruit, raw.

                                                                                  32. +
                                                                                  33. Han M, Zhang Y, Fang J, et al. Associations between dietary magnesium intake and hypertension, diabetes, and hyperlipidemia. Hypertens Res. 2024;47(2):331-341. doi:10.1038/s41440-023-01439-z

                                                                                  34. +
                                                                                  35. Filippini T, Naska A, Kasdagli MI, et al. Potassium intake and blood pressure: A dose-response meta-analysis of randomized controlled trials. J Am Heart Assoc. 2020;9(12):e015719. doi:10.1161/JAHA.119.015719

                                                                                  36. +
                                                                                  37. U.S. Department of Agriculture: FoodData Central. Avocados, raw, all commercial varieties.

                                                                                  38. +
                                                                                  39. U.S. Department of Agriculture: FoodData Central. Apricots, dried, sulfured, uncooked.

                                                                                  40. +
                                                                                  41. National Institutes of Health: Office of Dietary Supplements. Iron.

                                                                                  42. +
                                                                                  43. U.S. Department of Agriculture: FoodData Central. Bananas, raw.

                                                                                  44. +
                                                                                  45. National Institutes of Health: Office of Dietary Supplements. Vitamin B6.

                                                                                  46. +
                                                                                  47. U.S. Department of Agriculture: FoodData Central. Guava, common, raw.

                                                                                  48. +
                                                                                  49. U.S. Department of Agriculture: FoodData Central. Papaya, raw

                                                                                  50. +
                                                                                  51. Przybylska S, Tokarczyk G. Lycopene in the prevention of cardiovascular diseases. Int J Mol Sci. 2022;23(4):1957. Published 2022 Feb 10. doi:10.3390/ijms23041957

                                                                                  52. +
                                                                                  53. U.S. Department of Agriculture: FoodData Central. Blackberries, raw.

                                                                                  54. +
                                                                                  55. National Institutes of Health: Office of Dietary Supplements. Manganese.

                                                                                  56. +
                                                                                  57. Vahapoglu B, Erskine E, Gultekin Subasi B, Capanoglu E. Recent studies on berry bioactives and their health-promoting roles. Molecules. 2021;27(1):108. doi:10.3390/molecules27010108

                                                                                  58. +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + diff --git a/bench/data/origin/blog_plainspot.html b/bench/data/origin/blog_plainspot.html new file mode 100644 index 00000000..812902d1 --- /dev/null +++ b/bench/data/origin/blog_plainspot.html @@ -0,0 +1,951 @@ + + + + + + + + + + + + + + + + + + + +A plain blog about politics: Acceptable + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Monday, December 5, 2011

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + +

                                                                                  +Acceptable +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +Since I've commented quite a bit on polling that as I read it shows Mitt Romney broadly acceptable to most Republican voters, I definitely need to say something about a new poll today that doesn't exactly show that. Gallup got around to actually asking that very question ("Please tell me if you would find ___ to be an acceptable  nominee for president from the Republican Party, or not"). The answers mostly showed the weakness of the field, with six of the eight candidates asked about scoring well below 50% acceptable. But the clear most-acceptable candidate is Newt Gingrich, with a 62/34 acceptable/not acceptable ratio, while Romney is only at 54/41.
                                                                                  +
                                                                                  +There are a lot of ways to look at this, but overall it's certainly a piece of evidence that the anti-Romney vote is, well, around 40%. Only a piece of evidence, however. It's not clear how hard these kinds of numbers might be, in either direction. On the positive side, it seems unlikely that Newt would remain over 60% once more Republicans know that he's been lobbying for Freddie Mac, and supported the individual mandate on health insurance, and made a climate change ad with Nancy Pelosi, and all the rest of it. On the other hand, it's certainly possible that the "unacceptable" answers are awful soft, for Romney and for everyone else.
                                                                                  +
                                                                                  +In particular, as Greg pointed out, Romney only does three points better on the "acceptable" scale with moderate Republicans than does Newt. This isn't the first indication we've had that Romney isn't doing as well with moderate Republicans as one would think he should be. Whether that means he has some room to grow or that he's just not an appealing politician is, I guess, still entirely up in the air at this point.
                                                                                  +
                                                                                  +I still overall don't see a low cap on Romney's support, but of course all the evidence counts, and polling in general begins to be a little more important the closer we get to actual voting. I'll be continuing to track anything more we get on this one. +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +

                                                                                  14 comments:

                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  1. Kudos for adapting your views a bit as new data comes in. I think you've been a step behind on the Newt thing because your analysis is so thoroughly grounded in political theory, data and historical precedent. Sure, that stuff still matters, but in the 2012 Republican primaries, all bets are off. The GOP and their base went nuts after Obama won, pretending otherwise only weakens your analysis.

                                                                                    ReplyDelete
                                                                                  2. "I still overall don't see a low cap on Romney's support..."

                                                                                    .

                                                                                    Well as I say, there's no gettin' through to the terminally perceptive. ;-)

                                                                                    And you're right, polling does begin to be a little more important the closer we get to actual voting. But there are exceptions to that rule, for candidates who are well known. Unknowns can see late movement, as they become known (Huntsman?). But knowns, a month out from an election, are captive to events and fortune, because everybody already knows who they are. That's why you see Romney panicking the last few days. He's captive to events and fortune, things like NEWT FRICKING GINGRICH stealing his nomination, if you can believe it.

                                                                                    Willard is a known, and the ABR bloc is at 40% and counting. Heck, that's even bigger than I thought it was.

                                                                                    ReplyDelete
                                                                                  3. Anon 4:41, I don't understand -- Mitt Romney's numbers can't move much because he's so well known to the GOP base, while Gingrich's numbers have shifted by tens and dozens of points (depending on the question)? Romney is so much better known than Newt Gingrich that such widespread openness to reevaluating Gingrich doesn't suggest potential willingness to reevaluate Romney? How could that possibly be the case?

                                                                                    ReplyDelete
                                                                                  4. Of course the numbers are soft, but I would think they are soft more in the sense that once there is a Republican nominee and everyone starts singing from the same hymnal (see Rushbo's rhetorical gymnastics to support nominee McCain), anyone they nominate will eventually be "acceptable" to 80-90% of Republican primary voters.

                                                                                    This is how Alan Keyes got 27% as a carpet bagging IL Senate candidate when the original nominee was forced out by a sex scandal. Even the most ridiculous campaign by a painfully flawed replacement candidate gets 27% of Republicans. It's an utter floor.

                                                                                    However, that doesn't happen until there is an actual nominee - and it's during the upcoming primaries where these numbers still matter to some degree. Even still, second place?

                                                                                    THIS IS EXCELLENT NEWS FOR MITT ROMNEY!

                                                                                    ReplyDelete
                                                                                  5. You'd have to reference my discussion of the other day, but I'll repeat a bit of it here. Gingrich's movement is directly related to the existence of the ABR bloc. The fact that the ABR crowd is circling back around to Gingrich, the guy that they summarily rejected at the commencement of their long slog through the ABR process, is the final proof of the magnitude of the ABR bloc (and I doubt there's anybody but the terminally perceptive who need that final proof, but here it is.).

                                                                                    These people are coming back around, full circle, to NEWT FRICKING GINGRICH. Anybody who doesn't get the significance of this must be trapped in an impenetrable bubble somewhere.

                                                                                    Gingrich is one of the events and fortunes that poor Willard has to accept, because he can't move the needle on his own. And Gingrich is just fortunate that Willard is out there. This all has nothing to do with him... he's just like Willard in that way. That's why I'm expecting him to step on a landmine soon, like he does. He thinks he's standing on 3rd because he hit a triple.

                                                                                    ReplyDelete
                                                                                  6. You lefties should really be paying me for this commentary. ;-)

                                                                                    ReplyDelete
                                                                                  7. Who do we make the check out to?

                                                                                    ReplyDelete
                                                                                  8. Did they conduct this poll earlier in the race, when Cain/Bachmann/Perry/Trump/et al were in the lead? If they did, it might give us a clue how useful this metric really is. If, for example, Trump was considered broadly "acceptable" by GOP voters at the time of his surge, that would be evidence that this metric is pretty meaningless.

                                                                                    ReplyDelete
                                                                                  9. Unfortunately, no; it's the first time they've run it this cycle. And I spent some time looking for their 2008 results, but couldn't find them, so either I'm lame with the Google or they didn't do it. Both are possible!

                                                                                    ReplyDelete
                                                                                  10. Jon:

                                                                                    http://www.gallup.com/poll/23764/nearly-republicans-would-find-mccain-acceptable-nominee.aspx

                                                                                    http://www.gallup.com/poll/28162/giuliani-would-acceptable-nominee-nearly-republicans.aspx

                                                                                    ReplyDelete
                                                                                  11. Wow. I am officially way lame.

                                                                                    As far as substance...Romney is about where McCain was. FWIW. And in the earlier one, Newt was 43/52, again FWIW.

                                                                                    I'll stick with what I said: it's evidence, but it's not anything close to definitive. As usual, the most important thing to remember is that most GOP voters have paid very little attention to the nomination race so far, and there's good reason to believe that their opinions are very soft.

                                                                                    ReplyDelete
                                                                                  12. Yeah, but the McCain one was from mid-2006. Notice that Obama isn't even mentioned, yet several candidates who never entered the race (Condi, Jeb, Newt, Al Gore, etc.) are included in the poll. I'd take a poll from a few weeks before the primary just a tad more seriously than one from eighteen months before.

                                                                                    (I got to these results simply by typing site:gallup.com "acceptable nominees" into Google. It turned up nine hits, most of them references to the recent poll.)

                                                                                    ReplyDelete
                                                                                  13. Anon 5:39: okay, so it's a more complicated claim: they know Newt and know they don't like him, but he looks very different against just Romney than he does against the whole field. In the former context, he's more than acceptable. Is that right?

                                                                                    So, that makes sense and is perfectly plausible, but isn't it circular? "We can tell ABR supporters won't change their minds about Romney, because they'll even change their minds about Gingrich rather than support Romney" partially relies on the claim it's trying to prove. This could certainly still be right -- not all circles are vicious -- but I had thought you were making the stronger claim that this provided independent evidence for the hardness of the hard core of ABR.

                                                                                    So, this goes back to your epistemological critique, which is both broad and deep (it's pretty hard to get out of a self-reinforcing bubble!). Liberals can't correctly interpret the information they're -- we're -- given, so it's pointless to try to reason by offering isolated facts, even in response to purely empirical questions (like this one about the strength of the ABR bloc). Rather, the best strategy is to present a coherent alternative worldview, so that we can see our bubble, and that there's something outside it.

                                                                                    -- Am I understanding you correctly? If so, that's a very deep puzzle about justification, and probably the best case one could make for gadfly behavior. Hm...

                                                                                    ReplyDelete
                                                                                  14. Not too mucb interested in what you formulate as conclusion, classicist. You can go on ahead with that, alone.

                                                                                    We have what we have, right in front of our faces. We don't have what we don't have in front of our faces. The only question is, are we paying attention to what we have, and what we don't have, right in front of our faces?

                                                                                    The terminally perceptive aren't, for sure. ;-)

                                                                                    ReplyDelete
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  +

                                                                                  +

                                                                                  Note: Only a member of this blog may post a comment.

                                                                                  + + + + +
                                                                                  +

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + diff --git a/bench/data/origin/code_19_codecademy.html b/bench/data/origin/code_19_codecademy.html new file mode 100644 index 00000000..fbde900d --- /dev/null +++ b/bench/data/origin/code_19_codecademy.html @@ -0,0 +1,5284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Learn Swift: Arrays, Sets, and Dictionaries: Arrays & Sets Cheatsheet | Codecademy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Codecademy Logo + + + + + + +

                                                                                  Arrays & Sets

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Array

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  An array stores an ordered collection of values + of the same data type.

                                                                                  +

                                                                                  Use the initializer syntax, [Type](), to create an empty array + of a certain type.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var scores = [Int]()
                                                                                  +
                                                                                  // The array is empty: []
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + Initialize with Array Literal

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  An array can be initialized with an array + literal, which is a short-hand method of writing one or more values as + an array collection.

                                                                                  +

                                                                                  An array literal is written as a list of values, + separated by commas, and surrounded by a pair of square brackets.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  // Using type inference:
                                                                                  var snowfall = [2.4, 3.6, 3.4, 1.8, 0.0]
                                                                                  +
                                                                                  // Being explicit with the type:
                                                                                  var temp: [Int] = [33, 31, 30, 38, 44]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Index

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  An index refers to an item’s position within an + ordered list. Use the subscript syntax, array[index], to retrieve an + individual element from an array.

                                                                                  +

                                                                                  Note: Swift arrays are + zero-indexed, meaning the first element has index 0.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var vowels = ["a", "e", "i", "o", "u"]
                                                                                  +
                                                                                  print(vowels[0]) // Prints: a
                                                                                  print(vowels[1]) // Prints: e
                                                                                  print(vowels[2]) // Prints: i
                                                                                  print(vowels[3]) // Prints: o
                                                                                  print(vowels[4]) // Prints: u
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .count Property

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .count property returns the number + of elements in an array.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var grocery = ["🥓", "🥞", "🍪", "🥛", "🍊"]
                                                                                  +
                                                                                  print(grocery.count)
                                                                                  +
                                                                                  // Prints: 5
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .append() Method and += Operator

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .append() method can be called on + an array to add an item to the end of the array.

                                                                                  +

                                                                                  The += + addition assignment operator can be used to add the elements of another + array to the existing array.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var gymBadges = ["Boulder", "Cascade"]
                                                                                  +
                                                                                  gymBadges.append("Thunder")
                                                                                  gymBadges += ["Rainbow", "Soul"]
                                                                                  +
                                                                                  // ["Boulder", "Cascade", "Thunder", "Rainbow", "Soul"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .insert() and .remove() Methods

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .insert() method can be called on + an array to add an element at a specified index. It takes two arguments: + value and at: index.

                                                                                  +

                                                                                  The .remove() method can be called on + an array to remove an element at a specified index. It takes one + argument: at: index.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var moon = ["🌖", "🌗", "🌘", "🌑"]
                                                                                  +
                                                                                  moon.insert("🌕", at: 0)
                                                                                  +
                                                                                  // ["🌕", "🌖", "🌗", "🌘", "🌑"]
                                                                                  +
                                                                                  moon.remove(at: 4)
                                                                                  +
                                                                                  // ["🌕", "🌖", "🌗", "🌘"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Iterating + Over an Array

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  In Swift, a for-in loop can be used to iterate + through the items of an array.

                                                                                  +

                                                                                  This is a powerful tool for working with and + manipulating a large amount of data.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var employees = ["Michael", "Dwight", "Jim", "Pam", "Andy"]
                                                                                  +
                                                                                  for person in employees {
                                                                                  print(person)
                                                                                  }
                                                                                  +
                                                                                  // Prints: Michael
                                                                                  // Prints: Dwight
                                                                                  // Prints: Jim
                                                                                  // Prints: Pam
                                                                                  // Prints: Andy
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Swift Sets

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  We can use a set to store unique elements of the + same data type.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var paintingsInMOMA: Set = ["The Dream", "The Starry Night", "The False Mirror"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Empty Sets

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  An empty set is a set that contains no values + inside of it.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var team = Set<String>()
                                                                                  +
                                                                                  print(team)
                                                                                  // Prints: []
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Populated Sets

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  To create a set populated with values, use the + Set keyword before the + assignment operator.

                                                                                  +

                                                                                  The values of the set must be contained within + brackets [] and separated with + commas ,.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var vowels: Set = ["a", "e", "i", "o", "u"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .insert()

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  To insert a single value into a set, append .insert() to a set and place the + new value inside the parentheses ().

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var cookieJar: Set = ["Chocolate Chip", "Oatmeal Raisin"]
                                                                                  +
                                                                                  // Add a new element
                                                                                  cookieJar.insert("Peanut Butter Chip")
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + .remove() and .removeAll() Methods

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  To remove a single value from a set, append .remove() to a set with the value + to be removed placed inside the parentheses ().

                                                                                  +

                                                                                  To remove every single value from a set at once, + append .removeAll() to a set. +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var oddNumbers: Set = [1, 2, 3, 5]
                                                                                  +
                                                                                  // Remove an existing element
                                                                                  oddNumbers.remove(2)
                                                                                  +
                                                                                  // Remove all elements
                                                                                  oddNumbers.removeAll()
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .contains()

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Appending .contains() to an existing set + with an item in the parentheses () will return a true or false value that states whether + the item exists within the set.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var names: Set = ["Rosa", "Doug", "Waldo"]
                                                                                  +
                                                                                  print(names.contains("Lola")) // Prints: false
                                                                                  +
                                                                                  if names.contains("Waldo"){
                                                                                  print("There's Waldo!")
                                                                                  } else {
                                                                                  print("Where's Waldo?")
                                                                                  }
                                                                                  // Prints: There's Waldo!
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Iterating + Over a Set

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  A for-in loop can be used to iterate + over each item in a set.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var recipe: Set = ["Chocolate chips", "Eggs", "Flour", "Sugar"]
                                                                                  +
                                                                                  for ingredient in recipe {
                                                                                  print ("Include \(ingredient) in the recipe.")
                                                                                  }
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .isEmpty Property +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Use the built-in property .isEmpty to check if a set has no + values contained in it.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var emptySet = Set<String>()
                                                                                  +
                                                                                  print(emptySet.isEmpty) // Prints: true
                                                                                  +
                                                                                  var populatedSet: Set = [1, 2, 3]
                                                                                  +
                                                                                  print(populatedSet.isEmpty) // Prints: false
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .count Property +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The property .count returns the number of + elements contained within a set.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var band: Set = ["Guitar", "Bass", "Drums", "Vocals"]
                                                                                  +
                                                                                  print("There are \(band.count) players in the band.")
                                                                                  // Prints: There are 4 players in the band.
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + .intersection() Operation

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .intersection() operation + populates a new set of elements with the overlapping elements of two + sets.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var setA: Set = ["A", "B", "C", "D"]
                                                                                  var setB: Set = ["C", "D", "E", "F"]
                                                                                  +
                                                                                  var setC = setA.intersection(setB)
                                                                                  print(setC) // Prints: ["D", "C"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  .union() Operation +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .union() operation populates a new + set by taking all the values from two sets and combining them.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var setA: Set = ["A", "B", "C", "D"]
                                                                                  var setB: Set = ["C", "D", "E", "F"]
                                                                                  +
                                                                                  var setC = setA.union(setB)
                                                                                  print(setC)
                                                                                  // Prints: ["B", "A", "D", "F", "C", "E"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + .symmetricDifference() Operation

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .symmetricDifference() operation + creates a new set with all the non-overlapping values between two sets. +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var setA: Set = ["A", "B", "C", "D"]
                                                                                  var setB: Set = ["C", "D", "E", "F"]
                                                                                  +
                                                                                  var setC = setA.symmetricDifference(setB)
                                                                                  print(setC)
                                                                                  // Prints: ["B", "E", "F", "A"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + .subtracting() Operation

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  The .subtracting() operation removes + the values of one second set from another set and stores the remaining + values in a new set.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  var setA: Set = ["A", "B", "C", "D"]
                                                                                  var setB: Set = ["C", "D"]
                                                                                  +
                                                                                  var setC = setA.subtracting(setB)
                                                                                  print(setC)
                                                                                  // Prints: ["B", "A"]
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Learn more on Codecademy

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + diff --git a/bench/data/origin/code_20_dev_to.html b/bench/data/origin/code_20_dev_to.html new file mode 100644 index 00000000..73044f8d --- /dev/null +++ b/bench/data/origin/code_20_dev_to.html @@ -0,0 +1,3549 @@ + + + + + + Building a React Guitar Scale Visualizer: Interactive Pentatonic Patterns - DEV Community + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  DEV Community

                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + diff --git a/bench/data/origin/math_1.html b/bench/data/origin/math_1.html new file mode 100644 index 00000000..2d7550e0 --- /dev/null +++ b/bench/data/origin/math_1.html @@ -0,0 +1,1736 @@ + + + + + + + + + + quantum field theory - 1-form formulation of quantized electromagnetism - Physics Stack Exchange + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + Skip to main content +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + Ask questions and share your thoughts on the future of Stack Overflow. Join our first live community AMA this Wednesday, February 26th, at 3 PM ET. + + Learn more +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + Asked + +
                                                                                  +
                                                                                  + Modified + 13 years, 9 months ago +
                                                                                  +
                                                                                  + Viewed + 460 times +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +7
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + $\begingroup$ +
                                                                                  + +

                                                                                  In a perpetual round of reformulations, I've put quantized electromagnetism into a 1-form notation. I'm looking for references that do anything similar, both to avoid reinventing the wheel and perhaps to cite. Taking the electromagnetic field $\hat A$ to be an (operator-valued distributional) 1-form, we can write a smeared operator $\hat A_H$ in terms of the inner product on the exterior algebra as $\bigl<\hat A,H\bigr>$ (taking the test function $H$ also to be a 1-form, but satisfying Schwartz space-like smoothness conditions in real space and in fourier space instead of being a distribution). $\hat A$ projects into annihilation and creation parts, $\hat A^+$ and $\hat A^-$ respectively, $\hat A=\hat A^+ +\hat A^-$, for which the action on the vacuum is defined by $\hat A^+\left|0\right>=0$, and we have the commutation relations $\Bigl[\bigl<\hat A^+,H\bigr>,\bigl<\hat A^-,J\bigr>\Bigr]=\left<H,E(J)\right>$, where $\widetilde{E(J)}(k)=2\pi\delta(k^2)\theta(k_0)\tilde J(k)$ projects to the positive frequency forward light-cone.

                                                                                  + +

                                                                                  The commutation relations are not positive semi-definite for arbitrary test functions $H$, $\Bigl[\bigl<\hat A^+,H^*\bigr>,\bigl<\hat A^-,H\bigr>\Bigr]\not\ge 0$, which is fixed by the Gupta-bleuler condition, which can be stated in this formalism as $\delta\hat A^+\left|\psi\right>=0$, for all states $\left|\psi\right>$, not just for the vacuum state.

                                                                                  + +

                                                                                  By the Hodge decomposition theorem, we can write the test function $H$ uniquely as $H=d\phi+\delta F+\omega$, where $\phi$ is a 0-form, $F$ is a 2-form, and $\omega$ is a harmonic 1-form, so we can write +$$\bigl<\hat A^+\!,H\bigr>\left|\psi\right>\! + =\bigl<\hat A^+\!,d\phi+\delta F+\omega\bigr>\left|\psi\right>\! + =\Bigl(\!\bigl<\delta\hat A^+,\phi\bigr>+\bigl<\hat A^+\!,\delta F+\omega\bigr>\!\Bigr) + \left|\psi\right>\! + =\bigl<\hat A^+\!,\delta F+\omega\bigr>\left|\psi\right>.$$ +The harmonic 1-form $\omega$ has to be zero to satisfy the Schwartz space condition, and by the left action of $\hat A^-$ on arbitrary states we have the same projection of the arbitrary test function $H$ to $\delta F$, so all we are left with is the electromagnetic field observable $\hat\Phi_F=\hat A_{\delta F}=\bigl<\hat A,\delta F\bigr>$. Unsurprisingly, in the free field case, in the absence of charges, the electromagnetic potential observable is exactly equivalent to just the electromagnetic field observable, for which we can verify that $\Bigl[\bigl<\hat A^+,\delta F^*\bigr>,\bigl<\hat A^-,\delta F\bigr>\Bigr]\ge 0$, using which we can use the GNS construction of a free field Hilbert space.

                                                                                  + +

                                                                                  So this is a reference request. Is there any literature that uses this kind of mathematical formalism for the quantized electromagnetic field? Even vaguely the same! My sense is that AQFT has moved to more abstract methods, while more practical interacting QFT has become historically committed to index notations that are little changed from 50 years ago, even though the methods of interacting quantum fields have changed in many other ways, and that mathematicians who take on the structures of QFT, as Folland does in http://www.amazon.com/Quantum-Theory-Mathematical-Surveys-Monographs/dp/0821847058, make strenuous efforts not to let their notation and methods stray too far from the mainline.

                                                                                  +
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + $\endgroup$ +
                                                                                  + + + + + 2 +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  • +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + Just stumbled across this again... I'm not familiar with the literature but I'll take a look around and see if I can find anything, since this is a really good question and I think for the good of the site, we need to be able to come up with answers for these sorts of things. + $\endgroup$ +
                                                                                    +– David Z +
                                                                                    + + Commented + Jul 18, 2011 at 3:41 + +
                                                                                    +
                                                                                    +
                                                                                  • +
                                                                                  • +
                                                                                    +
                                                                                    + 4 +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + There is no difference between your formalism and any of the standard ones. A is a one form in all of them. + $\endgroup$ +
                                                                                    +– Ron Maimon +
                                                                                    + + Commented + Sep 3, 2011 at 6:46 + +
                                                                                    +
                                                                                    +
                                                                                  • + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + 0 +

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + Reset to default + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  + + + +

                                                                                  + Your Answer +

                                                                                  + + + + + +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + +

                                                                                  + By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy. +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +

                                                                                  + +

                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bench/data/origin/math_mathhelpforum_1.html b/bench/data/origin/math_mathhelpforum_1.html new file mode 100644 index 00000000..03f1fcee --- /dev/null +++ b/bench/data/origin/math_mathhelpforum_1.html @@ -0,0 +1,411 @@ + + integral question.. - Math Help Forum


                                                                                  + Results 1 to 11 of 11 +

                                                                                  + Math Help - integral question..

                                                                                  1. #1
                                                                                    + MHF Contributor +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    1,401

                                                                                    + integral question.. +

                                                                                    <br />
+\int \frac{dz}{\sqrt{z^2+\frac{1}{4}}}=2\int \frac{\frac{1}{2}\frac{dx}{\cos ^2 x}}{\sqrt{\tan^2 x+1}}=\int \frac{dx}{\cos x}\\<br />
+
                                                                                    <br />
+z=\frac{1}{2}\tan x\\<br />
+
                                                                                    <br />
+dz=\frac{1}{2}\frac{dx}{\cos ^2 x}<br />
+
                                                                                    +what to do next?? +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  2. #2
                                                                                    + Flow Master +
                                                                                    mr fantastic's Avatar
                                                                                    Joined
                                                                                    Dec 2007
                                                                                    From
                                                                                    Zeitgeist
                                                                                    Posts
                                                                                    16,947
                                                                                    Thanks
                                                                                    6
                                                                                    Quote Originally Posted by transgalactic View Post
                                                                                    <br />
+\int \frac{dz}{\sqrt{z^2+\frac{1}{4}}}=2\int \frac{\frac{1}{2}\frac{dx}{\cos ^2 x}}{\sqrt{\tan^2 x+1}}=\int \frac{dx}{\cos x}\\<br />
+
                                                                                    <br />
+z=\frac{1}{2}\tan x\\<br />
+
                                                                                    <br />
+dz=\frac{1}{2}\frac{dx}{\cos ^2 x}<br />
+
                                                                                    +what to do next??
                                                                                    Read this thread: http://www.mathhelpforum.com/math-he...functions.html
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  3. #3
                                                                                    + MHF Contributor +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    1,401
                                                                                    + i am not using sec
                                                                                    +only sin cos tan cot

                                                                                    +its very complicated and with sec
                                                                                    +so if i will put sec=1/cos then i ll get a very complicated expression
                                                                                    +is there an easier way?? +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  4. #4
                                                                                    + Member +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    114
                                                                                    + + is there an easier way?? + +
                                                                                    You could try a hyperbolic substitution. In this example we're looking to reduce the sum of two squares to a single square, z = \frac{1}{2}\sinh \theta will work here.

                                                                                    z = \frac{1}{2}\sinh \theta \implies dz = \frac{1}{2}\cosh\theta\, d\theta

                                                                                    +So

                                                                                    I = \int\frac{\frac{1}{2}\cosh\theta \, d\theta}{\sqrt{\left(\frac{1}{2}\right)^2+\left(\f  rac{1}{2}\right)^2\sinh\theta}} = \int d\theta = \theta + C

                                                                                    +We need to write this in terms of our original variable so

                                                                                    z = \frac{1}{2}\sinh\theta \implies \theta = \sinh^{-1}(2z)

                                                                                    +So

                                                                                    I = \sinh^{-1}(2z) + C

                                                                                    +This is also the answer maxima gives to the integral
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  5. #5
                                                                                    + MHF Contributor +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    1,401
                                                                                    + i cant use hyperbolic function +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  6. #6
                                                                                    + Member +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    114
                                                                                    + Why not?

                                                                                    +Well if that's really the case then the substitution reduces your original integral to

                                                                                    \int \sec x \, d x

                                                                                    +once you figure that out, draw a right angled triangle with \tan x = 2z and use it to work out what any other trig functions in your answer are in terms of z
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  7. #7
                                                                                    + Flow Master +
                                                                                    mr fantastic's Avatar
                                                                                    Joined
                                                                                    Dec 2007
                                                                                    From
                                                                                    Zeitgeist
                                                                                    Posts
                                                                                    16,947
                                                                                    Thanks
                                                                                    6
                                                                                    Quote Originally Posted by transgalactic View Post
                                                                                    i am not using sec
                                                                                    +only sin cos tan cot

                                                                                    +its very complicated and with sec
                                                                                    +so if i will put sec=1/cos then i ll get a very complicated expression
                                                                                    +is there an easier way??
                                                                                    What do you mean you're not using sec?

                                                                                    +What does the stuff in red say?:

                                                                                    Quote Originally Posted by transgalactic View Post
                                                                                    [snip]
                                                                                    \int \frac{dz}{\sqrt{z^2+\frac{1}{4}}}=2\int \frac{\frac{1}{2}\frac{dx}{\cos ^2 x}}{\sqrt{\tan^2 x+1}}= {\color{red}\int \frac{dx}{\cos x}}
                                                                                    +[snip]
                                                                                    +What to do next?
                                                                                    Unless my eyes need testing, I see sec. In which case, I have directed you to what to do next. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  8. #8
                                                                                    + Flow Master +
                                                                                    mr fantastic's Avatar
                                                                                    Joined
                                                                                    Dec 2007
                                                                                    From
                                                                                    Zeitgeist
                                                                                    Posts
                                                                                    16,947
                                                                                    Thanks
                                                                                    6
                                                                                    Quote Originally Posted by transgalactic View Post
                                                                                    <br />
+\int \frac{dz}{\sqrt{z^2+\frac{1}{4}}}=2\int \frac{\frac{1}{2}\frac{dx}{\cos ^2 x}}{\sqrt{\tan^2 x+1}}=\int \frac{dx}{\cos x}\\<br />
+
                                                                                    <br />
+z=\frac{1}{2}\tan x\\<br />
+
                                                                                    <br />
+dz=\frac{1}{2}\frac{dx}{\cos ^2 x}<br />
+
                                                                                    +what to do next??
                                                                                    This question may have been posted and answered at other websites that provide maths help.
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  9. #9
                                                                                    + MHF Contributor +
                                                                                    Joined
                                                                                    Nov 2008
                                                                                    Posts
                                                                                    1,401
                                                                                    + i didnt get an answer in a thread posted at another website

                                                                                    +so help is needed +
                                                                                    + + Last edited by mr fantastic; March 3rd 2009 at 03:36 PM. + + +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  10. #10
                                                                                    + Math Engineering Student +
                                                                                    Krizalid's Avatar
                                                                                    Joined
                                                                                    Mar 2007
                                                                                    From
                                                                                    Santiago, Chile
                                                                                    Posts
                                                                                    3,656
                                                                                    Thanks
                                                                                    15
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  11. #11
                                                                                    + Flow Master +
                                                                                    mr fantastic's Avatar
                                                                                    Joined
                                                                                    Dec 2007
                                                                                    From
                                                                                    Zeitgeist
                                                                                    Posts
                                                                                    16,947
                                                                                    Thanks
                                                                                    6
                                                                                    Quote Originally Posted by transgalactic View Post
                                                                                    i didnt get an answer in this thread
                                                                                    S.O.S. Mathematics CyberBoard :: View topic - integral question..

                                                                                    +so help is needed
                                                                                    I gave you the answer in post #2. In post #3 you rejected what I posted. Now you're saying that you need the exact help I gave you that you had previously rejected.

                                                                                    +Thread closed. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  Similar Math Help Forum Discussions

                                                                                  1. integral question
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: February 6th 2010, 01:40 PM
                                                                                  2. Double Integral and Triple Integral question
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 3 +
                                                                                    Last Post: February 3rd 2010, 12:47 PM
                                                                                  3. Integral Question
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: January 31st 2010, 05:00 PM
                                                                                  4. Another Integral Question
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 9 +
                                                                                    Last Post: January 17th 2010, 03:06 PM
                                                                                  5. integral question..
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 2 +
                                                                                    Last Post: March 11th 2009, 05:38 AM

                                                                                  Search Tags


                                                                                  /mathhelpforum @mathhelpforum

                                                                                  + + diff --git a/bench/data/origin/math_mathhelpforum_2.html b/bench/data/origin/math_mathhelpforum_2.html new file mode 100644 index 00000000..cee33aea --- /dev/null +++ b/bench/data/origin/math_mathhelpforum_2.html @@ -0,0 +1,359 @@ + + Continuous functions - Math Help Forum


                                                                                  + Results 1 to 5 of 5 +

                                                                                  + Math Help - Continuous functions

                                                                                  1. #1
                                                                                    + Member +
                                                                                    Joined
                                                                                    Oct 2008
                                                                                    Posts
                                                                                    124

                                                                                    + Continuous functions +

                                                                                    + 1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

                                                                                    +2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  2. #2
                                                                                    + Banned +
                                                                                    Joined
                                                                                    Mar 2009
                                                                                    Posts
                                                                                    256
                                                                                    Thanks
                                                                                    1
                                                                                    Quote Originally Posted by noles2188 View Post
                                                                                    1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

                                                                                    +2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
                                                                                    We have :f(x)= \lim_{n\rightarrow\infty}{\frac{x^n}{1+x^n}} =\frac{\lim_{n\rightarrow\infty}{x^n}}{1+\lim_{n\r  ightarrow\infty}{x^n}}.................................................. .........................................1

                                                                                    +AND now we have the following cases:

                                                                                    +1) |x|<1 <===> -1<x<1 ,then \lim_{n\rightarrow\infty}{x^n} =0.

                                                                                    +2) x=1 ,then \lim_{n\rightarrow\infty}{x^n} =1.


                                                                                    +3) x>1 ,then \lim_{n\rightarrow\infty}{x^n} =\infty.


                                                                                    +4) x =-1 ,then x^n oscillates finitely.

                                                                                    +5) x<-1 ,then  x^n oscillates infinitely.

                                                                                    +And thus by using (1)

                                                                                    +For -1<x<1 ,f(x) = 0 and

                                                                                    +For x=1 , f(x)=1/2.

                                                                                    +Thus D= (-1,1] = (-1,1)U{1}

                                                                                    +Next we consider continuity over (-1,1].

                                                                                    +Let -1<c<1 ,and consider \lim_{x\rightarrow c}{f(x)} =\lim_{x\rightarrow c}{0}= 0 = f(c).

                                                                                    +HENCE f is continuous over (-1,1).

                                                                                    +But if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -1<x<1 , to 1/2 =f(1) and hence the function is not continuous.

                                                                                    +To prove that:
                                                                                    +Let, ε=1/4, then for all δ>0 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|= \frac{1}{2}\geq\frac{1}{4}=\epsilon.

                                                                                    +Thus \lim_{x\rightarrow 1^-}{f(x)}\neq f(1).

                                                                                    +Now to prove : if \lim_{x\rightarrow c}{f(x)} = f(c) ,then \lim_{x\rightarrow c}{\sqrt{f(x)}} =\sqrt{c} ,where f(x)\geq 0,when x belongs to D.

                                                                                    +For that you must consider the : |\sqrt{f(x)}-\sqrt{c}|.................................................. ..................................2

                                                                                    +Now multiply (2) by \frac{|\sqrt{f(x)}+\sqrt{c}|}{|\sqrt{f(x)}+\sqrt{c  }|} and we get:


                                                                                    \frac{|f(x)-f(c)|}{\sqrt{f(x)}+\sqrt{c}}.

                                                                                    +But  \sqrt{f(x)}+\sqrt{c}\geq\sqrt{c} ,thus :


                                                                                    \frac{|f(x)-f(c)|}{\sqrt{f(x)}+\sqrt{c}}\leq\frac{|f(x)-f(c)|}{\sqrt{c}}.................................................. .......................................3

                                                                                    +And if we want (3) smaller than ε>0 we must have :

                                                                                    |f(x)-f(c)|<\sqrt{c}.\epsilon which is possible since f is continuous at c.

                                                                                    +Hence sqrt(f) is continuous at c +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  3. #3
                                                                                    + MHF Contributor +

                                                                                    Joined
                                                                                    Aug 2006
                                                                                    Posts
                                                                                    18,605
                                                                                    Thanks
                                                                                    1574
                                                                                    Awards
                                                                                    1
                                                                                    Quote Originally Posted by noles2188 View Post
                                                                                    1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.
                                                                                    The answer above is incomplete.
                                                                                    f(x) = \left\{ {\begin{array}{lr}<br />
+   {0,} & {\left| x \right| < 1}  \\   {\frac{1}{2},} & {x = 1}  \\   {1,} & {\left| x \right| > 1}  \\ \end{array} } \right.
                                                                                    +That means that \mathcal{D} = \mathbb{R}\backslash \left\{ { - 1} \right\}.
                                                                                    +It also means that f is continuous on \mathbb{R}\backslash \left\{ {1, - 1} \right\}.

                                                                                    +The mistake above is: \left| x \right| > 1\;,\;\frac{{x^n }}{{1 + x^n }} = \frac{1}<br />
+{{\left( {\frac{1}{x}} \right)^n  + 1}}. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  4. #4
                                                                                    + Banned +
                                                                                    Joined
                                                                                    Mar 2009
                                                                                    Posts
                                                                                    256
                                                                                    Thanks
                                                                                    1
                                                                                    Quote Originally Posted by Plato View Post
                                                                                    The mistake above is: \left| x \right| > 1\;,\;\frac{{x^n }}{{1 + x^n }} = \frac{1}<br />
+{{\left( {\frac{1}{x}} \right)^n + 1}}.
                                                                                    If |x|>1 ,then x<-1 or x>1 ,but for x=-2 for example the limit of ;

                                                                                    \frac{1}{\frac{1}{(-2)^n}+1} is not equal to 1 +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  5. #5
                                                                                    + MHF Contributor +
                                                                                    Opalg's Avatar
                                                                                    Joined
                                                                                    Aug 2007
                                                                                    From
                                                                                    Leeds, UK
                                                                                    Posts
                                                                                    4,041
                                                                                    Thanks
                                                                                    7
                                                                                    Quote Originally Posted by xalk View Post
                                                                                    the limit of \frac{1}{\frac{1}{(-2)^n}+1} is not equal to 1
                                                                                    Yes it is! The reason is that |a|<1\:\Rightarrow\:a^n\to0; and \bigl|\tfrac1{-2}\bigr|<1. So \frac{1}{\frac{1}{(-2)^n}+1}\to\frac1{0+1}=1 as n\to\infty. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  Similar Math Help Forum Discussions

                                                                                  1. Continuous functions
                                                                                    + Posted in the Discrete Math Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: May 22nd 2010, 05:29 PM
                                                                                  2. more continuous functions
                                                                                    + Posted in the Differential Geometry Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: October 5th 2009, 11:57 AM
                                                                                  3. continuous functions
                                                                                    + Posted in the Differential Geometry Forum +
                                                                                    Replies: 0 +
                                                                                    Last Post: October 4th 2009, 12:47 PM
                                                                                  4. Why are the functions f and g continuous?
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: September 3rd 2009, 07:01 PM
                                                                                  5. On continuous functions
                                                                                    + Posted in the Advanced Algebra Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: April 30th 2008, 11:58 PM

                                                                                  Search Tags


                                                                                  /mathhelpforum @mathhelpforum

                                                                                  + + diff --git a/bench/data/origin/math_physicsforums_1.html b/bench/data/origin/math_physicsforums_1.html new file mode 100644 index 00000000..710805f0 --- /dev/null +++ b/bench/data/origin/math_physicsforums_1.html @@ -0,0 +1,1948 @@ + + + + + + + + + + + + + + + + + + + + + Probability theoretic inequality | Physics Forums - The Fusion of Science and Community + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + +

                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + Dismiss Notice + +
                                                                                  + +
                                                                                  + +
                                                                                  + Join Physics Forums Today!
                                                                                  +The friendliest, high quality science and math community on the planet! Everyone who loves science is here! +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  + +

                                                                                  + + + + + + + + +Probability theoretic inequality + + +

                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                    + + + + + + + + +
                                                                                  1. +
                                                                                    + +
                                                                                    + + + Jul 21, 2008 + + + + + #1 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + winterfors +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    + + +
                                                                                    + + + + + + + + Can anyone help me prove under what conditions on the distance function [tex]d(x_1,x_2)[/tex] the following inequality holds for any two probability distributions (represented by probability densities) [tex]p(x)[/tex] and [tex]q(x)[/tex] :
                                                                                    +
                                                                                    +[tex]2\int{\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}
                                                                                    +\geq
                                                                                    +\int{\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +
                                                                                    +\int{\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}
                                                                                    +[/tex]
                                                                                    +
                                                                                    +where [tex]d^2(x_1,x_2)[/tex] is the squared distance between [tex]x_1[/tex] and [tex]x_2[/tex] in some metric space [tex]\Theta[/tex]. All integrals are over [tex]\Theta[/tex].
                                                                                    +
                                                                                    +One can easily verify by insertion that the inequality holds for a Euclidian metric where [tex]d^2(x_1,x_2)=(x_1-x_2)^2[/tex], with equality if and only if the expectation of [tex]p(x)[/tex] and [tex]q(x)[/tex] are the same.
                                                                                    +
                                                                                    +It must surely hold for some more general class of metrics (described by [tex]d^2(x_1,x_2)[/tex]) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case? +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + winterfors, + Jul 21, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  2. + + + + +
                                                                                  3. +
                                                                                    +
                                                                                    + jcsd +
                                                                                    +
                                                                                    + + +
                                                                                  4. + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + +
                                                                                  Know someone interested in this topic? Share this thread via Reddit, + Google+, + Twitter, or + Facebook
                                                                                  + +
                                                                                  + + +
                                                                                  + +Can you offer guidance or do you also need help? + +
                                                                                  + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  + Draft saved + Draft deleted +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + +
                                                                                  + + + + + +

                                                                                  + + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + Similar Discussions: Probability theoretic inequality +
                                                                                  + +
                                                                                  + +
                                                                                    + + + + +
                                                                                  1. + + + + +
                                                                                  2. + + + +
                                                                                  3. + + +
                                                                                    +
                                                                                    +

                                                                                    + + A basic probability inequality + + + + (Replies: 2) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  4. + + + +
                                                                                  5. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Probability of a probability + + + + (Replies: 4) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  6. + + + +
                                                                                  7. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Empirical and theoretical probability + + + + (Replies: 0) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  8. + + + +
                                                                                  9. + + +
                                                                                    + +
                                                                                    + +
                                                                                  10. + + +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + Loading... +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bench/data/origin/math_physicsforums_2.html b/bench/data/origin/math_physicsforums_2.html new file mode 100644 index 00000000..7ff4da4f --- /dev/null +++ b/bench/data/origin/math_physicsforums_2.html @@ -0,0 +1,5716 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Info - Latex Upgrade - Physics Forum Powered by MathJax v3 | Physics Forum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + + +

                                                                                  Info Latex Upgrade - Physics Forum Powered by MathJax v3

                                                                                  + + +
                                                                                  + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + chip + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  chip

                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  Joined Oct 2019
                                                                                  + + + + +
                                                                                  34 Posts | 39+
                                                                                  + + +
                                                                                  Washington
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.
                                                                                  +
                                                                                  +

                                                                                  Insert Math Editor​

                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!
                                                                                  +
                                                                                  +And then you can insert the math as either a Block or Inline.
                                                                                  +
                                                                                  +Screenshots below:
                                                                                  +
                                                                                  +LaTeX Math Editor
                                                                                  +
                                                                                  +LaTeX Math Equations for Physics
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +

                                                                                  Writing Math Equations​

                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.
                                                                                  +
                                                                                  +Same as before, you can wrap your Latex equations with any of the following tags:
                                                                                  +
                                                                                  +

                                                                                  Block Math​

                                                                                  + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [MATH]      [/MATH]
                                                                                  +[LATEX]     [/LATEX]
                                                                                  +[TEX]       [/TEX]
                                                                                  +$$          $$
                                                                                  +
                                                                                  +

                                                                                  +

                                                                                  Inline Math​

                                                                                  + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [IMATH]     [/IMATH]
                                                                                  +[ILATEX]    [/ILATEX]
                                                                                  +[ITEX]      [/ITEX]
                                                                                  +##          ##
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 1 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                    + +
                                                                                    Discussion Starter
                                                                                    + + +
                                                                                  • + +
                                                                                  • + + + +
                                                                                  • + + Last edited: + +
                                                                                  • + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + Last edited: + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  And some example Latex Equations, with the math expressions used for writing, to see it working...
                                                                                  +
                                                                                  +Newton's Second Law of Motion
                                                                                  +[math]\vec{F} = m\vec{a}[/math]
                                                                                  +
                                                                                  + + \vec{F} = m\vec{a} + + +
                                                                                  +
                                                                                  +Gauss's Law for Electrcity
                                                                                  +[math]\nabla \cdot \vec{E} = \frac{\rho}{\varepsilon_0}[/math]
                                                                                  +
                                                                                  + + \nabla \cdot \vec{E} = \frac{\rho}{\varepsilon_0} + + +
                                                                                  +
                                                                                  +Einstein's Field Equations of General Relativity
                                                                                  +[math]G_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu}[/math]
                                                                                  +
                                                                                  + + G_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu} + + +
                                                                                  +
                                                                                  +The Dirac Equation
                                                                                  +[math](i\gamma^\mu \partial_\mu - m)\psi = 0[/math]
                                                                                  +
                                                                                  + + (i\gamma^\mu \partial_\mu - m)\psi = 0 + + +
                                                                                  +
                                                                                  +The Schrödinger Equation in Quantum Mechanics (Time-Dependent Form)
                                                                                  +[math]i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r}, t) = \hat{H}\Psi(\mathbf{r}, t)[/math]
                                                                                  +
                                                                                  + + i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r}, t) = \hat{H}\Psi(\mathbf{r}, t) + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  Long Math Equations
                                                                                  +For very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...
                                                                                  +
                                                                                  +For example, here is a very long equation without the align tags used in MathJax v3:
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +P(\text{16 out of 20}) = \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\
                                                                                  +P(\text{17 out of 20}) = \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\
                                                                                  +P(\text{18 out of 20}) = \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\
                                                                                  +P(\text{19 out of 20}) = \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\
                                                                                  +P(\text{20 out of 20}) = \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  +And this is how the equation looks with the horizontal scrollbar:
                                                                                  +
                                                                                  + + +P(\text{16 out of 20}) = \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\ +P(\text{17 out of 20}) = \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\ +P(\text{18 out of 20}) = \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\ +P(\text{19 out of 20}) = \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\ +P(\text{20 out of 20}) = \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595 + + + +
                                                                                  +
                                                                                  +The better way to write the exact same equation would be to add the align tags used in MathJax v3, to recognize the \\ as line breaks:
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +\begin{align*}
                                                                                  +P(\text{16 out of 20}) &= \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\
                                                                                  +P(\text{17 out of 20}) &= \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\
                                                                                  +P(\text{18 out of 20}) &= \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\
                                                                                  +P(\text{19 out of 20}) &= \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\
                                                                                  +P(\text{20 out of 20}) &= \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595
                                                                                  +\end{align*}
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  +And then it display in a more readable format, as seen here:
                                                                                  +
                                                                                  + + +\begin{align*} +P(\text{16 out of 20}) &= \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\ +P(\text{17 out of 20}) &= \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\ +P(\text{18 out of 20}) &= \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\ +P(\text{19 out of 20}) &= \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\ +P(\text{20 out of 20}) &= \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595 +\end{align*} + + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +

                                                                                  Writing Physics Equations​

                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.
                                                                                  +
                                                                                  +Here are a few physics-related examples:
                                                                                  +
                                                                                  +Derivatives
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\frac{d}{dx} f(x) \quad \text{versus} \quad \dv{f}{x}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \frac{d}{dx} f(x) \quad \text{versus} \quad \dv{f}{x} + + +
                                                                                  +
                                                                                  +Partial Derivatives
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\frac{\partial}{\partial x} f(x,y) \quad \text{versus} \quad \pdv{f}{x}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \frac{\partial}{\partial x} f(x,y) \quad \text{versus} \quad \pdv{f}{x} + + +
                                                                                  +
                                                                                  +Vectors
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\vec{v} \quad \text{versus} \quad \vb{v} \quad \text{and} \quad \vec{v} \cdot \vec{w} \quad \text{versus} \quad \vb{v} \vdot \vb{w}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \vec{v} \quad \text{versus} \quad \vb{v} \quad \text{and} \quad \vec{v} \cdot \vec{w} \quad \text{versus} \quad \vb{v} \vdot \vb{w} + + +
                                                                                  +
                                                                                  +Gradient, Divergence, Curl
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\vec{\nabla} \phi \quad \text{versus} \quad \grad{\phi}[/math]
                                                                                  +[math]\vec{\nabla} \cdot \vec{v} \quad \text{versus} \quad \div{\vb{v}}[/math]
                                                                                  +[math]\vec{\nabla} \times \vec{v} \quad \text{versus} \quad \curl{\vb{v}}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \vec{\nabla} \phi \quad \text{versus} \quad \grad{\phi} + + +
                                                                                  + + \vec{\nabla} \cdot \vec{v} \quad \text{versus} \quad \div{\vb{v}} + + +
                                                                                  + + \vec{\nabla} \times \vec{v} \quad \text{versus} \quad \curl{\vb{v}} + + +
                                                                                  +
                                                                                  +Bra-Ket Notation
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\langle \psi | \phi \rangle \quad \text{versus} \quad \braket{\psi}{\phi}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \langle \psi | \phi \rangle \quad \text{versus} \quad \braket{\psi}{\phi} + + +
                                                                                  +
                                                                                  +Commutators and Anticommutators
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math][\hat{A}, \hat{B}] \quad \text{versus} \quad \comm{\hat{A}}{\hat{B}}[/math]
                                                                                  +[math]\{\hat{A}, \hat{B}\} \quad \text{versus} \quad \acomm{\hat{A}}{\hat{B}}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + [\hat{A}, \hat{B}] \quad \text{versus} \quad \comm{\hat{A}}{\hat{B}} + + +
                                                                                  + + \{\hat{A}, \hat{B}\} \quad \text{versus} \quad \acomm{\hat{A}}{\hat{B}} + + +
                                                                                  +
                                                                                  +Matrices
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +\begin{pmatrix}
                                                                                  +a & b \\
                                                                                  +c & d
                                                                                  +\end{pmatrix} \quad \text{versus} \quad \mqty(a & b \\ c & d)
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  + + +\begin{pmatrix} +a & b \\ +c & d +\end{pmatrix} \quad \text{versus} \quad \mqty(a & b \\ c & d) + + + +
                                                                                  +
                                                                                  +Dirac Notation (Ket, Bra, Operators)
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]|\psi\rangle \quad \text{versus} \quad \ket{\psi}[/math]
                                                                                  +[math]\langle\psi| \quad \text{versus} \quad \bra{\psi}[/math]
                                                                                  +[math]\hat{H}|\psi\rangle \quad \text{versus} \quad \op{H}{\psi}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + |\psi\rangle \quad \text{versus} \quad \ket{\psi} + + +
                                                                                  + + \langle\psi| \quad \text{versus} \quad \bra{\psi} + + +
                                                                                  + + \hat{H}|\psi\rangle \quad \text{versus} \quad \op{H}{\psi} + + +
                                                                                  +
                                                                                  +Quick Quadratic Equation
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]ax^2 + bx + c = 0 \quad \text{versus} \quad \qty(a x^2 + b x + c = 0)[/math]
                                                                                  +
                                                                                  +

                                                                                  + + ax^2 + bx + c = 0 \quad \text{versus} \quad \qty(a x^2 + b x + c = 0) + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 1 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  This is awesome!
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  That looks nice!
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bench/data/origin/math_stackexchange_1.html b/bench/data/origin/math_stackexchange_1.html new file mode 100644 index 00000000..518f2768 --- /dev/null +++ b/bench/data/origin/math_stackexchange_1.html @@ -0,0 +1,2326 @@ + + + + +factoring - Is $83^{27} +1 $ a prime number? - Mathematics Stack Exchange + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required. +
                                                                                  +
                                                                                  + Sign up +
                                                                                  +
                                                                                  + Here's how it works: +
                                                                                    +
                                                                                  1. Anybody can ask a question +
                                                                                  2. +
                                                                                  3. Anybody can answer +
                                                                                  4. +
                                                                                  5. The best answers are voted up and rise to the top +
                                                                                  6. +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 17 + down vote + + favorite +
                                                                                  5
                                                                                  + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime?

                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this question
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 4 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$. + – Michael Hardy + Aug 2 '13 at 22:11 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 5 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Wolfram Alpha says that $83^{27}+1= 2^2×3^4×7×109×757×2269×9613×49339×2208799×14685985270709080390792801$. Perhaps it's fun to try to prove that 3 and 7 are factors. + – lhf + Aug 2 '13 at 22:13 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 51 + +   +
                                                                                  +
                                                                                  +
                                                                                  + The number is EVEN! + – Ali + Aug 3 '13 at 5:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @Joseph It is "well-known" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself. + – Jeppe Stig Nielsen + Aug 3 '13 at 6:48 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 5 + +   +
                                                                                  +
                                                                                  +
                                                                                  + If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite. + – Ross Millikan + Aug 3 '13 at 13:04 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  +

                                                                                  + 9 Answers + 9 +

                                                                                  + +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 68 + down vote + + + + accepted + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  $83$ is odd, so is any power of $83$. Hence $83^{27}+1$ is even, but the only even prime number is $2$ and this number is not $2$.

                                                                                  + +

                                                                                  More generally, if $a,k\in\mathbb N$ and $k$ is odd, then +$$a^k+1\equiv (-1)^k+1\equiv 0\pmod{a+1}$$ +So $a+1\mid a^k+1$. In this case this yields $84=2^2\cdot 3\cdot 7$ as divisor.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Your last statement can also be seen by geometric series: $(1+x+\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right. + – nayrb + Aug 2 '13 at 21:52 + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 2 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Let's ask WolframAlpha!

                                                                                  + +
                                                                                  +

                                                                                  PrimeQ[83^27 + 1]

                                                                                  +
                                                                                  + + + +
                                                                                  +

                                                                                  is $6\,532\,937\,361\,590\,551\,025\,727\,805\,459\,013\,652\,074\,798\,022\,177\,030\,828$ a prime number?

                                                                                  + +

                                                                                  $83^{27} + 1$ is not a prime number

                                                                                  + +

                                                                                  $2^2 \times 3^4 \times 7 \times 109 \times 757 \times 2269 \times 9613 \times 49339 \times 2208799 \times 14685985270709080390792801 \space\text{(14 prime factors, 10 distinct)}$

                                                                                  +
                                                                                  + +
                                                                                  + +

                                                                                  However, using basic knowledge that an odd times an odd is always an odd ($3 \times 3 = 9$), we see that $83$ (an odd number) raised to any power is an odd number. Then we add one to it and get an even number.

                                                                                  + +

                                                                                  Being even (and obviously not equal to $2$), the definition of a prime tells us that the number is not prime because it is divisible by $2$ (my words):

                                                                                  + +
                                                                                  +

                                                                                  prime (noun):

                                                                                  + +
                                                                                    +
                                                                                  1. Any natural number, greater than $1$, that, when divided by any natural number, greater than $1$, other than itself or $1$ does not result in a natural number.
                                                                                  2. +
                                                                                  3. Any "natural number greater than $1$ that has no positive divisors other than $1$ and itself." (Wikipedia article "prime number")
                                                                                  4. +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 2 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  well it is divisible by $84$ and in general $\forall a,m\in\mathbb {N}$ we have +$(a+1)\mid (a^{2m+1}+1)$ So....

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 4 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  The only prime numbers of the form $a^x+b^x$, occur when $x$ is a power of two. This does not guarantee a prime, but if $x$ is not a power of $2$, then the number has algebraic factors.

                                                                                  + +

                                                                                  In practice, there is an algebraic divisor of $a^n-b^n$, for each $m$ that divides $n$. For the equation $a^n+b^n$, one would look for divisors of $2n$ that don't divide $n$. Inthe question we have $n=27$, so the divisors of 54 that don't divide 27. That is, 2, 6, 18 and 54. For powers of 2, there is only one number that divides $2n$ but not $n$.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + Extebded answer to include this. + – wendy.krieger + Aug 3 '13 at 23:44 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 13 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  We have a chain of divisibilities, based on the fact that $(a-b)\mid(a^n-b^n)$, +$$ +83^1-(-1)^1\mid83^3-(-1)^3\mid83^9-(-1)^9\mid83^{27}-(-1)^{27}=83^{27}+1 +$$ +Using this chain, we get, using $a^3-b^3=(a-b)(a^2+ab+b^2)$, +$$ +\begin{align} +83^{27}+1 +&=\frac{83^{27}+1}{83^9+1}\times\frac{83^9+1}{83^3+1}\times\frac{83^3+1}{83^1+1}\times\left(83^1+1\right)\\ +&=\left(83^{18}-83^9+1\right)\times\left(83^6-83^3+1\right)\times\left(83^2-83^1+1\right)\times\left(83^1+1\right)\\[9pt] +&=34946659039493167203883141969862007\times326939801583\times6807\times84 +\end{align} +$$ +Thus, $83^{27}+1$ is not prime.

                                                                                  + +

                                                                                  Note: none of these factors are guaranteed to be prime, just factors.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Would the downvoter care to comment? + – robjohn + Aug 3 '13 at 19:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1 + – Asimov + Sep 28 '14 at 18:32 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 40 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  $$ +83^{27} + 1 = \Big(83^9\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \Big(83^9+1\Big)\Big((83^9)^2-83^9+1\Big). +$$

                                                                                  + +

                                                                                  So, no, it's not prime.

                                                                                  + +

                                                                                  PS (added later): Some point out that it's obviously an even number, so it's not prime. But what I do above would work just as well if it were $84$ rather than $83$.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 23 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Note that $83\equiv -1\pmod{84}$. Thus $83^{27}+1\equiv 0\pmod{84}$.

                                                                                  + +

                                                                                  It follows that our number is divisible by all the divisors of $84$.

                                                                                  + +

                                                                                  It is also non-prime in other ways. For let $x=83^3$. Then our number is $x^9+1$, so is divisible by $x+1$. Similarly, we could let $y=83^9$, and conclude that our number is divisible by $y+1$.

                                                                                  + +

                                                                                  Seriously non-prime!

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 14 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  It is obviously not prime. $83$ is odd, therefore $83^{27}$ is odd, hence $83^{27}+1$ is even and not prime.

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 46 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Well, it is an even number, so...

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + I downvoted your answer on the basis that it doesn't provide the reason behind why it is even. For example, it doesn't say that since $83$ is odd, so the powers of it must also be odd and thus, odd + 1 must be even. + – Jeel Shah + Nov 5 '13 at 3:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 6 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial after it's been remarked that the number is odd (and thus the OP begins to think "why?" and he completes the answer by himself). Think of this, perhaps you'll realize you rush too much to do downvote... + – DonAntonio + Nov 5 '13 at 4:51 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 2 + +   +
                                                                                  +
                                                                                  +
                                                                                  + I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers. + – Jeel Shah + Nov 5 '13 at 14:03 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + I just love the precise nature of this answer. +1 + – Asimov + Sep 28 '14 at 18:31 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  protected by Community Jun 21 '14 at 19:06 +

                                                                                  +

                                                                                  +Thank you for your interest in this question. +Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site. +

                                                                                  +Would you like to answer one of these unanswered questions instead? +

                                                                                  +
                                                                                  + + + + + +

                                                                                  +Not the answer you're looking for? Browse other questions tagged or ask your own question.

                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + diff --git a/bench/eval/ours.py b/bench/eval/ours.py index 4e69b9b1..74fa9398 100644 --- a/bench/eval/ours.py +++ b/bench/eval/ours.py @@ -1,27 +1,80 @@ import json +import os +from pathlib import Path from typing import Dict, List, Tuple +from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory from llm_web_kit.input.datajson import DataJson, DataJsonKey -from llm_web_kit.pipeline.pipeline_suit import PipelineSuit -def eval_ours_extract_html(pipeline_config: dict, html_data_path: str, filePath: str, page_layout_type: str = '') -> Tuple[str, List[Dict], str, dict]: - pipeline = PipelineSuit(pipeline_config) - assert pipeline is not None +def eval_ours_extract_html(chain_config: dict, test_data: dict) -> Tuple[str, List[Dict], str, dict]: + chain = ExtractSimpleFactory.create(chain_config) + assert chain is not None - # Read test data - with open(html_data_path, 'r') as f: - test_data = json.loads(f.readline().strip()) - - # Create DataJson from test data - input_data = DataJson(test_data) - input_data.__setitem__('path', filePath) - input_data.__setitem__('page_layout_type', page_layout_type) + # Create DataJson from test data + input_data = DataJson(test_data) # Test extraction - result = pipeline.extract(input_data) + result = chain.extract(input_data) content_list = result.get_content_list() statics = result.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}) - main_html = content_list.to_main_html() content = content_list.to_nlp_md() - return content, content_list._get_data(), main_html, statics + return content, content_list._get_data(), statics + + +if __name__ == '__main__': + root = Path(__file__).parent.parent.parent + from llm_web_kit.dataio.filebase import (FileBasedDataReader, + FileBasedDataWriter) + reader = FileBasedDataReader('') + writer = FileBasedDataWriter('') + + # 确保输出目录存在 + output_dir = f'{root}/bench/output/ours' + os.makedirs(output_dir, exist_ok=True) + + with open(f'{root}/bench/config/ours_config.jsonc', 'r') as f: + chain_config = json.load(f) + + # 循环处理每一行数据 + with open(f'{root}/bench/config/data_math_config.jsonl', 'r') as f: + for line in f: + test_data = json.loads(line.strip()) + content, content_list, main_html, statics = eval_ours_extract_html( + chain_config, + test_data + ) + print('处理数据:', test_data.get('track_id')) + print('URL:', test_data.get('url')) + print('统计信息:', statics) + + out = { + 'url': test_data.get('url'), + 'content': content, + 'main_html': main_html, + 'content_list': content_list, + 'html': reader.read( + f'{root}/bench/{test_data.get("path")}' + ).decode('utf-8'), + 'statics': statics + } + + # 获取path的前两级目录 + path = test_data.get('path', '') + path_parts = path.split('/') + if len(path_parts) >= 2: + output_subdir = '/'.join(path_parts[:2]) + else: + output_subdir = 'unknown' + + # 创建对应的输出目录 + output_dir = f'{root}/bench/output/ours/{output_subdir}' + os.makedirs(output_dir, exist_ok=True) + + # 追加写入结果 + output_file = f'{output_dir}/data_math_output.jsonl' + writer.append_write( + output_file, + json.dumps(out).encode('utf-8') + b'\n' + ) + print(f'结果已追加到: {output_file}') diff --git a/bench/run.py b/bench/run.py index 137433e7..b591bd24 100644 --- a/bench/run.py +++ b/bench/run.py @@ -5,34 +5,218 @@ from pathlib import Path from bench.common.metrics import Metrics -from bench.common.result import Error_Item, Result_Detail, Result_Summary +from bench.common.result import Result_Detail, Result_Summary from bench.eval.ours import eval_ours_extract_html from llm_web_kit.dataio.filebase import (FileBasedDataReader, FileBasedDataWriter) +from llm_web_kit.extractor.html.extractor import HTMLFileFormatExtractor from llm_web_kit.libs.statics import Statics -# 选项参数 -parser = argparse.ArgumentParser() -parser.add_argument('--input', type=str, help='html文件路径') -parser.add_argument('--output', type=str, help='输出文件路径') -parser.add_argument('--tool', type=str, help='抽取工具', default='ours') -args = parser.parse_args() +def parse_arguments(): + """解析命令行参数.""" + parser = argparse.ArgumentParser(description='HTML提取与评估工具') + parser.add_argument('--input', type=str, help='HTML文件路径') + parser.add_argument('--output', type=str, help='输出文件路径') + parser.add_argument( + '--tool', + type=str, + choices=['ours', 'magic_html', 'unstructured'], + help='抽取工具', + default='ours' + ) + return parser.parse_args() + + +def setup_paths(): + """设置文件路径.""" + root = Path(__file__).parent + paths = { + 'root': root, + 'source': root / 'data' / 'all.json', + 'output': root / 'output', + 'pipeline_config': root / 'config' / 'ours_config.jsonc', + 'pipeline_data': root / 'config' / 'data_config.jsonl' + } + return paths + + +def run_ours(config_path, data_path, output_path, statics_pre, reader, writer, summary, detail): + """运行我们的提取模型. + + Args: + config_path: 配置文件路径 + data_path: 数据文件路径 + output_path: 输出路径 + statics_pre: 统计对象 + reader: 文件读取器 + writer: 文件写入器 + """ + try: + # 确保路径是字符串 + config_path_str = str(config_path) + data_path_str = str(data_path) + output_path_str = str(output_path) + + print(f'配置路径: {config_path_str}') + print(f'数据路径: {data_path_str}') + print(f'输出路径: {output_path_str}') + + with open(data_path_str, 'r', encoding='utf-8') as f: + for line_num, line in enumerate(f, 1): + try: + if not line.strip(): + print(f'跳过空行 {line_num}') + continue + + print(f'处理第 {line_num} 行: {line[:50]}...') + data_json = json.loads(line.strip()) + + # 执行评估 + content, content_list, statics = eval_ours_extract_html( + config_path_str, data_json + ) + + # 获取路径并进行安全处理 + path = data_json.get('path', '') + + # 构建文件绝对路径 - 使用字符串操作而非Path对象 + root_dir = os.path.dirname(os.path.dirname(data_path_str)) + file_path = os.path.join(root_dir, path) if path else None + + # HTML内容 + html_content = '' + if file_path and os.path.exists(file_path): + try: + html_content = reader.read(file_path).decode('utf-8') + print(f'成功读取HTML,长度: {len(html_content)}') + except Exception as e: + print(f'读取HTML文件失败: {e}') + else: + print(f'文件不存在或路径为空: {file_path}') + + # 提取main_html + htmlExtractor = HTMLFileFormatExtractor(config_path_str) + main_html, method, title = htmlExtractor._extract_main_html( + html_content, data_json.get('url', ''), data_json.get('page_layout_type', 'article') + ) + + # 准备输出内容 + out = { + 'url': data_json.get('url', ''), + 'content': content, + 'main_html': main_html, + 'content_list': content_list, + 'html': html_content, + 'statics': statics + } + + # 输出统计信息 + Statics(statics).print() + statics_pre.merge_statics(statics) + + # 确定输出路径 + track_id = data_json.get('track_id', str(uuid.uuid4())) + output_dir = os.path.join(output_path_str, 'ours') + output_file = os.path.join(output_dir, f'{track_id}.jsonl') + + # 确保目录存在 + os.makedirs(output_dir, exist_ok=True) + + # 写入结果 - 分步处理以便更好定位问题 + json_str = json.dumps(out, ensure_ascii=False) + out_bytes = json_str.encode('utf-8') + b'\n' + writer.write(output_file, out_bytes) + print(f'成功写入结果到: {output_file}') + summary.total += 1 + except Exception as e: + summary.error_count += 1 + import traceback + print(f'处理单条数据时出错: {e}') + print(traceback.format_exc()) + except Exception as e: + import traceback + print(f'运行ours评估时出错: {e}') + print(traceback.format_exc()) + return summary, detail, statics_pre + + +def run_magic_html(html, url, file_name, output_path, writer): + """运行magic_html提取模型. -root = Path(__file__).parent -sourcePath = os.path.join(root, 'data/all.json') -outputPath = os.path.join(root, 'output') -pipelineConfigPath = os.path.join(root, 'config/ours_config.jsonc') -pipeline_data_path = os.path.join(root, 'config/ours_data_config.jsonl') + Args: + html: HTML内容 + url: 网页URL + file_name: 文件名 + output_path: 输出路径 + writer: 文件写入器 + """ + try: + from bench.eval.magic_html import eval_magic_html + output = eval_magic_html(html, file_name) + out = { + 'url': url, + 'content': output, + 'html': html, + } -reader = FileBasedDataReader('') -writer = FileBasedDataWriter('') + # 确保目录存在 + os.makedirs(os.path.join(output_path, 'magic_html'), exist_ok=True) + + writer.write( + os.path.join(output_path, 'magic_html', f'{file_name}.jsonl'), + json.dumps(out, ensure_ascii=False).encode('utf-8') + b'\n' + ) + except Exception as e: + print(f'运行magic_html评估时出错: {e}') + + +def run_unstructured(html, url, file_name, output_path, writer): + """运行unstructured提取模型. + + Args: + html: HTML内容 + url: 网页URL + file_name: 文件名 + output_path: 输出路径 + writer: 文件写入器 + """ + try: + from bench.eval.unstructured_eval import eval_unstructured + output = eval_unstructured(html, file_name) + out = { + 'url': url, + 'content': output, + 'html': html, + } + + # 确保目录存在 + os.makedirs(os.path.join(output_path, 'unstructured'), exist_ok=True) + + writer.write( + os.path.join(output_path, 'unstructured', f'{file_name}.jsonl'), + json.dumps(out, ensure_ascii=False).encode('utf-8') + b'\n' + ) + except Exception as e: + print(f'运行unstructured评估时出错: {e}') def main(): - out = {} + """主函数.""" + # 解析参数 + args = parse_arguments() + + # 设置路径 + paths = setup_paths() + + # 创建读写器 + reader = FileBasedDataReader('') + writer = FileBasedDataWriter('') + + # 生成任务ID task_id = str(uuid.uuid1()) - output_path = outputPath + f'/{task_id}' + output_path = os.path.join(paths['output'], task_id) + # 创建评测结果概览 summary = Result_Summary.create( task_id=task_id, @@ -52,55 +236,90 @@ def main(): statics_gt = Statics() statics_pre = Statics() metrics = Metrics() - # 读取html文件 - with open(sourcePath, 'r') as f: - files = json.load(f) - # files结构是{"filename":{"url":"","filepath":""}},获取filepath - for fileName in files: - summary.total += 1 - url = files[fileName]['url'] - origin_filepath = files[fileName]['origin_filepath'] - groundtruth_filepath = files[fileName]['groundtruth_filepath'] - html = reader.read(f'{root}/data/{origin_filepath}').decode('utf-8') - groundtruth = json.loads(reader.read(f'{root}/data/{groundtruth_filepath}').decode('utf-8')) - statics_gt.merge_statics(groundtruth.get('statics', {})) - - # 评估 - if args.tool == 'magic_html': - from bench.eval.magic_html import eval_magic_html - output = eval_magic_html(html, fileName) - elif args.tool == 'unstructured': - from bench.eval.unstructured_eval import eval_unstructured - output = eval_unstructured(html, fileName) - elif args.tool == 'ours': - try: - print(pipelineConfigPath) - print(pipeline_data_path) - print(f'{root}/data/{origin_filepath}') - output, content_list, main_html, statics = eval_ours_extract_html(pipelineConfigPath, pipeline_data_path, f'{root}/data/{origin_filepath}') - out['content_list'] = content_list - out['main_html'] = main_html - out['statics'] = statics - Statics(statics).print() - statics_pre.merge_statics(statics) - except Exception as e: - summary.error_summary['count'] += 1 - detail.result_detail['error_result'].append(Error_Item( - file_path=origin_filepath, - error_detail=str(e) - )) - else: - raise ValueError(f'Invalid tool: {args.tool}') - - out['url'] = url - out['content'] = output - out['html'] = html - writer.write(f'{outputPath}/{args.tool}/{fileName}.jsonl', json.dumps(out).encode('utf-8') + b'\n') + + # 如果是ours工具,直接运行ours评估 + if args.tool == 'ours': + summary, detail, statics_pre = run_ours( + paths['pipeline_config'], + paths['pipeline_data'], + paths['output'], + statics_pre, + reader, + writer, + summary, + detail + ) + else: + # 读取HTML文件 + try: + with open(paths['source'], 'r', encoding='utf-8') as f: + files = json.load(f) + # files结构是{"filename":{"url":"","filepath":""}} + for file_name in files: + try: + file_data = files[file_name] + url = file_data.get('url', '') + origin_filepath = file_data.get('origin_filepath', '') + groundtruth_filepath = file_data.get( + 'groundtruth_filepath', '' + ) + layout_type = file_data.get('layout_type', '') + + print(f'处理: {file_name}, 类型: {layout_type}') + + # 读取HTML和标准答案 + root_dir = paths['root'] / 'data' + html_path = root_dir / origin_filepath + groundtruth_path = root_dir / groundtruth_filepath + + try: + html = reader.read(str(html_path)).decode('utf-8') + groundtruth_data = reader.read( + str(groundtruth_path) + ).decode('utf-8') + groundtruth = json.loads(groundtruth_data) + statics_gt.merge_statics( + groundtruth.get('statics', {}) + ) + except Exception as e: + print(f'读取文件失败: {e}') + continue + + # 根据工具类型运行不同的评估 + if args.tool == 'magic_html': + run_magic_html( + html, url, file_name, + paths['output'], writer + ) + elif args.tool == 'unstructured': + run_unstructured( + html, url, file_name, + paths['output'], writer + ) + except Exception as e: + print(f'处理文件 {file_name} 时出错: {e}') + except Exception as e: + print(f'读取源文件时出错: {e}') + + # 完成评估并输出结果 summary.finish() detail.finish() + + # 输出统计信息 statics_gt.print() statics_pre.print() - print(json.dumps(metrics.eval_type_acc(statics_gt, statics_pre), indent=4)) + + # 计算评估结果 + result = metrics.eval_type_acc(statics_gt, statics_pre) + print(json.dumps(result, indent=4)) + + # 更新摘要结果 + summary.result_summary = result + + # 输出摘要和详情 + print(json.dumps(summary.to_dict(), indent=4)) + print(json.dumps(detail.to_dict(), indent=4)) + return summary, detail diff --git a/docs/html_split.md b/docs/html_split.md index 6bde8c41..1db52fd7 100644 --- a/docs/html_split.md +++ b/docs/html_split.md @@ -29,7 +29,7 @@ 调用html分割: ```python -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import \ +from llm_web_kit.extractor.html.recognizer.recognizer import BaseHTMLElementRecognizer html = """ diff --git a/docs/llm_web_kit/model/clean_module.md b/docs/llm_web_kit/model/clean_module.md new file mode 100644 index 00000000..9ece7dde --- /dev/null +++ b/docs/llm_web_kit/model/clean_module.md @@ -0,0 +1,76 @@ +## 作用 + +**注意!!** 本模块是质量清洗模块的顶层接口 + +对输入数据进行质量清洗。目前版本只包含 `llm_web_kit/model/quality_model.py` 模块。 +注意:需要语言模型先决定输入数据的语言,语言模型见 `docs/llm_web_kit/model/lang_id.md`。 + +## 配置文件需要改动的部分 + +```json +"resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" + }, + "zh_en_article":{ + "download_path": "s3://web-parse-huawei/shared_resource/quality/zh_en/zh_en_article.zip", + "md5": "ebc8be83b86e0d1ee2c9b797ad8f6130", + }, + "zh_en_long_article":{ + "download_path": "s3://web-parse-huawei/shared_resource/quality/zh_en/zh_en_long_article.zip", + "md5": "4586a9536ee7e731dac87361755e8026", + }, + }, +``` + +## 调用方法 + +```python +from llm_web_kit.model.clean_module import CleanModule, ContentStyle +from llm_web_kit.model.lang_id import update_language_by_str + +content_str = "Your content string here." +# content_style = "article", "book", "paper" ... +content_style = ContentStyle.ARTICLE + +language = "en" +language_details = "eng_Latn" +# 注意:如果需要自动决定语言,可以使用下面的方法 +# language, language_details = update_language_by_str(content_str) + + +clean_module = CleanModule(prod = True) +result = clean_module.process( + content_str=content_str, + language=language, + language_details=language_details, + content_style=content_style, + ) + +assert isinstance(result, dict) + +print(result["clean_remained"]) # True or False +print(result["clean_infos"]) # An info dict like {'quality_prob': 0.0} + +``` + +## 参数说明 + +class CleanModule + +- prod: bool + - 是否使用生产环境的模型。默认为True。 + +def process + +- content_str: str + - 输入的文本内容。 +- language: str + - 输入的文本内容的语言。 + - 例如:en, zh +- language_details: str + - 输入的文本内容的语言细节。 + - 例如:eng_Latn, zho_Hans +- content_style: ContentStyle + - 输入的文本内容的风格。 + - ContentStyle.ARTICLE, ContentStyle.BOOK, ContentStyle.PAPER diff --git a/docs/html_simplify_classify/html_simplify_classify.md b/docs/llm_web_kit/model/html_simplify_classify.md similarity index 78% rename from docs/html_simplify_classify/html_simplify_classify.md rename to docs/llm_web_kit/model/html_simplify_classify.md index b0251e64..f4f77e4f 100644 --- a/docs/html_simplify_classify/html_simplify_classify.md +++ b/docs/llm_web_kit/model/html_simplify_classify.md @@ -16,6 +16,22 @@ 该部分用于简化HTML从而提高网页布局分类的效果。在 `llm_web_kit/model/html_lib/html_lib` 目录下的 `simplify.py` 文件中的 `general_simplify_html_str` 函数实现了对html字符串的简化操作。 +默认路径为`~/.llm-web-kit.jsonc`中需要使用如下配置,可以自动下载模型: + +```json +{ + "resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" + }, + "html_cls-25m2": { + "download_path": "s3://web-parse-huawei/shared_resource/html_layout_cls/html_cls_25m2.zip", + "md5": "e15ea22a9aa65aa8c7c3a0e3c2e0c98a" + }, + } +} +``` + 使用方法如下: ```python diff --git a/docs/llm_web_kit/model/lang_id.md b/docs/llm_web_kit/model/lang_id.md index f3b081be..91a1d1af 100644 --- a/docs/llm_web_kit/model/lang_id.md +++ b/docs/llm_web_kit/model/lang_id.md @@ -4,22 +4,30 @@ ## 配置文件需要改动的部分 +huggingface版本: + ```json "resources": { "common":{ "cache_path": "~/.llm_web_kit_cache" }, - "lang-id-176": { - "download_path": "https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin", - "md5": "01810bc59c6a3d2b79c79e6336612f65" - }, "lang-id-218": { "download_path": "https://huggingface.co/facebook/fasttext-language-identification/resolve/main/model.bin?download=true", "sha256": "8ded5749a2ad79ae9ab7c9190c7c8b97ff20d54ad8b9527ffa50107238fc7f6a" + } + }, +``` + +s3版本: + +```json +"resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" }, - "political-24m7": { - "download_path": "XXXXXX", - "md5": "XXXXX" + "lang-id-218": { + "download_path": "s3://web-parse-huawei/shared_resource/language/lid218e.bin", + "sha256": "8ded5749a2ad79ae9ab7c9190c7c8b97ff20d54ad8b9527ffa50107238fc7f6a" } }, ``` @@ -31,17 +39,22 @@ from llm_web_kit.model.lang_id import * text = 'hello world, this is a test. the language is english' print(update_language_by_str(text)) #{'language': 'en','language_details': 'eng_Latn'} -print(decide_lang_by_str(text)) -#en -print(decide_lang_by_str_v218(text)) -#eng_Latn ``` ## 运行时间 -总共有 2099 条数据 +使用单cpu进行推理 + +共有 2099 条数据 + 总 token 数: 379375 + 平均 token 数: 180.74 -载入数据时间: 0.02 秒 -处理函数时间: 0.02 秒 -总时间: 0.04 秒 + +载入数据时间: 0.0214 秒 + +语言识别时间: 2.4313 秒 + +总时间: 2.4527 秒 + +处理速度: 863.33 条/秒 diff --git a/llm_web_kit/pipeline/__init__.py b/docs/llm_web_kit/model/model_based_safety.md similarity index 100% rename from llm_web_kit/pipeline/__init__.py rename to docs/llm_web_kit/model/model_based_safety.md diff --git a/llm_web_kit/pipeline/extractor/__init__.py b/docs/llm_web_kit/model/model_interface.md similarity index 100% rename from llm_web_kit/pipeline/extractor/__init__.py rename to docs/llm_web_kit/model/model_interface.md diff --git a/docs/llm_web_kit/model/political.md b/docs/llm_web_kit/model/political.md new file mode 100644 index 00000000..2d40af4f --- /dev/null +++ b/docs/llm_web_kit/model/political.md @@ -0,0 +1,86 @@ +## 作用 + +识别中文或英文文本中的涉政内容,返回值介于0~1.01之间,其中0代表涉政内容,1.01代表非涉政内容。 + +## 配置文件需要改动的部分 + +```json +"resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" + }, + "political-24m7":{ + "download_path": "s3://web-parse-huawei/shared_resource/political/24m7.zip", + "md5": "97eabb56268a3af3f68e8a96a50d5f80", + }, + }, +``` + +## 调用方法 + +```python +from llm_web_kit.model.policical import * +text = { + "track_id": "1e07f144-b290-4bcc-b6eb-37fc9a7f15ca", + "content_list": [ + [ + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Objective:\n \n \n This study analyzed the cost-effectiveness of delivering alcohol screening, brief intervention, and referral to treatment (SBIRT) in emergency departments (ED) when compared to outpatient medical settings.\n

                                                                                  ", + "content": [ + { + "c": "Objective: This study analyzed the cost-effectiveness of delivering alcohol screening, brief intervention, and referral to treatment (SBIRT) in emergency departments (ED) when compared to outpatient medical settings.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Methods:\n \n \n A probabilistic decision analytic tree categorized patients into health states. Utility weights and social costs were assigned to each health state. Health outcome measures were the proportion of patients not drinking above threshold levels at follow-up, the proportion of patients transitioning from above threshold levels at baseline to abstinent or below threshold levels at follow-up, and the quality-adjusted life years (QALYs) gained. Expected costs under a provider perspective were the marginal costs of SBIRT, and under a societal perspective were the sum of SBIRT cost per patient and the change in social costs. Incremental cost-effectiveness ratios were computed.\n

                                                                                  ", + "content": [ + { + "c": "Methods: A probabilistic decision analytic tree categorized patients into health states. Utility weights and social costs were assigned to each health state. Health outcome measures were the proportion of patients not drinking above threshold levels at follow-up, the proportion of patients transitioning from above threshold levels at baseline to abstinent or below threshold levels at follow-up, and the quality-adjusted life years (QALYs) gained. Expected costs under a provider perspective were the marginal costs of SBIRT, and under a societal perspective were the sum of SBIRT cost per patient and the change in social costs. Incremental cost-effectiveness ratios were computed.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Results:\n \n \n When considering provider costs only, compared to outpatient, SBIRT in ED cost $8.63 less, generated 0.005 more QALYs per patient, and resulted in 13.8% more patients drinking below threshold levels. Sensitivity analyses in which patients were assumed to receive a fixed number of treatment sessions that met clinical sites' guidelines made SBIRT more expensive in ED than outpatient; the ED remained more effective. In this sensitivity analysis, the ED was the most cost-effective setting if decision makers were willing to pay more than $1500 per QALY gained.\n

                                                                                  ", + "content": [ + { + "c": "Results: When considering provider costs only, compared to outpatient, SBIRT in ED cost $8.63 less, generated 0.005 more QALYs per patient, and resulted in 13.8% more patients drinking below threshold levels. Sensitivity analyses in which patients were assumed to receive a fixed number of treatment sessions that met clinical sites' guidelines made SBIRT more expensive in ED than outpatient; the ED remained more effective. In this sensitivity analysis, the ED was the most cost-effective setting if decision makers were willing to pay more than $1500 per QALY gained.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Conclusions:\n \n \n Alcohol SBIRT generates costs savings and improves health in both ED and outpatient settings. EDs provide better effectiveness at a lower cost and greater social cost reductions than outpatient.\n

                                                                                  ", + "content": [ + { + "c": "Conclusions: Alcohol SBIRT generates costs savings and improves health in both ED and outpatient settings. EDs provide better effectiveness at a lower cost and greater social cost reductions than outpatient.", + "t": "text" + } + ] + } + ] + ] +} +print(political_filter_cpu(text, "en")) +#{'political_prob': 1.0000100135803223} +``` + +## 运行时间 + +使用型号为`AMD EPYC 7742`的cpu单核进行测试,测试集总共有 77861 条数据(均是中英文的数据),下面只统计了political_filter_cpu接口本身的耗时,排除了数据读取的时间。 + +总字符数: 135617056 + +平均每条数据的字符数: 1741.7842 + +平均每条数据处理时间: 0.002402 秒 + +总处理时间: 190.5865 秒 + +每秒可处理: 416.3049条数据 diff --git a/docs/llm_web_kit/model/quality_model.md b/docs/llm_web_kit/model/quality_model.md new file mode 100644 index 00000000..f72b0b3d --- /dev/null +++ b/docs/llm_web_kit/model/quality_model.md @@ -0,0 +1,107 @@ +## 作用 + +对输入数据进行质量清洗。 +**注意!!** 本模块不是顶层功能模块 + +## 配置文件需要改动的部分 + +```json +"resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" + }, + "zh_en_article":{ + "download_path": "s3://web-parse-huawei/shared_resource/quality/zh_en/zh_en_article.zip", + "md5": "ebc8be83b86e0d1ee2c9b797ad8f6130", + }, + "zh_en_long_article":{ + "download_path": "s3://web-parse-huawei/shared_resource/quality/zh_en/zh_en_long_article.zip", + "md5": "4586a9536ee7e731dac87361755e8026", + }, + }, +``` + +## 调用方法 + +```python +from llm_web_kit.model.quality_model import quality_prober +data = { + "track_id": "1e07f144-b290-4bcc-b6eb-37fc9a7f15ca", + "content_list": [ + [ + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Objective:\n \n \n This study analyzed the cost-effectiveness of delivering alcohol screening, brief intervention, and referral to treatment (SBIRT) in emergency departments (ED) when compared to outpatient medical settings.\n

                                                                                  ", + "content": [ + { + "c": "Objective: This study analyzed the cost-effectiveness of delivering alcohol screening, brief intervention, and referral to treatment (SBIRT) in emergency departments (ED) when compared to outpatient medical settings.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Methods:\n \n \n A probabilistic decision analytic tree categorized patients into health states. Utility weights and social costs were assigned to each health state. Health outcome measures were the proportion of patients not drinking above threshold levels at follow-up, the proportion of patients transitioning from above threshold levels at baseline to abstinent or below threshold levels at follow-up, and the quality-adjusted life years (QALYs) gained. Expected costs under a provider perspective were the marginal costs of SBIRT, and under a societal perspective were the sum of SBIRT cost per patient and the change in social costs. Incremental cost-effectiveness ratios were computed.\n

                                                                                  ", + "content": [ + { + "c": "Methods: A probabilistic decision analytic tree categorized patients into health states. Utility weights and social costs were assigned to each health state. Health outcome measures were the proportion of patients not drinking above threshold levels at follow-up, the proportion of patients transitioning from above threshold levels at baseline to abstinent or below threshold levels at follow-up, and the quality-adjusted life years (QALYs) gained. Expected costs under a provider perspective were the marginal costs of SBIRT, and under a societal perspective were the sum of SBIRT cost per patient and the change in social costs. Incremental cost-effectiveness ratios were computed.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Results:\n \n \n When considering provider costs only, compared to outpatient, SBIRT in ED cost $8.63 less, generated 0.005 more QALYs per patient, and resulted in 13.8% more patients drinking below threshold levels. Sensitivity analyses in which patients were assumed to receive a fixed number of treatment sessions that met clinical sites' guidelines made SBIRT more expensive in ED than outpatient; the ED remained more effective. In this sensitivity analysis, the ED was the most cost-effective setting if decision makers were willing to pay more than $1500 per QALY gained.\n

                                                                                  ", + "content": [ + { + "c": "Results: When considering provider costs only, compared to outpatient, SBIRT in ED cost $8.63 less, generated 0.005 more QALYs per patient, and resulted in 13.8% more patients drinking below threshold levels. Sensitivity analyses in which patients were assumed to receive a fixed number of treatment sessions that met clinical sites' guidelines made SBIRT more expensive in ED than outpatient; the ED remained more effective. In this sensitivity analysis, the ED was the most cost-effective setting if decision makers were willing to pay more than $1500 per QALY gained.", + "t": "text" + } + ] + }, + { + "type": "paragraph", + "raw_content": "

                                                                                  \n Conclusions:\n \n \n Alcohol SBIRT generates costs savings and improves health in both ED and outpatient settings. EDs provide better effectiveness at a lower cost and greater social cost reductions than outpatient.\n

                                                                                  ", + "content": [ + { + "c": "Conclusions: Alcohol SBIRT generates costs savings and improves health in both ED and outpatient settings. EDs provide better effectiveness at a lower cost and greater social cost reductions than outpatient.", + "t": "text" + } + ] + } + ] + ] +} +# 支持article, paper, book三种文体,其中article使用的是上述配置文件中的`zh_en_article`模型,paper和book使用的是上述配置文件中的`zh_en_long_article`模型。 +# `zh_en_long_article`模型适用于长文本,并支持提取文本中公式的特征,适用于清洗带公式的文本。 +print(quality_prober(data, "en", "article")) +# {'quality_prob': 0.8930529675838833} +print(quality_prober(data, "en", "paper")) +# {'quality_prob': 0.9265140423831497} +print(quality_prober(data, "en", "book")) +# {'quality_prob': 0.9265140423831497} +``` + +## 运行时间 + +使用型号为`AMD EPYC 7742`的cpu单核进行测试,测试集总共有 77856 条数据(均是中英文的数据,且不会被启发式规则提前拒绝),下面只统计了`quality_prober`接口本身的耗时,排除了数据读取的时间。 + +总字符数: 135616946 + +平均每条数据的字符数: 1741.8946 + +**`zh_en_article`模型:** + +平均每条数据处理时间: 0.005748 秒 + +总处理时间: 447.5430 秒 + +每秒可处理: 173.9632条数据 + +**`zh_en_long_article`模型:** + +平均每条数据处理时间: 0.005473 秒 + +总处理时间: 426.1312 秒 + +每秒可处理: 182.7043条数据 diff --git a/docs/llm_web_kit/model/readme.md b/docs/llm_web_kit/model/readme.md new file mode 100644 index 00000000..4f2ad8b3 --- /dev/null +++ b/docs/llm_web_kit/model/readme.md @@ -0,0 +1,21 @@ +# 面向用户的接口 + +## html分类 + +html_simplify_classify.md + +## 语言检测 + +lang_id.md + +## 清洗模型 + +clean_module.md + +## 安全规则 + +rule_based_safety_module.md + +## 安全模型 + +model_interface.md diff --git a/llm_web_kit/pipeline/extractor/html/__init__.py b/docs/llm_web_kit/model/rule_based_safety_module.md similarity index 100% rename from llm_web_kit/pipeline/extractor/html/__init__.py rename to docs/llm_web_kit/model/rule_based_safety_module.md diff --git a/docs/llm_web_kit/model/unsafe_words_detector.md b/docs/llm_web_kit/model/unsafe_words_detector.md new file mode 100644 index 00000000..a489eb7e --- /dev/null +++ b/docs/llm_web_kit/model/unsafe_words_detector.md @@ -0,0 +1,35 @@ +## 作用 + +匹配敏感词并返回当前场景下的命中情况。 + +## 配置文件需要改动的部分 + +```json +"resources": { + "common":{ + "cache_path": "~/.llm_web_kit_cache" + }, + "unsafe_words":{ + "download_path": "s3://web-parse-huawei/shared_resource/political/unsafe_words.jsonl", + "md5": "e81dd1050a79f68b9d9b3f66baadde66", + }, + "xyz_internal_unsafe_words":{ + "download_path": "s3://web-parse-huawei/shared_resource/political/xyz_internal_unsafe_words.jsonl", + "md5": "05024905f03a420fc63ecae2f35b6e24", + }, + }, +``` + +## 用法 + +入口函数有2个: + +- unsafe_words_filter:返回最严重命中词级别。 +- unsafe_words_filter_overall: 返回是否命中严重敏感词。 + +## 速度 + +- 词表下载:auto_download,下载zh-en和xyz两个词表耗时分别为0.09s,0.02s +- 词表加载(不包括下载时间):get_ac,加载两个词表耗时分别为3.0s,0.7s +- 词表加载(包括下载时间):get_ac,加载两个词表耗时分别为3.3s , 0.72s +- 词表命中计算:在词表已加载的情况下,qps分别为约10525、3147 diff --git a/docs/specification/output_format/content_list_spec.md b/docs/specification/output_format/content_list_spec.md index 5c27c663..73ae6562 100644 --- a/docs/specification/output_format/content_list_spec.md +++ b/docs/specification/output_format/content_list_spec.md @@ -83,7 +83,8 @@ "html": "
                                                                                  12
                                                                                  ", "title": "example table", "note": "数据来源于...", - "is_complex": false // 是否是复杂表格(跨行、跨列的, 默认为false + "is_complex": false // 是否是复杂表格(跨行、跨列的/嵌套表格, 默认为false, + "table_nest_level": 1 //table的嵌套层级 } }, { @@ -107,7 +108,8 @@ ] ] ], - "ordered": true + "ordered": true, + "list_nest_level": 1 //list的嵌套层级 } } ], @@ -185,8 +187,8 @@ | bbox | array | \[x1, y1, x2, y2\] | 可选 | | raw_content | string | 原始文本内容 | 可选 | | content.math_content | string | 干净的,格式化过的公式内容。无论是行内还是行间公式两边都不能有$ | 是 | -| content.math_type | string | 公式语言类型,kelatex\\mathml\\asciimath | 可选 | -| content.by | string | 原html中使用公式渲染器 | 可选 | +| content.math_type | string | 公式语言类型,latex\\mathml\\asciimath | 可选 | +| content.by | string | 原html中使用公式渲染器,mathjax\\katex | 可选 | ### 图片段 @@ -285,20 +287,22 @@ "html": "
                                                                                  12
                                                                                  ", "title": "example table", "note": "数据来源于...", - "is_complex": false // 是否是复杂表格(跨行、跨列的, 默认为false + "is_complex": false // 是否是复杂表格(跨行、跨列的, 默认为false, + "table_nest_level": 1 //表格嵌套层级 } } ``` -| 字段 | 类型 | 描述 | 是否必须 | -| ------------------ | ------- | ---------------------------------------- | -------- | -| type | string | 值固定为table | 是 | -| bbox | array | \[x1, y1, x2, y2\] | 可选 | -| raw_content | string | 原始文本内容 | 可选 | -| content.html | string | 表格的html内容 | 是 | -| content.title | string | 表格的title属性 | 可选 | -| content.note | string | 表格的note属性 | 可选 | -| content.is_complex | boolean | 是否是复杂表格(跨行、跨列的, 默认为false | 可选 | +| 字段 | 类型 | 描述 | 是否必须 | +| ------------------------ | ------- | ------------------------------------------------- | -------- | +| type | string | 值固定为table | 是 | +| bbox | array | \[x1, y1, x2, y2\] | 可选 | +| raw_content | string | 原始文本内容 | 可选 | +| content.html | string | 表格的html内容 | 是 | +| content.title | string | 表格的title属性 | 可选 | +| content.note | string | 表格的note属性 | 可选 | +| content.is_complex | boolean | 是否是复杂表格(跨行、跨列的/嵌套表格, 默认为false | 可选 | +| content.table_nest_level | int | table嵌套层级(单个table为1,两层为2,以此类推) | 可选 | ### 列表段 @@ -324,18 +328,20 @@ ] ] ], - "ordered": true + "ordered": true, + "list_nest_level": 1 //list嵌套层级 } } ``` -| 字段 | 类型 | 描述 | 是否必须 | -| --------------- | ------- | --------------------------------------------------- | -------- | -| type | string | 值固定为list | 是 | -| bbox | array | \[x1, y1, x2, y2\] | 可选 | -| raw_content | string | 原始文本内容 | 可选 | -| content.items | array | 列表项,每个元素是N个段落,段落里的元素是文本或公式 | 是 | -| content.ordered | boolean | 是否是有序列表 | 可选 | +| 字段 | 类型 | 描述 | 是否必须 | +| ----------------------- | ------- | --------------------------------------------------- | -------- | +| type | string | 值固定为list | 是 | +| bbox | array | \[x1, y1, x2, y2\] | 可选 | +| raw_content | string | 原始文本内容 | 可选 | +| content.items | array | 列表项,每个元素是N个段落,段落里的元素是文本或公式 | 是 | +| content.ordered | boolean | 是否是有序列表 | 可选 | +| content.list_nest_level | int | list的嵌套层级(单层list list_nest_level为1) | 可选 | items字段说明 diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/__init__.py b/llm_web_kit/config/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/__init__.py rename to llm_web_kit/config/__init__.py diff --git a/llm_web_kit/config/cfg_reader.py b/llm_web_kit/config/cfg_reader.py index 652eaad0..bd295d27 100644 --- a/llm_web_kit/config/cfg_reader.py +++ b/llm_web_kit/config/cfg_reader.py @@ -1,16 +1,25 @@ import os import commentjson as json +from loguru import logger +from llm_web_kit.exception.exception import ModelResourceException +from llm_web_kit.libs.path_lib import get_py_pkg_root_dir -def load_config() -> dict: - """_summary_ - Args: - config_file (_type_): _description_ +def load_config(suppress_error: bool = False) -> dict: + """Load the configuration file for the web kit. First try to read the + configuration file from the environment variable LLM_WEB_KIT_CFG_PATH. If + the environment variable is not set, use the default configuration file + path ~/.llm-web-kit.jsonc. If the configuration file does not exist, raise + an exception. + + Raises: + ModelResourceException: LLM_WEB_KIT_CFG_PATH points to a non-exist file + ModelResourceException: cfg_path does not exist Returns: - _type_: _description_ + config(dict): The configuration dictionary """ # 首先从环境变量LLM_WEB_KIT_CFG_PATH 读取配置文件的位置 # 如果没有配置,就使用默认的配置文件位置 @@ -19,15 +28,44 @@ def load_config() -> dict: if env_cfg_path: cfg_path = env_cfg_path if not os.path.exists(cfg_path): - raise FileNotFoundError(f'environment variable LLM_WEB_KIT_CFG_PATH points to a non-exist file: {cfg_path}') + if suppress_error: + return {} + + logger.warning( + f'environment variable LLM_WEB_KIT_CFG_PATH points to a non-exist file: {cfg_path}' + ) + raise ModelResourceException( + f'environment variable LLM_WEB_KIT_CFG_PATH points to a non-exist file: {cfg_path}' + ) else: cfg_path = os.path.expanduser('~/.llm-web-kit.jsonc') if not os.path.exists(cfg_path): - raise FileNotFoundError( - f'{cfg_path} does not exist, please create one or set environment variable LLM_WEB_KIT_CFG_PATH to a valid file path') + if suppress_error: + return {} + + logger.warning( + f'{cfg_path} does not exist, please create one or set environment variable LLM_WEB_KIT_CFG_PATH to a valid file path' + ) + raise ModelResourceException( + f'{cfg_path} does not exist, please create one or set environment variable LLM_WEB_KIT_CFG_PATH to a valid file path' + ) # 读取配置文件 with open(cfg_path, 'r', encoding='utf-8') as f: config = json.load(f) return config + + +def load_pipe_tpl(pipe_name: str) -> dict: + """Load the pipe template for the web kit. + + Args: + pipe_name(str): The name of the pipe to load + + Returns: pipe_tpl(dict): The pipe template dictionary + """ + pipe_tpl_path = os.path.join(get_py_pkg_root_dir(), 'config', 'pipe_tpl', f'{pipe_name}.jsonc') + with open(pipe_tpl_path, 'r', encoding='utf-8') as f: + pipe_tpl = json.load(f) + return pipe_tpl diff --git a/llm_web_kit/config/pipe_tpl/ebook.jsonc b/llm_web_kit/config/pipe_tpl/ebook.jsonc new file mode 100644 index 00000000..61bef065 --- /dev/null +++ b/llm_web_kit/config/pipe_tpl/ebook.jsonc @@ -0,0 +1,25 @@ +{ + "extractor_pipe": { + "pre_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.ebook.pre_extractor.EBOOKFileFormatFilterPreExtractor", + "class_init_kwargs": {} + } + ], + "extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.ebook.extractor.EBOOKFileFormatExtractor", + "class_init_kwargs": {} + } + ], + "post_extractor": [ + { + "enable": false, + "python_class": "llm_web_kit.extractor.ebook.post_extractor.EBOOKFileFormatPostExtractor", + "class_init_kwargs": {} + } + ] + } +} diff --git a/llm_web_kit/config/pipe_tpl/html-test.jsonc b/llm_web_kit/config/pipe_tpl/html-test.jsonc new file mode 100644 index 00000000..e569be23 --- /dev/null +++ b/llm_web_kit/config/pipe_tpl/html-test.jsonc @@ -0,0 +1,37 @@ +{ + "extractor_pipe": { + "enable": true, + "validate_input_format": false, + "pre_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.TestHTMLFileFormatFilterPreExtractor", + "class_init_kwargs": { + "html_parent_dir": "tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/" + } + }, + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatFilterTablePreExtractor" + }, + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatCleanTagsPreExtractor", + "class_init_kwargs": {} + } + ], + "extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor", + "class_init_kwargs": {} + } + ], + "post_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.post_extractor.HTMLStripSpacePostExtractor" + } + ] + } +} diff --git a/llm_web_kit/config/pipe_tpl/html.jsonc b/llm_web_kit/config/pipe_tpl/html.jsonc new file mode 100644 index 00000000..30838458 --- /dev/null +++ b/llm_web_kit/config/pipe_tpl/html.jsonc @@ -0,0 +1,30 @@ +{ + "extractor_pipe": { + "enable": true, + "validate_input_format": false, + "pre_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatFilterTablePreExtractor" + }, + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatCleanTagsPreExtractor", + "class_init_kwargs": {} + } + ], + "extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor", + "class_init_kwargs": {} + } + ], + "post_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.html.post_extractor.HTMLStripSpacePostExtractor" + } + ] + } +} diff --git a/llm_web_kit/config/pipe_tpl/pdf.jsonc b/llm_web_kit/config/pipe_tpl/pdf.jsonc new file mode 100644 index 00000000..9fb50cc0 --- /dev/null +++ b/llm_web_kit/config/pipe_tpl/pdf.jsonc @@ -0,0 +1,25 @@ +{ + "extractor_pipe": { + "pre_extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.pdf.pre_extractor.PDFFileFormatFilterPreExtractor", + "class_init_kwargs": {} + } + ], + "extractor": [ + { + "enable": true, + "python_class": "llm_web_kit.extractor.pdf.extractor.PDFFileFormatExtractor", + "class_init_kwargs": {} + } + ], + "post_extractor": [ + { + "enable": false, + "python_class": "llm_web_kit.extractor.pdf.post_extractor.PDFFileFormatPostExtractor", + "class_init_kwargs": {} + } + ] + } +} diff --git a/llm_web_kit/dataio/filebase.py b/llm_web_kit/dataio/filebase.py index 93c1e2d7..d4ed32a5 100644 --- a/llm_web_kit/dataio/filebase.py +++ b/llm_web_kit/dataio/filebase.py @@ -60,3 +60,20 @@ def write(self, path: str, data: bytes) -> None: with open(fn_path, 'wb') as f: f.write(data) + + def append_write(self, path: str, data: bytes) -> None: + """Append data to file. + + Args: + path (str): the path of file, if the path is relative path, it will be joined with parent_dir. + data (bytes): the data want to append + """ + fn_path = path + if not os.path.isabs(fn_path) and len(self._parent_dir) > 0: + fn_path = os.path.join(self._parent_dir, path) + + if not os.path.exists(os.path.dirname(fn_path)) and os.path.dirname(fn_path) != '': + os.makedirs(os.path.dirname(fn_path), exist_ok=True) + + with open(fn_path, 'ab') as f: + f.write(data) diff --git a/llm_web_kit/exception/exception.jsonc b/llm_web_kit/exception/exception.jsonc index 47f9cb59..86664412 100644 --- a/llm_web_kit/exception/exception.jsonc +++ b/llm_web_kit/exception/exception.jsonc @@ -1,68 +1,159 @@ { - // 兜底异常 - "LlmWebKitBase":{ - "LlmWebKitBase_Error": {"code": 1000, "message": "LlmWebKitBase error"} - }, + // Base基础异常 (10000000) + "LlmWebKitBase": { + "LlmWebKitBaseException": { + "code": 10000000, + "message": "LlmWebKit base exception" + } + }, - //输入异常 - "PipeLineInput":{ - "PipeLineInput_Error": {"code": 2000, "message": "PipeLine input data_json error"} + // ExtractorChain相关异常 (20000000) + "ExtractorChain": { + "ExtractorChainBaseException": { + "code": 20000000, + "message": "ExtractorChain base exception" }, - - // pipeline初始化异常 - "PipeLineSuit": { - "PipelineSuit_Error": {"code": 3000, "message": "pipeline suit init error"} + "ExtractorChainInitException": { + "code": 21000000, + "message": "ExtractorChain initialization exception" }, - - //pipeline 异常 - "PipeLineBase": { - "PipeLineBase_Error": {"code": 4000, "message": "pipeline base error"} + "ExtractorChainConfigException": { + "code": 22000000, + "message": "ExtractorChain configuration exception" }, - - //HTML类型异常 - "HTML": { - "HTML_Error": {"code":5000 , "message": "HTML type error"} + "ExtractorChainInputException": { + "code": 23000000, + "message": "ExtractorChain input exception" }, + "ExtractorNotFoundException": { + "code": 24000000, + "message": "Extractor not found exception" + } + }, - //PDF类型异常 - "PDF": { - "PDF_Error": {"code": 6000, "message": "PDF type error"} + // Extractor相关异常 (30000000) + "Extractor": { + "ExtractorBaseException": { + "code": 30000000, + "message": "Extractor base exception" }, - - //EBook类异常 - "EBOOK": { - "EBOOK_Error": {"code": 7000, "message": "EBOOK type error"} + "HtmlFileExtractorException": { + "code": 31000000, + "message": "HTML file extractor exception" }, - - //Other 类型异常 - "Other": { - "Other_type_Error": {"code": 8000, "message": "Other type error"} + "PdfFileExtractorException": { + "code": 32000000, + "message": "PDF file extractor exception" }, - - - // 分模块的业务异常 - "Format": { - "HtmlFormat_Error": {"code": 5001, "message": "HTML format error"} - }, - "PreExtractor": { - "HtmlPreExtractor_Error": {"code": 5002, "message": "Html PreExtractor error"} - }, - "Recognizer": { - "HtmlRecognizer_Error": {"code": 5003, "message": "Html recognizer error"}, - "HtmlMathRecognizer_Error": {"code": 5005, "message": "Html math recognize error"}, - "HtmlCodeRecognizer_Error": {"code": 5006, "message": "Html code recognizer error"}, - "HtmlTableRecognizer_Error": {"code": 5007, "message": "Html table recognizer error"}, - "HtmlImageRecognizer_Error": {"code": 5008, "message": "Html image recognizer error"}, - "HtmlListRecognizer_Error": {"code": 5009, "message": "Html list recognizer error"}, - "HtmlAudioRecognizer_Error": {"code": 5010, "message": "Html audio recognizer error"}, - "HtmlVideoRecognizer_Error": {"code": 5011, "message": "Html video recognizer error"}, - "HtmlTitleRecognizer_Error": {"code": 5012, "message": "Html title recognizer error"}, - "HtmlTextRecognizer_Error": {"code": 5013, "message": "Html text recognizer error"} - }, - "MagicHtmlExtractor": { - "MagicHtmlExtractor_Error": {"code": 5004, "message": "magic-html extrac error"} - }, - "PostExtractor": { - "HtmlPostExtractor_Error": {"code": 5014, "message": "html post extractor error"} + "EbookFileExtractorException": { + "code": 33000000, + "message": "Ebook file extractor exception" + }, + "OtherFileExtractorException": { + "code": 34000000, + "message": "Other file extractor exception" + }, + "MagicHtmlExtractorException": { + "code": 31010000, + "message": "Magic HTML extractor exception" + }, + "HtmlPreExtractorException": { + "code": 31020000, + "message": "HTML pre-extractor exception" + }, + "HtmlExtractorException": { + "code": 31030000, + "message": "HTML extractor exception" + }, + "HtmlPostExtractorException": { + "code": 31040000, + "message": "HTML post-extractor exception" + } + }, + // HtmlRecognizer相关异常 + "HtmlRecognizer": { + "HtmlRecognizerException": { + "code": 31031000, + "message": "HTML recognizer exception" + }, + "HtmlMathRecognizerException": { + "code": 31031100, + "message": "HTML math recognizer exception" + }, + "HtmlMathMathjaxRenderRecognizerException": { + "code": 31031110, + "message": "HTML math mathjax render recognizer exception" + }, + "HtmlCodeRecognizerException": { + "code": 31031200, + "message": "HTML code recognizer exception" + }, + "HtmlTableRecognizerException": { + "code": 31031300, + "message": "HTML table recognizer exception" + }, + "HtmlImageRecognizerException": { + "code": 31031400, + "message": "HTML image recognizer exception" + }, + "HtmlListRecognizerException": { + "code": 31031500, + "message": "HTML list recognizer exception" + }, + "HtmlAudioRecognizerException": { + "code": 31031600, + "message": "HTML audio recognizer exception" + }, + "HtmlVideoRecognizerException": { + "code": 31031700, + "message": "HTML video recognizer exception" + }, + "HtmlTitleRecognizerException": { + "code": 31031800, + "message": "HTML title recognizer exception" + }, + "HtmlTextRecognizerException": { + "code": 31031900, + "message": "HTML text recognizer exception" + } + }, + // Model相关异常 (40000000) + "Model": { + "ModelBaseException": { + "code": 40000000, + "message": "Model base exception" + }, + "ModelResourceException": { + "code": 41000000, + "message": "Model resource exception" + }, + "ModelInitException": { + "code": 42000000, + "message": "Model initialization exception" + }, + "ModelInputException": { + "code": 43000000, + "message": "Model input exception" + }, + "ModelOutputException": { + "code": 44000000, + "message": "Model output exception" + }, + "SafeModelException": { + "code": 45000000, + "message": "Safe model exception" + }, + "CleanModelException": { + "code": 46000000, + "message": "Clean model exception" + }, + "CleanModelUnsupportedLanguageException": { + "code": 46100000, + "message": "Clean model unsupported language exception" + }, + "ModelRuntimeException": { + "code": 47000000, + "message": "Model runtime exception" } + } } diff --git a/llm_web_kit/exception/exception.py b/llm_web_kit/exception/exception.py index 4a5a57bc..38f55934 100644 --- a/llm_web_kit/exception/exception.py +++ b/llm_web_kit/exception/exception.py @@ -3,227 +3,387 @@ import commentjson as json -from llm_web_kit.input.datajson import DataJsonKey - class ErrorMsg: - # 类属性,用于存储错误代码和消息 + """Error message manager class.""" _errors = {} @classmethod def _load_errors(cls): - # 从JSON文件中加载错误代码和消息 + """Load error codes and messages from JSON file.""" exception_defs_file_path = Path(__file__).parent / 'exception.jsonc' with open(exception_defs_file_path, 'r', encoding='utf-8') as file: jso = json.load(file) for module, module_defs in jso.items(): for err_name, err_info in module_defs.items(): err_code = err_info['code'] - cls._errors[str(err_code)] = {'message': err_info['message'], 'module': module, 'error_name': err_name} + cls._errors[str(err_code)] = { + 'message': err_info['message'], + 'module': module, + 'error_name': err_name, + } @classmethod def get_error_message(cls, error_code: int): # 根据错误代码获取错误消息 if str(error_code) not in cls._errors: - return f'未知错误代码{error_code}' + return f'unknown error code {error_code}' return cls._errors[str(error_code)]['message'] + @classmethod + def get_error_code(cls, module: str, error_name: str) -> int: + """根据模块名和错误名获取错误代码.""" + for code, info in cls._errors.items(): + if info['module'] == module and info['error_name'] == error_name: + return int(code) + raise ValueError(f'error code not found: module={module}, error_name={error_name}') + ErrorMsg._load_errors() -class WebKitBaseException(Exception): - """基础的Pipeline异常类,系统中任何地方抛出的异常都必须是这个异常的子类. +class LlmWebKitBaseException(Exception): + """Base exception class for LlmWebKit.""" - Args: - Exception (_type_): _description_ - """ + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('LlmWebKitBase', 'LlmWebKitBaseException') - def __init__(self, err_code: int, custom_message: str): - self.err_code = err_code - self.message = ErrorMsg.get_error_message(self.err_code) + self.error_code = error_code + self.message = ErrorMsg.get_error_message(self.error_code) self.custom_message = custom_message - self.dataset_name = DataJsonKey.DATASET_NAME + self.dataset_name = '' super().__init__(self.message) frame = inspect.currentframe().f_back self.__py_filename = frame.f_code.co_filename self.__py_file_line_number = frame.f_lineno def __str__(self): - return f'{self.__py_filename}: {self.__py_file_line_number}#{self.err_code}#{self.message}#{self.custom_message}' + return ( + f'{self.__py_filename}: {self.__py_file_line_number}#{self.error_code}#{self.message}#{self.custom_message}' + ) + + +############################################################################## +# +# ExtractorChain Exceptions +# +############################################################################## + +class ExtractorChainBaseException(LlmWebKitBaseException): + """Base exception class for ExtractorChain.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('ExtractorChain', 'ExtractorChainBaseException') + super().__init__(custom_message, error_code) + + +class ExtractorInitException(ExtractorChainBaseException): + """Exception raised during Extractor initialization.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('ExtractorChain', 'ExtractorChainInitException') + super().__init__(custom_message, error_code) + + +class ExtractorChainInputException(ExtractorChainBaseException): + """Exception raised for invalid input data format.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('ExtractorChain', 'ExtractorChainInputException') + super().__init__(custom_message, error_code) + + +class ExtractorChainConfigException(ExtractorChainBaseException): + """Exception raised for configuration related issues.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('ExtractorChain', 'ExtractorChainConfigException') + super().__init__(custom_message, error_code) + + +class ExtractorNotFoundException(ExtractorChainBaseException): + """Exception raised when specified Extractor is not found.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('ExtractorChain', 'ExtractorNotFoundException') + super().__init__(custom_message, error_code) + + +############################################################################## +# +# Extractor Base Exception +# +############################################################################## + +class ExtractorBaseException(LlmWebKitBaseException): + """Base exception class for all Extractor related exceptions.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'ExtractorBaseException') + super().__init__(custom_message, error_code) + + +############################################################################## +# +# File Extractor Exceptions +# +############################################################################## + +class HtmlFileExtractorException(ExtractorBaseException): + """Base exception class for HTML file processing.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'HtmlFileExtractorException') + super().__init__(custom_message, error_code) + + +class PdfFileExtractorException(ExtractorBaseException): + """Exception raised during PDF file processing.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'PdfFileExtractorException') + super().__init__(custom_message, error_code) + + +class EbookFileExtractorException(ExtractorBaseException): + """Exception raised during Ebook file processing.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'EbookFileExtractorException') + super().__init__(custom_message, error_code) + + +class OtherFileExtractorException(ExtractorBaseException): + """Exception raised during processing of other file types.""" + + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'OtherFileExtractorException') + super().__init__(custom_message, error_code) + ############################################################################## # -# Pipeline相关的异常 +# HTML Processing Exceptions # -############################################################################### +############################################################################## +class MagicHtmlExtractorException(HtmlFileExtractorException): + """Exception raised during magic-html processing.""" -class LlmWebKitBaseException(WebKitBaseException): - """llm web kit base exp.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'MagicHtmlExtractorException') + super().__init__(custom_message, error_code) - def __init__(self, error_code, custom_message: str = None): - """init llm web kit异常.""" - super().__init__(error_code, custom_message) +class HtmlPreExtractorException(HtmlFileExtractorException): + """Exception raised during HTML pre-extraction phase.""" -class LlmWebKitBaseActException(LlmWebKitBaseException): - """llm web kit base exp.""" - def __init__(self, custom_message: str = None): - super().__init__(1000, custom_message) + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'HtmlPreExtractorException') + super().__init__(custom_message, error_code) -class PipelineInputExp(LlmWebKitBaseException): - """pipline input格式异常.""" +class HtmlExtractorException(HtmlFileExtractorException): + """Base exception class for HTML extraction.""" - def __init__(self, custom_message: str = None): - """init pipline input 异常.""" - super().__init__(2000, custom_message) + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'HtmlExtractorException') + super().__init__(custom_message, error_code) -class PipeLineSuitBaseExp(LlmWebKitBaseException): - """pipline input格式异常.""" +class HtmlPostExtractorException(HtmlFileExtractorException): + """Exception raised during HTML post-extraction phase.""" - def __init__(self, custom_message: str = None): - """init pipline input 异常.""" - super().__init__(3000, custom_message) + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Extractor', 'HtmlPostExtractorException') + super().__init__(custom_message, error_code) -class PipelineBaseExp(LlmWebKitBaseException): - """Pipeline初始化异常. +############################################################################## +# +# HTML Recognizer Exceptions +# +############################################################################## - Args: - PipelineBaseException (_type_): _description_ - """ +class HtmlRecognizerException(HtmlExtractorException): + """Base exception class for HTML recognizer.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlRecognizerException') + super().__init__(custom_message, error_code) - def __init__(self, err_code: int, custom_message: str = None): - """pipeline对象抛出的异常基类. - Args: - err_code (int): _description_ - custom_message (str, optional): _description_. Defaults to None. - """ - super().__init__(4000, custom_message) +class HtmlMathRecognizerException(HtmlRecognizerException): + """Exception raised during math content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlMathRecognizerException') + super().__init__(custom_message, error_code) -class HTMLExp(PipelineBaseExp): - """Pipeline初始化异常. +class HtmlMathMathjaxRenderRecognizerException(HtmlRecognizerException): + """Exception raised during math render.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlMathMathjaxRenderRecognizerException') + super().__init__(custom_message, error_code) - Args: - HTMLExp (_type_): _description_ - """ - def __init__(self, err_code, custom_message: str = None): - """pipeline初始化异常. +class HtmlCodeRecognizerException(HtmlRecognizerException): + """Exception raised during code content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlCodeRecognizerException') + super().__init__(custom_message, error_code) - Args: - custom_message (str, optional): _description_. Defaults to None. - """ - super().__init__(4100, custom_message) +class HtmlTableRecognizerException(HtmlRecognizerException): + """Exception raised during table content recognition.""" -class HtmlFormatExp(HTMLExp): - """html format 异常.""" - def __init__(self, custom_message: str = None): - """html format init.""" - super().__init__(4110, custom_message) + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlTableRecognizerException') + super().__init__(custom_message, error_code) -class HtmlPreExtractorExp(HTMLExp): - """html pre extractor 异常.""" - def __init__(self, custom_message: str = None): - """html pre extractor init.""" - super().__init__(4120, custom_message) +class HtmlImageRecognizerException(HtmlRecognizerException): + """Exception raised during image content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlImageRecognizerException') + super().__init__(custom_message, error_code) -class HtmlRecognizerExp(HTMLExp): - """Html recognizer.""" - def __init__(self, error_code, custom_message: str = None): - """html recognizer init.""" - super().__init__(4130, custom_message) +class HtmlListRecognizerException(HtmlRecognizerException): + """Exception raised during list content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlListRecognizerException') + super().__init__(custom_message, error_code) -class HtmlMagicHtmlExtractorExp(HtmlRecognizerExp): - """magic-html异常.""" - def __init__(self, custom_message: str = None): - """magic-html error.""" - super().__init__(4140, custom_message) +class HtmlAudioRecognizerException(HtmlRecognizerException): + """Exception raised during audio content recognition.""" -class HtmlMathRecognizerExp(HtmlRecognizerExp): - """math recognizer异常.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlAudioRecognizerException') + super().__init__(custom_message, error_code) - def __init__(self, custom_message: str = None): - """math recognizer error.""" - super().__init__(4131, custom_message) +class HtmlVideoRecognizerException(HtmlRecognizerException): + """Exception raised during video content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlVideoRecognizerException') + super().__init__(custom_message, error_code) -class HtmlCodeRecognizerExp(HtmlRecognizerExp): - """code recognizer 异常.""" - def __init__(self, custom_message: str = None): - """code recognizer error.""" - super().__init__(4132, custom_message) +class HtmlTitleRecognizerException(HtmlRecognizerException): + """Exception raised during title content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlTitleRecognizerException') + super().__init__(custom_message, error_code) -class HtmlTableRecognizerExp(HtmlRecognizerExp): - """html table recognizer 异常.""" - def __init__(self, custom_message: str = None): - """html table recognizer init.""" - super().__init__(4133, custom_message) +class HtmlTextRecognizerException(HtmlRecognizerException): + """Exception raised during text content recognition.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('HtmlRecognizer', 'HtmlTextRecognizerException') + super().__init__(custom_message, error_code) -class HtmlImageRecognizerExp(HtmlRecognizerExp): - """html image recognizer 异常.""" - def __init__(self, custom_message: str = None): - """html image recognizer init.""" - super().__init__(4134, custom_message) +class ModelBaseException(LlmWebKitBaseException): + """Base exception class for Model module.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelBaseException') + super().__init__(custom_message, error_code) -class HtmlListRecognizerExp(HtmlRecognizerExp): - """html list recognizer 异常.""" +class ModelResourceException(ModelBaseException): + """Exception raised during model resource loading.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelResourceException') + super().__init__(custom_message, error_code) - def __init__(self, custom_message: str = None): - """html list recognizer init.""" - super().__init__(4135, custom_message) +class ModelInitException(ModelBaseException): + """Exception raised during model initialization.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelInitException') + super().__init__(custom_message, error_code) -class HtmlAudioRecognizerExp(HtmlRecognizerExp): - """Html audio recognizer异常.""" - def __init__(self, custom_message: str = None): - """html audio recognizer init.""" - super().__init__(4136, custom_message) +class ModelInputException(ModelBaseException): + """Exception raised for model input data format.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelInputException') + super().__init__(custom_message, error_code) -class HtmlVideoRecognizerExp(HtmlRecognizerExp): - """Html video recognizer 异常.""" - def __init__(self, custom_message: str = None): - """html video recognizer init.""" - super().__init__(4137, custom_message) +class ModelRuntimeException(ModelBaseException): + """Exception raised for model input data format.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelRuntimeException') + super().__init__(custom_message, error_code) -class HtmlTitleRecognizerExp(HtmlRecognizerExp): - """html title recognizer 异常.""" +class ModelOutputException(ModelBaseException): + """Exception raised for model output data format.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'ModelOutputException') + super().__init__(custom_message, error_code) - def __init__(self, custom_message: str = None): - """html title recognizer init.""" - super().__init__(4138, custom_message) +class SafeModelException(ModelBaseException): + """Exception raised for safe model related issues.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'SafeModelException') + super().__init__(custom_message, error_code) -class HtmlTextRecognizerExp(HtmlRecognizerExp): - """html text recognizer 异常.""" - def __init__(self, custom_message: str = None): - """html text recognizer init.""" - super().__init__(4139, custom_message) +class CleanModelException(ModelBaseException): + """Exception raised for clean model related issues.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'CleanModelException') + super().__init__(custom_message, error_code) -class HtmlPostExtractorExp(HTMLExp): - """html post extractor 异常.""" - def __init__(self, custom_message: str = None): - """html post extractor init.""" - super().__init__(4150, custom_message) +############################################################################## +# +# Model Exceptions +# +############################################################################## +class CleanModelUnsupportedLanguageException(CleanModelException): + """Exception raised for clean model unsupported language.""" + def __init__(self, custom_message: str | None = None, error_code: int | None = None): + if error_code is None: + error_code = ErrorMsg.get_error_code('Model', 'CleanModelUnsupportedLanguageException') + super().__init__(custom_message, error_code) diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/__init__.py b/llm_web_kit/extractor/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/__init__.py rename to llm_web_kit/extractor/__init__.py diff --git a/llm_web_kit/pipeline/extractor/base.py b/llm_web_kit/extractor/base.py similarity index 100% rename from llm_web_kit/pipeline/extractor/base.py rename to llm_web_kit/extractor/base.py diff --git a/llm_web_kit/extractor/config.py b/llm_web_kit/extractor/config.py new file mode 100644 index 00000000..0084f5db --- /dev/null +++ b/llm_web_kit/extractor/config.py @@ -0,0 +1,7 @@ +INVISIBLE_TAGS = [ + # url 匹配一级域名,* 指匹配所有网站 + {'url': '*', 'tag': '//div[starts-with(@class, "advert") or starts-with(@name, "advert") or starts-with(@id, "advert")]'}, + {'url': '*', 'tag': '//div[contains(@style, "display: none")]'}, + {'url': '*', 'tag': '//div[contains(@style, "display:none")]'}, + {'url': 'stackexchange.com', 'tag': '//*[contains(@class, "d-none")]'}, # 任意标签,class包含d-none,限制在stackexchange.com网站 +] diff --git a/llm_web_kit/pipeline/extractor/ebook/__init__.py b/llm_web_kit/extractor/ebook/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/ebook/__init__.py rename to llm_web_kit/extractor/ebook/__init__.py diff --git a/llm_web_kit/pipeline/extractor/ebook/extractor.py b/llm_web_kit/extractor/ebook/extractor.py similarity index 93% rename from llm_web_kit/pipeline/extractor/ebook/extractor.py rename to llm_web_kit/extractor/ebook/extractor.py index bf49e111..fb0a9784 100644 --- a/llm_web_kit/pipeline/extractor/ebook/extractor.py +++ b/llm_web_kit/extractor/ebook/extractor.py @@ -2,8 +2,8 @@ """Actual data extraction main program.""" from overrides import override +from llm_web_kit.extractor.extractor import BaseFileFormatExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.extractor import BaseFileFormatExtractor class EBOOKFileFormatExtractor(BaseFileFormatExtractor): diff --git a/llm_web_kit/pipeline/extractor/ebook/post_extractor.py b/llm_web_kit/extractor/ebook/post_extractor.py similarity index 91% rename from llm_web_kit/pipeline/extractor/ebook/post_extractor.py rename to llm_web_kit/extractor/ebook/post_extractor.py index 2b986a8f..3809da87 100644 --- a/llm_web_kit/pipeline/extractor/ebook/post_extractor.py +++ b/llm_web_kit/extractor/ebook/post_extractor.py @@ -2,9 +2,8 @@ """Data extraction post-processing program.""" from overrides import override +from llm_web_kit.extractor.post_extractor import BaseFileFormatPostExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.post_extractor import \ - BaseFileFormatPostExtractor class EBOOKFileFormatPostExtractor(BaseFileFormatPostExtractor): diff --git a/llm_web_kit/pipeline/extractor/ebook/pre_extractor.py b/llm_web_kit/extractor/ebook/pre_extractor.py similarity index 94% rename from llm_web_kit/pipeline/extractor/ebook/pre_extractor.py rename to llm_web_kit/extractor/ebook/pre_extractor.py index 8ca97368..7073d9b1 100644 --- a/llm_web_kit/pipeline/extractor/ebook/pre_extractor.py +++ b/llm_web_kit/extractor/ebook/pre_extractor.py @@ -2,9 +2,9 @@ """Data extraction pre-processing program.""" from overrides import override -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.pre_extractor import \ +from llm_web_kit.extractor.pre_extractor import \ BaseFileFormatFilterPreExtractor +from llm_web_kit.input.datajson import DataJson class EBOOKFileFormatFilterPreExtractor(BaseFileFormatFilterPreExtractor): diff --git a/llm_web_kit/pipeline/extractor/extractor.py b/llm_web_kit/extractor/extractor.py similarity index 98% rename from llm_web_kit/pipeline/extractor/extractor.py rename to llm_web_kit/extractor/extractor.py index 5b67f94d..608ab0f6 100644 --- a/llm_web_kit/pipeline/extractor/extractor.py +++ b/llm_web_kit/extractor/extractor.py @@ -2,8 +2,8 @@ from overrides import override +from llm_web_kit.extractor.base import FileTypeMatcher from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.base import FileTypeMatcher class AbstractExtractor(ABC): diff --git a/llm_web_kit/extractor/extractor_chain.py b/llm_web_kit/extractor/extractor_chain.py new file mode 100644 index 00000000..0d601bcf --- /dev/null +++ b/llm_web_kit/extractor/extractor_chain.py @@ -0,0 +1,150 @@ +from typing import List, Union + +import commentjson as json + +from llm_web_kit.exception.exception import (ExtractorChainBaseException, + ExtractorChainConfigException, + ExtractorChainInputException, + ExtractorInitException, + ExtractorNotFoundException, + LlmWebKitBaseException) +from llm_web_kit.extractor.extractor import AbstractExtractor +from llm_web_kit.extractor.post_extractor import AbstractPostExtractor +from llm_web_kit.extractor.pre_extractor import AbstractPreExtractor +from llm_web_kit.input.datajson import DataJson +from llm_web_kit.libs.class_loader import load_python_class_by_name + + +# ########################################################## +# extractor chain +# ########################################################## +class ExtractorChain: + """Handles extraction by chaining pre_extractors, extractors and + post_extractors.""" + + def __init__(self, config: dict): + """Initialize extractor chain from config. + + Args: + config (dict): Config dict containing extractor_pipe configuration + """ + self.__pre_extractors: List[AbstractPreExtractor] = [] + self.__extractors: List[AbstractExtractor] = [] + self.__post_extractors: List[AbstractPostExtractor] = [] + + # Get extractor pipe config + extractor_config = config.get('extractor_pipe', {}) + + # Load extractors + self.__load_extractors(extractor_config) + + def extract(self, data: DataJson) -> DataJson: + """Run the extraction extractor.""" + # Validate input + self.__validate_extract_input(data) + + try: + # Pre extractors + for pre_ext in self.__pre_extractors: + data = pre_ext.pre_extract(data) + # Main extractors + for ext in self.__extractors: + data = ext.extract(data) + + # Post extractors + for post_ext in self.__post_extractors: + data = post_ext.post_extract(data) + + except KeyError as e: + exc = ExtractorChainInputException(f'Required field missing: {str(e)}') + exc.dataset_name = data.get_dataset_name() + raise exc + except ExtractorChainBaseException as e: + e.dataset_name = data.get_dataset_name() + raise + except LlmWebKitBaseException as e: + e.dataset_name = data.get_dataset_name() + raise + except Exception as e: + wrapped = ExtractorChainBaseException(f'Error during extraction: {str(e)}') + wrapped.dataset_name = data.get_dataset_name() + raise wrapped from e + + return data + + def __load_extractors(self, config: dict): + """Load extractors from extractor_pipe config.""" + # Load pre extractors + for pre_config in config.get('pre_extractor', []): + if pre_config.get('enable'): + pre_extractor = self.__create_extractor(pre_config) + self.__pre_extractors.append(pre_extractor) + + # Load main extractors + for ext_config in config.get('extractor', []): + if ext_config.get('enable'): + extractor = self.__create_extractor(ext_config) + self.__extractors.append(extractor) + + # Load post extractors + for post_config in config.get('post_extractor', []): + if post_config.get('enable'): + post_extractor = self.__create_extractor(post_config) + self.__post_extractors.append(post_extractor) + + def __create_extractor(self, config: dict) -> Union[AbstractPreExtractor, AbstractExtractor, AbstractPostExtractor]: + """Create extractor instance from config.""" + python_class = config.get('python_class') + if not python_class: + raise ExtractorChainConfigException( + 'python_class not specified in extractor config' + ) + + try: + kwargs = config.get('class_init_kwargs', {}) + return load_python_class_by_name(python_class, config, kwargs) + except ImportError: + raise ExtractorNotFoundException( + f'Extractor class not found: {python_class}' + ) + except Exception as e: + raise ExtractorInitException( + f'Failed to initialize extractor {python_class}: {str(e)}' + ) + + def __validate_extract_input(self, data_json: DataJson): + """校验一下配置里必须满足的条件,否则抛出异常. + + Args: + data_json (DataJson): _description_ + """ + self.__validate_input_data_format(data_json) + + def __validate_input_data_format(self, data_json): + """校验一下输入的data_json对象是否是DataJson对象,否则抛出异常.""" + if not isinstance(data_json, DataJson): + raise ExtractorChainInputException( + f'input data is not DataJson object, data type is {type(data_json)}' + ) + + +class ExtractSimpleFactory: + """Factory to create ExtractorChain instances.""" + + @staticmethod + def create(config: Union[str, dict]) -> ExtractorChain: + """Create ExtractorChain from config. + + Args: + config: Config dict or path to config file + + Returns: + ExtractorChain instance + """ + # Load config if file path provided + if isinstance(config, str): + with open(config) as f: + config = json.load(f) + + # Create and return chain + return ExtractorChain(config) diff --git a/llm_web_kit/pipeline/extractor/html/README.MD b/llm_web_kit/extractor/html/README.MD similarity index 98% rename from llm_web_kit/pipeline/extractor/html/README.MD rename to llm_web_kit/extractor/html/README.MD index dff332eb..1dbb8c38 100644 --- a/llm_web_kit/pipeline/extractor/html/README.MD +++ b/llm_web_kit/extractor/html/README.MD @@ -1,6 +1,6 @@ ## HTML解析流程 -![](../../../../docs/images/HTMLExtractor.png) +![](../../../docs/images/HTMLExtractor.png) https://aicarrier.feishu.cn/wiki/PyMEwtTguiPtALkb5XDcYH20nYd ## 各元素转换后的标准定义 diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/__init__.py b/llm_web_kit/extractor/html/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/__init__.py rename to llm_web_kit/extractor/html/__init__.py diff --git a/llm_web_kit/pipeline/extractor/html/extractor.py b/llm_web_kit/extractor/html/extractor.py similarity index 66% rename from llm_web_kit/pipeline/extractor/html/extractor.py rename to llm_web_kit/extractor/html/extractor.py index 98b63231..e28f088b 100644 --- a/llm_web_kit/pipeline/extractor/html/extractor.py +++ b/llm_web_kit/extractor/html/extractor.py @@ -2,34 +2,28 @@ from typing import List, Tuple import commentjson as json +from lxml.html import HtmlElement from overrides import override from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import HtmlFileExtractorException +from llm_web_kit.extractor.extractor import BaseFileFormatExtractor +from llm_web_kit.extractor.html.magic_html import GeneralExtractor +from llm_web_kit.extractor.html.recognizer.audio import AudioRecognizer +from llm_web_kit.extractor.html.recognizer.cccode import CodeRecognizer +from llm_web_kit.extractor.html.recognizer.ccmath import MathRecognizer +from llm_web_kit.extractor.html.recognizer.image import ImageRecognizer +from llm_web_kit.extractor.html.recognizer.list import ListRecognizer +from llm_web_kit.extractor.html.recognizer.recognizer import ( + BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.extractor.html.recognizer.table import TableRecognizer +from llm_web_kit.extractor.html.recognizer.text import TextParagraphRecognizer +from llm_web_kit.extractor.html.recognizer.title import TitleRecognizer +from llm_web_kit.extractor.html.recognizer.video import VideoRecognizer from llm_web_kit.input.datajson import ContentList, DataJson +from llm_web_kit.libs.doc_element_type import DocElementType from llm_web_kit.libs.html_utils import element_to_html, html_to_element -from llm_web_kit.libs.logger import mylogger from llm_web_kit.libs.path_lib import get_py_pkg_root_dir -from llm_web_kit.pipeline.extractor.extractor import BaseFileFormatExtractor -from llm_web_kit.pipeline.extractor.html.magic_html import GeneralExtractor -from llm_web_kit.pipeline.extractor.html.recognizer.audio import \ - AudioRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.cccode import \ - CodeRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.ccmath import \ - MathRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.image import \ - ImageRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.list import ListRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( - BaseHTMLElementRecognizer, CCTag) -from llm_web_kit.pipeline.extractor.html.recognizer.table import \ - TableRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.text import \ - TextParagraphRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.title import \ - TitleRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.video import \ - VideoRecognizer class HTMLPageLayoutType: @@ -99,19 +93,20 @@ def _do_extract(self, data_json: DataJson) -> DataJson: base_url:str = data_json['url'] page_layout_type:str = data_json.get('page_layout_type', HTMLPageLayoutType.LAYOUT_ARTICLE) # 默认是文章类型 - main_html, method = self._extract_main_html(raw_html, base_url, page_layout_type) - parsed_html = [(main_html,raw_html)] + main_html, method, title = self._extract_main_html(raw_html, base_url, page_layout_type) + main_html_element = html_to_element(main_html) + parsed_html = [(main_html_element, raw_html)] for extract_func in [self._extract_code, self._extract_table, self._extract_math, self._extract_list, self._extract_image, self._extract_title, self._extract_paragraph]: parsed_html = extract_func(base_url, parsed_html, raw_html) - content_list:ContentList = self._export_to_content_list(base_url, parsed_html, raw_html) data_json['content_list'] = content_list + data_json['title'] = title return data_json - def _extract_main_html(self, raw_html:str, base_url:str, page_layout_type:str) -> (str, str): + def _extract_main_html(self, raw_html:str, base_url:str, page_layout_type:str) -> Tuple[str, str, str]: """从html文本中提取主要的内容. Args: @@ -123,18 +118,16 @@ def _extract_main_html(self, raw_html:str, base_url:str, page_layout_type:str) - str1: 主要的内容 str2: 获得内容的方式,可对质量进行评估 """ - # TODO: 从html文本中提取主要的内容 dict_result = self.__magic_html_extractor.extract(raw_html, base_url=base_url, precision=False, html_type=page_layout_type) - return dict_result['html'], dict_result['xp_num'] + return dict_result['html'], dict_result['xp_num'], dict_result.get('title', '') - def _extract_code(self, base_url:str, html_lst:List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: + def _extract_code(self, base_url:str, html_lst:List[Tuple[HtmlElement, HtmlElement]], raw_html:str) -> List[Tuple[HtmlElement,HtmlElement]]: """从html文本中提取代码. Args: base_url (str): html文本的网页地址 html_lst (List[Tuple[str,str]]): html文本 raw_html (str): html文本 - Returns: """ @@ -253,7 +246,64 @@ def _extract_paragraph(self, base_url:str, html_lst:List[Tuple[str,str]], raw_ht lst = self.__paragraph_recognizer.recognize(base_url, html_lst, raw_html) return lst - def _export_to_content_list(self, base_url:str, html_lst:List[Tuple[str,str]], raw_html:str) -> ContentList: + def __is_valid_node(self, node: dict) -> bool: + """检查节点是否有效(不为空). + + Args: + node (dict): 内容节点 + + Returns: + bool: 如果节点有效返回True,否则返回False + """ + if not node: + raise HtmlFileExtractorException('node is empty') + node_type = node.get('type') + valid_types = {DocElementType.TITLE, DocElementType.LIST, DocElementType.CODE, DocElementType.EQUATION_INTERLINE, DocElementType.IMAGE, DocElementType.SIMPLE_TABLE, DocElementType.COMPLEX_TABLE, DocElementType.IMAGE, DocElementType.PARAGRAPH} + if node_type not in valid_types: + raise HtmlFileExtractorException(f'Invalid node type: {node_type}') + # 检查列表类型的节点 + if node.get('type') == DocElementType.LIST: + items = node.get('content', {}).get('items', []) + # 过滤掉None、空列表,以及只包含None或空值的列表 + return bool(items) and any( + isinstance(item, (dict, list)) and bool(item) + for item in items) + # 检测code类型的节点 + if node.get('type') == DocElementType.CODE: + code_content = node.get('content', {}).get('code_content') + # 如果代码内容为None或空字符串,则视为无效节点 + return bool(code_content and code_content.strip()) + # 检测行间公式类型的节点 + if node.get('type') == DocElementType.EQUATION_INTERLINE: + math_content = node.get('content', {}).get('math_content') + # 如果公式内容为None或空字符串,则视为无效节点 + return bool(math_content and math_content.strip()) + # 检测image类型的节点 + if node.get('type') == DocElementType.IMAGE: + content = node.get('content', {}) + # 检查url、path或data字段是否至少有一个不为空 + return bool(content.get('url') or content.get('path') or content.get('data')) + # 检测table类型的节点 + if node.get('type') == DocElementType.SIMPLE_TABLE or node.get('type') == DocElementType.COMPLEX_TABLE: + html = node.get('content', {}).get('html') + # 如果表格的html内容为None或空字符串,则视为无效节点 + return bool(html and html.strip()) + # 检测title类型的节点 + if node.get('type') == DocElementType.TITLE: + title_content = node.get('content', {}).get('title_content') + # 如果标题内容为None或空字符串,则视为无效节点 + return bool(title_content and title_content.strip()) + # 检测段落类型的节点 + if node.get('type') == DocElementType.PARAGRAPH: + content = node.get('content', []) + # 检查content列表是否存在且不为空,并且至少有一个非空的内容项 + return bool(content) and any( + item.get('c') and item.get('c').strip() + for item in content + ) + return True + + def _export_to_content_list(self, base_url:str, html_lst:List[Tuple[HtmlElement,HtmlElement]], raw_html:str) -> ContentList: """将解析结果存入content_list格式中. Args: @@ -270,17 +320,17 @@ def _export_to_content_list(self, base_url:str, html_lst:List[Tuple[str,str]], r ccnode_html, cc_tag = self.__get_cc_node(parsed_html) parser:BaseHTMLElementRecognizer = self.__to_content_list_mapper.get(cc_tag) if parser: - node = parser.to_content_list_node(base_url, ccnode_html, raw_html) - if node: + raw_html_str = element_to_html(raw_html) + # raw_html_str = raw_html + node = parser.to_content_list_node(base_url, ccnode_html, raw_html_str) + if node and self.__is_valid_node(node): one_page.append(node) else: - mylogger.warning(f'无法识别的html标签:{cc_tag}, {parsed_html}') - # TODO 开发成熟的时候,在这里抛出异常,让调用者记录下来,以便后续分析改进 - + raise HtmlFileExtractorException(f'无法识别的html标签:{cc_tag}, {parsed_html}') content_list = ContentList([one_page]) # 对于网页来说仅有一页,如果多页,则剩下的每个都是一个论坛的回复 return content_list - def __get_cc_node(self, html:str) -> (str, str): + def __get_cc_node(self, html:HtmlElement) -> (HtmlElement, str): """获取html文本的根标签名。只获取一个,如果html文本中包含多个cc标签,则抛异常。 Args: @@ -289,7 +339,8 @@ def __get_cc_node(self, html:str) -> (str, str): Returns: str: 根标签名 """ - el = html_to_element(html) + # el = html_to_element(html) + el = html if el.tag in self.__to_content_list_mapper.keys(): return html, el.tag else: @@ -297,10 +348,11 @@ def __get_cc_node(self, html:str) -> (str, str): xpath_expr = ' | '.join(f'self::{tag} | .//{tag}' for tag in self.__to_content_list_mapper.keys()) nodes = el.xpath(xpath_expr) if len(nodes) == 0: - raise ValueError(f'html文本中没有cc标签: {html}') # TODO 异常处理 - if len(nodes) > 1: - raise ValueError(f'html文本中包含多个cc标签: {html}') # TODO 异常处理 - return element_to_html(nodes[0]), nodes[0].tag + raise HtmlFileExtractorException(f'html文本中没有cc标签: {html}') + if len(nodes) > 3: + raise HtmlFileExtractorException(f'html文本中包含多个cc标签: {html}') + # return element_to_html(nodes[0]), nodes[0].tag + return nodes[0], nodes[0].tag def __build_extractor(self): """ @@ -323,7 +375,7 @@ def __get_build_in_rule(self) -> dict: """ pypkg_dir = get_py_pkg_root_dir() - rule_file_path = os.path.join(pypkg_dir, 'pipeline', 'extractor', 'html', 'magic_html', 'custome_rule.jsonc') + rule_file_path = os.path.join(pypkg_dir, 'extractor', 'html', 'magic_html', 'custome_rule.jsonc') with open(rule_file_path, 'r', encoding='utf-8') as f: return json.load(f) @@ -333,5 +385,5 @@ def __get_custom_rule(self) -> dict: Returns: """ - config = load_config() + config = load_config(suppress_error=True) return config.get('magic-html-custom-rule', {}) diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/__init__.py b/llm_web_kit/extractor/html/magic_html/__init__.py similarity index 85% rename from llm_web_kit/pipeline/extractor/html/magic_html/__init__.py rename to llm_web_kit/extractor/html/magic_html/__init__.py index 671dc146..efcbd9ec 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/__init__.py +++ b/llm_web_kit/extractor/html/magic_html/__init__.py @@ -1,12 +1,12 @@ from urllib.parse import urlparse -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.article_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.article_extractor import \ ArticleExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.custom_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.custom_extractor import \ CustomExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.forum_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.forum_extractor import \ ForumExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.weixin_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.weixin_extractor import \ WeixinExtractor diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/config.py b/llm_web_kit/extractor/html/magic_html/config.py similarity index 100% rename from llm_web_kit/pipeline/extractor/html/magic_html/config.py rename to llm_web_kit/extractor/html/magic_html/config.py diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/custome_rule.jsonc b/llm_web_kit/extractor/html/magic_html/custome_rule.jsonc similarity index 100% rename from llm_web_kit/pipeline/extractor/html/magic_html/custome_rule.jsonc rename to llm_web_kit/extractor/html/magic_html/custome_rule.jsonc diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/code/__init__.py b/llm_web_kit/extractor/html/magic_html/extractors/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/code/__init__.py rename to llm_web_kit/extractor/html/magic_html/extractors/__init__.py diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/article_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/article_extractor.py similarity index 86% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/article_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/article_extractor.py index 9b194f02..902bec42 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/article_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/article_extractor.py @@ -1,8 +1,8 @@ -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.base_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.base_extractor import \ BaseExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.title_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.title_extractor import \ TitleExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.utils import load_html +from llm_web_kit.extractor.html.magic_html.utils import load_html class ArticleExtractor(BaseExtractor): diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/base_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/base_extractor.py similarity index 98% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/base_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/base_extractor.py index 07d2c987..0be6c077 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/base_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/base_extractor.py @@ -6,14 +6,14 @@ from lxml.etree import Comment, _Element, strip_elements, strip_tags from lxml.html import Element, HtmlElement -from llm_web_kit.pipeline.extractor.html.magic_html.config import ( +from llm_web_kit.extractor.html.magic_html.config import ( BODY_XPATH, CONTENT_EXTRACTOR_NOISE_XPATHS, CUT_EMPTY_ELEMS, DISCARD_IMAGE_ELEMENTS, MANUALLY_CLEANED, MANUALLY_STRIPPED, OVERALL_DISCARD_XPATH, PAYWALL_DISCARD_XPATH, REMOVE_COMMENTS_XPATH, TEASER_DISCARD_XPATH, USELESS_ATTR, Forum_XPATH, Unique_ID) -from llm_web_kit.pipeline.extractor.html.magic_html.readability_plus import \ +from llm_web_kit.extractor.html.magic_html.readability_plus import \ Document as DocumentPlus -from llm_web_kit.pipeline.extractor.html.magic_html.utils import ( +from llm_web_kit.extractor.html.magic_html.utils import ( ancestor_node_check, density_of_a_text, img_div_check, iter_node, link_density_test, similarity_with_siblings, text_len, trim, uniquify_list) diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/custom_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/custom_extractor.py similarity index 86% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/custom_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/custom_extractor.py index 86b8dda2..3ac63576 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/custom_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/custom_extractor.py @@ -1,11 +1,10 @@ from lxml.html import HtmlElement -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.base_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.base_extractor import \ BaseExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.title_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.title_extractor import \ TitleExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.utils import (_tostring, - load_html) +from llm_web_kit.extractor.html.magic_html.utils import _tostring, load_html class CustomExtractor(BaseExtractor): diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/forum_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/forum_extractor.py similarity index 90% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/forum_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/forum_extractor.py index c5144124..99f8a74e 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/forum_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/forum_extractor.py @@ -2,14 +2,12 @@ from lxml.html import Element, fromstring -from llm_web_kit.pipeline.extractor.html.magic_html.config import (Forum_XPATH, - Unique_ID) -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.base_extractor import \ +from llm_web_kit.extractor.html.magic_html.config import Forum_XPATH, Unique_ID +from llm_web_kit.extractor.html.magic_html.extractors.base_extractor import \ BaseExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.title_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.title_extractor import \ TitleExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.utils import (_tostring, - load_html) +from llm_web_kit.extractor.html.magic_html.utils import _tostring, load_html class ForumExtractor(BaseExtractor): diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/title_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/title_extractor.py similarity index 89% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/title_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/title_extractor.py index ee50888d..f47480df 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/title_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/title_extractor.py @@ -1,8 +1,7 @@ from lxml.html import HtmlElement -from llm_web_kit.pipeline.extractor.html.magic_html.config import METAS -from llm_web_kit.pipeline.extractor.html.magic_html.utils import (lcs_of_2, - similarity2) +from llm_web_kit.extractor.html.magic_html.config import METAS +from llm_web_kit.extractor.html.magic_html.utils import lcs_of_2, similarity2 class TitleExtractor: diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/weixin_extractor.py b/llm_web_kit/extractor/html/magic_html/extractors/weixin_extractor.py similarity index 91% rename from llm_web_kit/pipeline/extractor/html/magic_html/extractors/weixin_extractor.py rename to llm_web_kit/extractor/html/magic_html/extractors/weixin_extractor.py index 089a87fa..984a731f 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/extractors/weixin_extractor.py +++ b/llm_web_kit/extractor/html/magic_html/extractors/weixin_extractor.py @@ -1,11 +1,10 @@ import re -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.base_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.base_extractor import \ BaseExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.extractors.title_extractor import \ +from llm_web_kit.extractor.html.magic_html.extractors.title_extractor import \ TitleExtractor -from llm_web_kit.pipeline.extractor.html.magic_html.utils import (_tostring, - load_html) +from llm_web_kit.extractor.html.magic_html.utils import _tostring, load_html class WeixinExtractor(BaseExtractor): diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/readability_plus.py b/llm_web_kit/extractor/html/magic_html/readability_plus.py similarity index 98% rename from llm_web_kit/pipeline/extractor/html/magic_html/readability_plus.py rename to llm_web_kit/extractor/html/magic_html/readability_plus.py index 9ac55a85..6a1fd85a 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/readability_plus.py +++ b/llm_web_kit/extractor/html/magic_html/readability_plus.py @@ -4,9 +4,10 @@ from lxml.html import HtmlElement, fragment_fromstring -from llm_web_kit.pipeline.extractor.html.magic_html.config import Unique_ID -from llm_web_kit.pipeline.extractor.html.magic_html.utils import ( - _tostring, ancestor_node_check, text_len, trim) +from llm_web_kit.extractor.html.magic_html.config import Unique_ID +from llm_web_kit.extractor.html.magic_html.utils import (_tostring, + ancestor_node_check, + text_len, trim) DOT_SPACE = re.compile(r'\.( |$)') diff --git a/llm_web_kit/pipeline/extractor/html/magic_html/utils.py b/llm_web_kit/extractor/html/magic_html/utils.py similarity index 98% rename from llm_web_kit/pipeline/extractor/html/magic_html/utils.py rename to llm_web_kit/extractor/html/magic_html/utils.py index ce81012f..7a4f3b82 100644 --- a/llm_web_kit/pipeline/extractor/html/magic_html/utils.py +++ b/llm_web_kit/extractor/html/magic_html/utils.py @@ -4,7 +4,7 @@ import numpy as np from lxml.html import HtmlElement, HTMLParser, fromstring, tostring -from llm_web_kit.pipeline.extractor.html.magic_html.config import Unique_ID +from llm_web_kit.extractor.html.magic_html.config import Unique_ID HTML_PARSER = HTMLParser( collect_ids=False, diff --git a/llm_web_kit/pipeline/extractor/html/post_extractor.py b/llm_web_kit/extractor/html/post_extractor.py similarity index 96% rename from llm_web_kit/pipeline/extractor/html/post_extractor.py rename to llm_web_kit/extractor/html/post_extractor.py index ebb4b309..944d932a 100644 --- a/llm_web_kit/pipeline/extractor/html/post_extractor.py +++ b/llm_web_kit/extractor/html/post_extractor.py @@ -1,11 +1,10 @@ from overrides import override +from llm_web_kit.extractor.post_extractor import BaseFileFormatPostExtractor from llm_web_kit.input.datajson import DataJson, DataJsonKey from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType from llm_web_kit.libs.statics import Statics from llm_web_kit.libs.text_utils import normalize_text_segment -from llm_web_kit.pipeline.extractor.post_extractor import \ - BaseFileFormatPostExtractor class HTMLFileFormatPostExtractor(BaseFileFormatPostExtractor): @@ -94,7 +93,7 @@ def __do_normalize_text(self, paragraph: list[dict]) -> list[dict]: for segment in paragraph: text = segment['c'] text_type = segment['t'] - if text_type == ParagraphTextType.TEXT: + if text_type not in [ParagraphTextType.CODE_INLINE]: # skip code segment['c'] = normalize_text_segment(text) return paragraph diff --git a/llm_web_kit/pipeline/extractor/html/pre_extractor.py b/llm_web_kit/extractor/html/pre_extractor.py similarity index 69% rename from llm_web_kit/pipeline/extractor/html/pre_extractor.py rename to llm_web_kit/extractor/html/pre_extractor.py index 67105b87..a9323a9d 100644 --- a/llm_web_kit/pipeline/extractor/html/pre_extractor.py +++ b/llm_web_kit/extractor/html/pre_extractor.py @@ -2,11 +2,13 @@ from overrides import override +from llm_web_kit.extractor.config import INVISIBLE_TAGS +from llm_web_kit.extractor.pre_extractor import \ + BaseFileFormatFilterPreExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.libs.html_utils import html_to_element +from llm_web_kit.libs.html_utils import (element_to_html, html_to_element, + remove_element) from llm_web_kit.libs.path_lib import get_proj_root_dir -from llm_web_kit.pipeline.extractor.pre_extractor import \ - BaseFileFormatFilterPreExtractor class HTMLFileFormatFilterPreExtractor(BaseFileFormatFilterPreExtractor): @@ -83,3 +85,29 @@ def _do_pre_extract(self, data_json: DataJson) -> DataJson: data_json['html'] = html del data_json['path'] return data_json + + +class HTMLFileFormatCleanTagsPreExtractor(HTMLFileFormatFilterPreExtractor): + """清理html中隐藏标签.""" + + def __init__(self, config: dict): + super().__init__(config) + + @override + def _do_pre_extract(self, data_json: DataJson) -> DataJson: + data_json['html'] = self.__clean_invisible_elements(data_json) + return data_json + + def __clean_invisible_elements(self, data_json: DataJson) -> str: + """清理隐藏标签.""" + html_content = data_json['html'] + tree = html_to_element(html_content) + # 遍历所有配置的隐藏标签规则 + for tag in INVISIBLE_TAGS: + # 如果url是通配符*或者匹配当前url + if tag['url'] == '*' or (data_json['url'] and tag['url'] in data_json['url']): + # 查找所有匹配xpath的节点 + elements = tree.xpath(tag['tag']) + for element in elements: + remove_element(element) + return element_to_html(tree) diff --git a/llm_web_kit/pipeline/formatter/__init__.py b/llm_web_kit/extractor/html/recognizer/__init__.py similarity index 100% rename from llm_web_kit/pipeline/formatter/__init__.py rename to llm_web_kit/extractor/html/recognizer/__init__.py diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/audio.py b/llm_web_kit/extractor/html/recognizer/audio.py similarity index 61% rename from llm_web_kit/pipeline/extractor/html/recognizer/audio.py rename to llm_web_kit/extractor/html/recognizer/audio.py index 2a05d555..f9e74a7b 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/audio.py +++ b/llm_web_kit/extractor/html/recognizer/audio.py @@ -1,15 +1,16 @@ from typing import List, Tuple +from lxml.html import HtmlElement from overrides import override -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import \ +from llm_web_kit.extractor.html.recognizer.recognizer import \ BaseHTMLElementRecognizer class AudioRecognizer(BaseHTMLElementRecognizer): """解析音频元素.""" @override - def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: + def recognize(self, base_url:str, main_html_lst: List[Tuple[HtmlElement,HtmlElement]], raw_html:str) -> List[Tuple[HtmlElement,HtmlElement]]: """父类,解析音频元素. Args: @@ -22,5 +23,15 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: raise NotImplementedError @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: + """ + 把音频元素转换为content list node. + Args: + base_url: + parsed_content: + raw_html_segment: + + Returns: + + """ raise NotImplementedError diff --git a/llm_web_kit/pipeline/formatter/html/__init__.py b/llm_web_kit/extractor/html/recognizer/cc_math/__init__.py similarity index 100% rename from llm_web_kit/pipeline/formatter/html/__init__.py rename to llm_web_kit/extractor/html/recognizer/cc_math/__init__.py diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/common.py b/llm_web_kit/extractor/html/recognizer/cc_math/common.py similarity index 69% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/common.py rename to llm_web_kit/extractor/html/recognizer/cc_math/common.py index f7e38c23..08d3f9e2 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/common.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/common.py @@ -7,11 +7,11 @@ from lxml.html import HtmlElement from py_asciimath.translator.translator import ASCIIMath2Tex +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag from llm_web_kit.libs.doc_element_type import DocElementType from llm_web_kit.libs.html_utils import (build_cc_element, element_to_html, element_to_html_unescaped, html_to_element) -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag asciimath2tex = ASCIIMath2Tex(log=False) color_regex = re.compile(r'\\textcolor\[.*?\]\{.*?\}') @@ -50,6 +50,7 @@ # ccmath标签,区分行内行间公式 CCMATH_INTERLINE = CCTag.CC_MATH_INTERLINE CCMATH_INLINE = CCTag.CC_MATH_INLINE +CCMATH_HANDLE_FAILED = 'ccmath-failed' # 数学标记语言 @@ -60,12 +61,6 @@ class MathType: HTMLMATH = 'htmlmath' # sub, sup, etc. -# 数学公式渲染器 -class MathRender: - MATHJAX = 'mathjax' - KATEX = 'katex' - - # node.text匹配结果: class MathMatchRes: ALLMATCH = 'all_match' @@ -84,20 +79,30 @@ class MATH_TYPE_PATTERN: latex_config = { MATH_TYPE_PATTERN.INLINEMATH: [ ['$', '$'], - ['\\(', '\\)'] + ['\\(', '\\)'], + ['[itex]', '[/itex]'], # 这个网站自定义的分割,https://www.physicsforums.com/threads/turning-to-a-single-logarithm-then-simply.269419/ ], MATH_TYPE_PATTERN.DISPLAYMATH: [ ['\\[', '\\]'], ['$$', '$$'], - ['\\begin{equation}', '\\end{equation}'], - ['\\begin{align}', '\\end{align}'], - ['\\begin{alignat}', '\\end{alignat}'], - ['\\begin{array}', '\\end{array}'], + ['[tex]', '[/tex]'], # 这个网站自定义的分割,https://www.physicsforums.com/threads/turning-to-a-single-logarithm-then-simply.269419/ + # ['\\begin{equation}', '\\end{equation}'], + # ['\\begin{align}', '\\end{align}'], + # ['\\begin{alignat}', '\\end{alignat}'], + # ['\\begin{array}', '\\end{array}'], # 添加通用的begin/end匹配 ['\\begin{.*?}', '\\end{.*?}'], ], } +# 兼容一些网站有错误的公式起始结尾 +MATH_MD_CUSTOM_CONFIG = { + 'mathhelpforum.com': [ + ['
                                                                                  ', '\\
                                                                                  '], # 使用双反斜杠 + ['
                                                                                  ', '
                                                                                  '], + ], +} + asciiMath_config = { MATH_TYPE_PATTERN.INLINEMATH: [ [r'`', r'`'], @@ -126,6 +131,10 @@ def text_strip(text): class CCMATH(): + def __init__(self): + self.url = '' + + # end def def wrap_math(self, s, display=False): """根据行间行内公式加上$$或$""" s = re.sub(r'\s+', ' ', s) @@ -144,17 +153,31 @@ def wrap_math(self, s, display=False): def wrap_math_md(self, s): """去掉latex公式头尾的$$或$或\\(\\)或\\[\\]""" + if not s: + return s s = s.strip() if s.startswith('$$') and s.endswith('$$'): - return s.replace('$$', '') + return s.replace('$$', '').strip() if s.startswith('$') and s.endswith('$'): - return s.replace('$', '') + return s.replace('$', '').strip() if s.startswith('\\(') and s.endswith('\\)'): - return s.replace('\\(', '').replace('\\)', '') + return s.replace('\\(', '').replace('\\)', '').strip() if s.startswith('\\[') and s.endswith('\\]'): - return s.replace('\\[', '').replace('\\]', '') + return s.replace('\\[', '').replace('\\]', '').strip() if s.startswith('`') and s.endswith('`'): - return s.replace('`', '') + return s.replace('`', '').strip() + s = self.wrap_math_md_custom(s) + return s.strip() + + # 循环MATH_MD_CUSTOM_CONFIG,如果url匹配,则去掉特殊网站的公式奇怪的起始结尾 + def wrap_math_md_custom(self, s): + """去掉特殊网站的公式奇怪的起始结尾.""" + for url, config in MATH_MD_CUSTOM_CONFIG.items(): + if url in self.url: + for start, end in config: + if s.startswith(start) and s.endswith(end): + # 去除 start 和 end + s = s[len(start):-len(end)] return s def wrap_math_space(self, s): @@ -166,31 +189,6 @@ def extract_asciimath(self, s: str) -> str: parsed = asciimath2tex.translate(s) return parsed - def get_math_render(self, html: str) -> str: - """获取数学公式渲染器. - 示例: - MathJax: - - Katex: - - """ - tree = html_to_element(html) - if tree is None: - return None - # 检查 KaTeX - for link in tree.iter('link'): - if link.get('href') and 'katex' in link.get('href', '').lower(): - return MathRender.KATEX - # 查找head标签 - # head = tree.find('head') - # if head is not None: - # 检查 MathJax - for script in tree.iter('script'): - src = script.get('src', '').lower() - if src and ('mathjax' in src or 'asciimath' in src): - return MathRender.MATHJAX - return None - def get_equation_type(self, html: str) -> List[Tuple[str, str]]: """根据latex_config判断数学公式是行内还是行间公式. @@ -206,6 +204,7 @@ def get_equation_type(self, html: str) -> List[Tuple[str, str]]: >>> get_equation_type("这是行间公式 $$y=mx+b$$ 测试") ('equation-interline', 'latex') """ + def check_delimiters(delims_list, s): for start, end in delims_list: escaped_start = re.escape(start) @@ -215,8 +214,8 @@ def check_delimiters(delims_list, s): escaped_end = re.escape(end) if end == '$': escaped_end = r'(?]*>.*?', '', mml_ns, flags=re.DOTALL) + mml_ns = self.fix_mathml_superscript(mml_ns) mml_dom = etree.fromstring(mml_ns) mmldom = transform(mml_dom) latex_code = str(mmldom) return latex_code + def fix_mathml_superscript(self, mathml_str): + # 解析输入的MathML字符串 + root = etree.fromstring(mathml_str) + namespace = {'m': 'http://www.w3.org/1998/Math/MathML'} + mathml_ns = namespace['m'] + for msup in root.xpath('//m:msup', namespaces=namespace): + if len(msup) < 1: + continue + base = msup[0] + if base.tag != f'{{{mathml_ns}}}mo' or base.text != ')': + continue + parent = msup.getparent() + if parent is None: + continue + siblings = list(parent) + msup_index = siblings.index(msup) + left_paren = None + for i in range(msup_index - 1, -1, -1): + node = siblings[i] + if node.tag == f'{{{mathml_ns}}}mo' and node.text == '(': + left_paren = i + break + if left_paren is None: + continue + content_nodes = siblings[left_paren:msup_index] + mrow = etree.Element(f'{{{mathml_ns}}}mrow') + for node in content_nodes: + parent.remove(node) + mrow.append(node) + new_msup = etree.Element(f'{{{mathml_ns}}}msup') + new_msup.append(mrow) + if len(msup) >= 2: + new_msup.extend(msup[1:]) + mrow.append(base) + parent.insert(left_paren, new_msup) + parent.remove(msup) + + return etree.tostring(root, encoding='unicode', pretty_print=True) + def replace_math(self, new_tag: str, math_type: str, math_render: str, node: HtmlElement, func, asciimath_wrap: bool = False) -> HtmlElement: # pattern re数学公式匹配 func 公式预处理 默认不处理 - def replacement(match_text): + pattern_type = MATH_TYPE_PATTERN.DISPLAYMATH if new_tag == CCMATH_INTERLINE else MATH_TYPE_PATTERN.INLINEMATH + original_text = node.text or '' + + def is_ccmath_wrapped(match_text, original_text: str) -> bool: + if not match_text or not original_text: + return False + start_idx = match_text.start() + end_idx = match_text.end() + before_match = original_text[:start_idx].strip() + after_match = original_text[end_idx:].strip() + if 'ccmath' in before_match and 'ccmath' in after_match: + return True + if pattern_type == MATH_TYPE_PATTERN.DISPLAYMATH: + for start, end in MATH_TYPE_TO_DISPLAY[MathType.LATEX][MATH_TYPE_PATTERN.INLINEMATH]: + if start in before_match and end in after_match: + return True + return False + + def process(match_text): try: match = match_text.group(0) + if is_ccmath_wrapped(match_text, original_text): + return match math_text = self.extract_asciimath(match.strip('`').replace('\\','')) if asciimath_wrap else match wrapped_text = func(math_text) if func else math_text wrapped_text = self.wrap_math_md(wrapped_text) + if not wrapped_text: + return match new_span = build_cc_element( html_tag_name=new_tag, text=wrapped_text, @@ -326,31 +388,28 @@ def replacement(match_text): html=wrapped_text ) except Exception: - return '' + return match return element_to_html(new_span) try: - pattern_type = MATH_TYPE_PATTERN.DISPLAYMATH if new_tag == CCMATH_INTERLINE else MATH_TYPE_PATTERN.INLINEMATH - original_text = node.text or '' for start, end in MATH_TYPE_TO_DISPLAY[math_type][pattern_type]: - pattern = f'{re.escape(start)}.*?{re.escape(end)}' + pattern = f'{re.escape(start)}.*?{re.escape(end)}'.replace(r'\.\*\?', '.*?') regex = re.compile(pattern, re.DOTALL) - if re.search(regex, original_text): - original_text = re.sub(regex, replacement, original_text) - break - node.text = original_text + original_text = re.sub(regex, process, original_text) except Exception: - return self.build_cc_exception_tag() + node.text = self.build_cc_exception_tag(original_text, math_type, math_render) + return node + node.text = original_text return html_to_element(element_to_html_unescaped(node)) - def build_cc_exception_tag(self): - return build_cc_element( - html_tag_name='cc-failed', - text='xxxx', + def build_cc_exception_tag(self, text, math_type, math_render) -> str: + return element_to_html(build_cc_element( + html_tag_name=CCMATH_HANDLE_FAILED, + text=text, tail='', - type='ccmath-failed', - by='ccmath', - html='ccmath-failed' - ) + type=math_type, + by=math_render, + html=text + )) if __name__ == '__main__': @@ -359,6 +418,9 @@ def build_cc_exception_tag(self): print(cm.get_equation_type('a0')) print(cm.get_equation_type('a0')) print(cm.get_equation_type('

                                                                                  这是p的text

                                                                                  ')) + # print(cm.get_equation_type(r'

                                                                                  [tex]\frac{1}{4} Log(x-1)=Log((x-1)^{1\over{4}})= Log(\sqrt[4]{x-1})[/tex]

                                                                                  ')) + # print(cm.get_equation_type(r'

                                                                                  abc [itex]x^2[/itex] abc

                                                                                  ')) + # print(cm.get_equation_type(r'

                                                                                  abc [itex]x^2 abc

                                                                                  ')) print(cm.get_equation_type(r'

                                                                                  \begin{align} a^2+b=c\end{align}

                                                                                  ')) print(cm.get_equation_type(r'

                                                                                  \begin{abc} a^2+b=c\end{abc}

                                                                                  ')) print(cm.wrap_math(r'{\displaystyle \operatorname {Var} (X)=\operatorname {E} \left[(X-\mu)^{2}\right].}')) @@ -373,3 +435,6 @@ def build_cc_exception_tag(self): print(cm.replace_math('ccmath-interline','asciimath','',html_to_element(r'

                                                                                  `(x+1)/x^2``1/3245`

                                                                                  '),None,True)) print(cm.replace_math('ccmath-interline','latex','',html_to_element(r'

                                                                                  start $$f(a,b,c) = (a^2+b^2+c^2)^3$$end

                                                                                  '),None,False)) print(cm.replace_math('ccmath-inline','latex','',html_to_element(r'

                                                                                  \( \newcommand{\norm}[1]{\| #1 \|}\)

                                                                                  '),None,False)) + # cm.url = 'mathhelpforum.com' + # print(cm.wrap_math_md_custom(r'
                                                                                  \begin{align} a^2+b=c\end{align}\
                                                                                  ')) + # print(cm.wrap_math_md_custom(r'
                                                                                  dz=\frac{1}{2}\frac{dx}{\cos ^2 x}
                                                                                  ')) diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/README b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/README similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/README rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/README diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/cmarkup.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/cmarkup.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/cmarkup.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/cmarkup.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/entities.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/entities.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/entities.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/entities.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/glayout.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/glayout.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/glayout.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/glayout.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/mmltex.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/mmltex.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/mmltex.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/mmltex.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/scripts.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/scripts.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/scripts.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/scripts.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/tables.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/tables.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/tables.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/tables.xsl diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/tokens.xsl b/llm_web_kit/extractor/html/recognizer/cc_math/mmltex/tokens.xsl similarity index 100% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/mmltex/tokens.xsl rename to llm_web_kit/extractor/html/recognizer/cc_math/mmltex/tokens.xsl diff --git a/llm_web_kit/extractor/html/recognizer/cc_math/render/__init__.py b/llm_web_kit/extractor/html/recognizer/cc_math/render/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/llm_web_kit/extractor/html/recognizer/cc_math/render/katex.py b/llm_web_kit/extractor/html/recognizer/cc_math/render/katex.py new file mode 100644 index 00000000..0dc6049a --- /dev/null +++ b/llm_web_kit/extractor/html/recognizer/cc_math/render/katex.py @@ -0,0 +1,178 @@ +import re +from typing import Any, Dict, List + +from llm_web_kit.extractor.html.recognizer.cc_math.render.render import ( + BaseMathRender, MathRenderType) +from llm_web_kit.libs.html_utils import HtmlElement, html_to_element + + +class KaTeXRender(BaseMathRender): + """KaTeX渲染器实现.""" + + def __init__(self): + """初始化KaTeX渲染器.""" + super().__init__() + self.render_type = MathRenderType.KATEX + self.options = { + 'auto_render': False, + 'display_mode': False, + 'throw_on_error': True, + 'error_color': '#cc0000', + 'version': '', + 'delimiters': [] + } + + def get_render_type(self) -> str: + """获取渲染器类型.""" + return self.render_type + + def get_options(self, html: str) -> Dict[str, Any]: + """从HTML中提取KaTeX选项. + + Args: + html: 包含KaTeX配置的HTML字符串 + + Returns: + Dict[str, Any]: KaTeX选项字典 + """ + tree = html_to_element(html) + if tree is None: + return self.options + + # 查找KaTeX样式表,提取版本 + for link in tree.iter('link'): + href = link.get('href', '') + if 'katex' in href.lower(): + version_pattern = r'katex@(\d+\.\d+\.\d+)' + version_match = re.search(version_pattern, href, re.IGNORECASE) + if version_match: + self.options['version'] = version_match.group(1) + + # 查找KaTeX配置脚本 + for script in tree.iter('script'): + script_text = script.text or '' + if 'renderMathInElement' in script_text: + self._parse_katex_config(script_text) + + return self.options + + def _parse_katex_config(self, config_text: str) -> None: + """解析KaTeX配置脚本. + + Args: + config_text: KaTeX配置脚本内容 + """ + if not config_text: + return + + # 检查自动渲染 + if 'renderMathInElement' in config_text: + self.options['auto_render'] = True + + # 提取显示模式 + display_pattern = r'displayMode\s*:\s*(true|false)' + display_match = re.search(display_pattern, config_text, re.IGNORECASE) + if display_match: + self.options['display_mode'] = display_match.group(1).lower() == 'true' + + # 提取错误处理选项 + throw_pattern = r'throwOnError\s*:\s*(true|false)' + throw_on_error_match = re.search(throw_pattern, config_text, re.IGNORECASE) + if throw_on_error_match: + self.options['throw_on_error'] = ( + throw_on_error_match.group(1).lower() == 'true' + ) + + # 提取错误颜色 + error_pattern = r'errorColor\s*:\s*[\'"](.+?)[\'"]' + error_color_match = re.search(error_pattern, config_text) + if error_color_match: + self.options['error_color'] = error_color_match.group(1) + + # 提取分隔符 + delimiters_pattern = r'delimiters\s*:\s*\[(.*?)\]' + delimiters_match = re.search(delimiters_pattern, config_text, re.DOTALL) + if delimiters_match: + delimiters_str = delimiters_match.group(1) + self.options['delimiters'] = self._parse_delimiters(delimiters_str) + + def _parse_delimiters(self, delimiters_str: str) -> List[Dict[str, str]]: + """解析KaTeX分隔符配置. + + Args: + delimiters_str: 分隔符配置字符串 + + Returns: + List[Dict[str, str]]: 分隔符配置列表 + """ + delimiters = [] + # 匹配 {left: 'x', right: 'y', display: true/false} 形式的配置 + pattern = ( + r'\{\s*left\s*:\s*[\'"](.+?)[\'"]\s*,' + r'\s*right\s*:\s*[\'"](.+?)[\'"]\s*' + r'(?:,\s*display\s*:\s*(true|false))?\s*\}' + ) + for match in re.finditer(pattern, delimiters_str): + left, right, display = match.groups() + delimiter = { + 'left': left.replace('\\\\', '\\'), + 'right': right.replace('\\\\', '\\') + } + if display: + delimiter['display'] = display.lower() == 'true' + delimiters.append(delimiter) + return delimiters + + def is_customized_options(self) -> bool: + """是否与默认配置不同.""" + return False + + def find_math(self, root: HtmlElement) -> None: + """查找KaTeX格式的数学公式,并创建相应的数学公式节点. + + Args: + root: HTML根节点 + """ + raise NotImplementedError('KaTeXRender.find_math is not implemented') + + +# if __name__ == '__main__': +# # KaTeX示例 +# katex_html = ''' +# +# +# +# +# +# +# +# +#

                                                                                  Inline math: $E=mc^2$

                                                                                  +#

                                                                                  Display math: $$F = G\\frac{m_1 m_2}{r^2}$$

                                                                                  +# +# +# ''' +# print('\nTesting KaTeX detection:') +# katex_tree = html_to_element(katex_html) +# render_type = BaseMathRender.detect_render_type(katex_tree) +# print(f'Detected render type: {render_type}') + +# render = BaseMathRender.create_render(katex_tree) +# if render: +# options = render.get_options(katex_tree) +# print(f'KaTeX options: {options}') +# else: +# print('No renderer detected') diff --git a/llm_web_kit/extractor/html/recognizer/cc_math/render/mathjax.py b/llm_web_kit/extractor/html/recognizer/cc_math/render/mathjax.py new file mode 100644 index 00000000..1d91578a --- /dev/null +++ b/llm_web_kit/extractor/html/recognizer/cc_math/render/mathjax.py @@ -0,0 +1,578 @@ +import re +from typing import Any, Dict, List + +from llm_web_kit.extractor.html.recognizer.cc_math.render.render import ( + BaseMathRender, MathRenderType) +from llm_web_kit.libs.html_utils import HtmlElement, html_to_element + +# 添加MATHJAX_OPTIONS变量定义 +MATHJAX_OPTIONS = { + 'inlineMath': [['$', '$'], ['\\(', '\\)'], ['\\\\(', '\\\\)']], + 'displayMath': [['$$', '$$'], ['\\[', '\\]'], ['\\\\[', '\\\\]']], + 'processEscapes': True, + 'processEnvironments': True, + 'processRefs': True, + 'skipTags': ['script', 'noscript', 'style', 'textarea', 'pre', 'code'], + 'ignoreClass': 'tex2jax_ignore', + 'processClass': 'tex2jax_process', + 'elements': ['body'] +} + + +class MathJaxRender(BaseMathRender): + """MathJax渲染器实现.""" + + def __init__(self): + """初始化MathJax渲染器.""" + super().__init__() + self.render_type = MathRenderType.MATHJAX + self.options = { + 'inlineMath': [], + 'displayMath': [], + 'extensions': [], + 'config': '', + 'version': '' + } + + def get_render_type(self) -> str: + """获取渲染器类型.""" + return self.render_type + + def get_options(self, html: str) -> Dict[str, Any]: + """从HTML中提取MathJax选项. + + Args: + html: 包含MathJax配置的HTML字符串 + + Returns: + Dict[str, Any]: MathJax选项字典 + """ + tree = html_to_element(html) + if tree is None: + return self.options + + # 查找MathJax配置脚本 + for script in tree.iter('script'): + if script.get('type') == 'text/x-mathjax-config': + self._parse_mathjax_config(script.text) + + # 检查MathJax版本 + src = script.get('src', '') + if 'mathjax' in src.lower(): + self._parse_mathjax_version(src) + + # 检查配置参数 + if '?' in src: + config_part = src.split('?', 1)[1] + if 'config=' in config_part: + config = re.search(r'config=([^&]+)', config_part) + if config: + self.options['config'] = config.group(1) + return self.options + + def _parse_mathjax_config(self, config_text: str) -> None: + """解析MathJax配置脚本. + + Args: + config_text: MathJax配置脚本内容 + """ + if not config_text: + return + + # 提取行内公式分隔符 + inline_pattern = ( + r'inlineMath:\s*\[' + r'\s*(\[.*?\](?:\s*,\s*\[.*?\])*)\s*\]' + ) + inline_match = re.search(inline_pattern, config_text, re.DOTALL) + if inline_match: + delimiters_str = inline_match.group(1) + self.options['inlineMath'] = self._parse_delimiters(delimiters_str) + + # 提取行间公式分隔符 + display_pattern = ( + r'displayMath:\s*\[' + r'\s*(\[.*?\](?:\s*,\s*\[.*?\])*)\s*\]' + ) + display_match = re.search(display_pattern, config_text, re.DOTALL) + if display_match: + delimiters_str = display_match.group(1) + self.options['displayMath'] = self._parse_delimiters(delimiters_str) + + # 提取扩展 + extensions_pattern = ( + r'extensions:\s*\[' + r'\s*([\'"].*?[\'"](?:\s*,\s*[\'"].*?[\'"])*)\s*\]' + ) + extensions_match = re.search(extensions_pattern, config_text, re.DOTALL) + if extensions_match: + extensions_str = extensions_match.group(1) + self.options['extensions'] = [ + ext.strip('\'"') + for ext in re.findall(r'[\'"].*?[\'"]', extensions_str) + ] + + def _parse_mathjax_version(self, src: str) -> None: + """解析MathJax版本. + + Args: + src: MathJax脚本的src属性 + """ + version_match = re.search(r'mathjax/(\d+\.\d+\.\d+)', src, re.IGNORECASE) + if version_match: + self.options['version'] = version_match.group(1) + elif 'latest.js' in src: + self.options['version'] = 'latest' + + def _parse_delimiters(self, delimiters_str: str) -> List[List[str]]: + """解析分隔符字符串. + + Args: + delimiters_str: 分隔符字符串,如 "['$', '$'], ['\\\\(', '\\\\)']" + + Returns: + List[List[str]]: 分隔符列表 + """ + delimiters = [] + # 匹配 ['x', 'y'] 形式的分隔符对 + pattern = r"\[\s*[\"'](.+?)[\"']\s*,\s*[\"'](.+?)[\"']\s*\]" + for match in re.finditer(pattern, delimiters_str): + start, end = match.groups() + # 处理转义字符 + start = start.replace('\\\\', '\\') + end = end.replace('\\\\', '\\') + delimiters.append([start, end]) + return delimiters + + def _is_list_contained(self, list1: List[List[str]], list2: List[List[str]]) -> bool: + """判断list1中的元素是否都被list2包含. + + Args: + list1: 第一个列表 + list2: 第二个列表 + + Returns: + bool: 如果list1中的所有元素都被list2包含,则返回True,否则返回False + """ + if not list1: + return True + + # 将list2转换为集合,方便查找 + list2_set = {tuple(item) for item in list2} + + # 检查list1中的每个元素是否都在list2中 + for item in list1: + if tuple(item) not in list2_set: + return False + + return True + + def is_customized_options(self) -> bool: + """是否与默认配置不同.""" + # 如果options中inlineMath和displayMath为空,则认为没有自定义配置 + if self.options.get('inlineMath') == [] and self.options.get('displayMath') == []: + return False + + # 检查inlineMath是否被默认配置包含 + if not self._is_list_contained( + self.options.get('inlineMath', []), + MATHJAX_OPTIONS['inlineMath'] + ): + self.render_type = MathRenderType.MATHJAX_CUSTOMIZED + return True + + # 检查displayMath是否被默认配置包含 + if not self._is_list_contained( + self.options.get('displayMath', []), + MATHJAX_OPTIONS['displayMath'] + ): + self.render_type = MathRenderType.MATHJAX_CUSTOMIZED + return True + + return False + + def find_math(self, root: HtmlElement) -> None: + """查找MathJax格式的数学公式,并创建相应的数学公式节点. + + Args: + root: HTML根节点 + """ + # 获取行内和行间公式分隔符 + inline_delimiters = self.options.get('inlineMath', []) + if not inline_delimiters: + # 使用默认分隔符 + inline_delimiters = MATHJAX_OPTIONS.get( + 'inlineMath', [['$', '$'], ['\\(', '\\)']] + ) + + display_delimiters = self.options.get('displayMath', []) + if not display_delimiters: + # 使用默认分隔符 + display_delimiters = MATHJAX_OPTIONS.get( + 'displayMath', [['$$', '$$'], ['\\[', '\\]']] + ) + + # 预编译正则表达式模式以提高性能 + inline_patterns = [] + for start, end in inline_delimiters: + start_escaped = re.escape(start) + end_escaped = re.escape(end) + pattern = f'{start_escaped}(.*?){end_escaped}' + inline_patterns.append(pattern) + + display_patterns = [] + for start, end in display_delimiters: + start_escaped = re.escape(start) + end_escaped = re.escape(end) + pattern = f'{start_escaped}(.*?){end_escaped}' + display_patterns.append(pattern) + + # 编译正则表达式 + inline_pattern = re.compile('|'.join(inline_patterns), re.DOTALL) + display_pattern = re.compile('|'.join(display_patterns), re.DOTALL) + + # 处理所有文本节点 + self._find_math_in_element(root, inline_pattern, display_pattern) + + def _find_math_in_element(self, element: HtmlElement, inline_pattern: re.Pattern, display_pattern: re.Pattern) -> None: + """递归处理元素中的数学公式. + + Args: + element: 当前元素 + inline_pattern: 行内公式正则表达式 + display_pattern: 行间公式正则表达式 + """ + if element is None: + return + + # 跳过特定标签 + skip_tags = MATHJAX_OPTIONS.get('skipTags', ['script', 'noscript', 'style', 'textarea', 'pre', 'code']) + if element.tag in skip_tags: + return + + # 检查是否应该忽略该元素 + if self._should_ignore_element(element): + return + + # 处理当前节点的文本 + if element.text: + # 处理行间公式(优先处理,因为可能包含行内公式) + element.text = self._process_math_in_text(element, element.text, display_pattern, True) + # 处理行内公式 + if element.text: # 检查是否还有文本需要处理 + element.text = self._process_math_in_text(element, element.text, inline_pattern, False) + + if element.tail: + # 处理行间公式(优先处理,因为可能包含行内公式) + element.tail = self._process_math_in_text(element, element.tail, display_pattern, True, True) + # 处理行内公式 + if element.tail: # 检查是否还有文本需要处理 + element.tail = self._process_math_in_text(element, element.tail, inline_pattern, False, True) + + # 获取子节点的副本,以避免在迭代过程中修改列表 + children = list(element) + + # 递归处理子节点 + for child in children: + self._find_math_in_element(child, inline_pattern, display_pattern) + + def _should_ignore_element(self, element: HtmlElement) -> bool: + """检查是否应该忽略该元素. + + Args: + element: 当前元素 + + Returns: + bool: 如果应该忽略该元素,则返回True,否则返回False + """ + # 检查是否有忽略类 + ignore_class = MATHJAX_OPTIONS.get('ignoreClass', 'tex2jax_ignore') + if element.get('class') and ignore_class in element.get('class'): + return True + + # 检查是否有处理类 + process_class = MATHJAX_OPTIONS.get('processClass', 'tex2jax_process') + if process_class and element.get('class') and process_class in element.get('class'): + return False + + # 检查父元素是否应该被忽略 + parent = element.getparent() + if parent is not None and self._should_ignore_element(parent): + return True + + return False + + def _process_math_in_text( + self, + element: HtmlElement, + text: str, + pattern: re.Pattern, + is_display: bool, + is_tail: bool = False + ) -> str: + """处理文本中的数学公式. + + Args: + element: 元素 + text: 文本内容 + pattern: 正则表达式模式 + is_display: 是否为行间公式 + is_tail: 是否为尾部文本 + + Returns: + str: 处理后的文本 + """ + if not text: + return text + + # 查找所有匹配 + matches = list(pattern.finditer(text)) + if not matches: + return text + + # 从后向前处理,以避免位置偏移 + result = text + last_position = len(result) + parent = element.getparent() + + for match in reversed(matches): + # 确定匹配的分组索引 + group_idx = 0 + for i in range(1, len(match.groups()) + 1): + if match.group(i) is not None: + group_idx = i + break + + formula = match.group(group_idx) + if not formula.strip(): + continue # 跳过空公式 + + # 检查是否是转义的分隔符 + if self._is_escaped_delimiter(text, match.start()): + continue + + start_pos = match.start() + end_pos = match.end() + + # 提取公式后的文本 + suffix = result[end_pos:last_position] + + # 创建数学公式节点 + from llm_web_kit.extractor.html.recognizer.cc_math.common import \ + MathType + from llm_web_kit.extractor.html.recognizer.recognizer import CCTag + from llm_web_kit.libs.html_utils import build_cc_element + + tag_name = CCTag.CC_MATH_INTERLINE if is_display else CCTag.CC_MATH_INLINE + + # 使用build_cc_element创建节点 + math_node = build_cc_element( + html_tag_name=tag_name, + text=formula, + tail=suffix, # 设置公式节点的tail为公式后的文本 + type=MathType.LATEX, + by=self.render_type, + html=match.group(0) # 使用完整的原始HTML + ) + + # 更新结果文本,只保留公式前的部分 + result = result[:start_pos] + + # 将节点添加到适当的位置 + if is_tail: + # 处理element.tail的情况 + element.tail = result + if parent is not None: + parent_index = list(parent).index(element) + parent.insert(parent_index + 1, math_node) + else: + # 处理element.text的情况 + element.text = result + if len(element) > 0: + element.insert(0, math_node) + else: + element.append(math_node) + + # 更新last_position + last_position = start_pos + + # 返回处理后的文本 + return result + + def _is_escaped_delimiter(self, text: str, pos: int) -> bool: + """检查分隔符是否被转义. + + Args: + text: 文本内容 + pos: 分隔符位置 + + Returns: + bool: 如果分隔符被转义,则返回True,否则返回False + """ + # 检查是否启用了转义处理 + if not MATHJAX_OPTIONS.get('processEscapes', True): + return False + + # 检查分隔符前是否有奇数个反斜杠 + count = 0 + i = pos - 1 + while i >= 0 and text[i] == '\\': + count += 1 + i -= 1 + + # 奇数个反斜杠表示转义 + return count % 2 == 1 + + +# 使用示例 +if __name__ == '__main__': + # MathJax示例 + mathjax_html = """ + + + + + + +

                                                                                  Inline math: $E=mc^2$

                                                                                  +

                                                                                  Display math: $$F = G\\frac{m_1 m_2}{r^2}$$

                                                                                  + + + """ + + # 测试MathJax + print('Testing MathJax detection:') + mathjax_tree = html_to_element(mathjax_html) + render_type = BaseMathRender.detect_render_type(mathjax_tree) + print(f'Detected render type: {render_type}') + + mathjax_render = BaseMathRender.create_render(mathjax_tree) + if mathjax_render: + options = mathjax_render.get_options(mathjax_html) + print(f'MathJax options: {options}') + else: + print('No renderer detected') + + # # 测试find_math方法 + # print('\n测试find_math方法 - MathJax:') + # mathjax_html = open('tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums.html', 'r').read() + # mathjax_tree = html_to_element(mathjax_html) + # mathjax_render = BaseMathRender.create_render(mathjax_tree) + # print(f'mathjax_render options: {mathjax_render.get_options(mathjax_html)}') + # if mathjax_render: + # # 处理前的HTML + # print('处理前的HTML:') + # print(element_to_html(mathjax_tree)[:500] + '...') + + # # 使用find_math处理数学公式 + # mathjax_render.find_math(mathjax_tree) + + # # 处理后的HTML + # print('\n处理后的HTML:') + # processed_html = element_to_html(mathjax_tree) + # print(processed_html[:500] + '...') + + # # 查找处理后的ccmath节点 + # ccmath_nodes = mathjax_tree.xpath('.//*[self::ccmath-inline or self::ccmath-interline]') + # print(f'\n找到 {len(ccmath_nodes)} 个数学公式节点:') + # for i, node in enumerate(ccmath_nodes, 1): + # print(f"{i}. <{node.tag}> {node.text[:30]}{'...' if len(node.text) > 30 else ''}") + + # # 测试[tex]...[/tex]格式的数学公式 + # print('\n测试[tex]...[/tex]格式的数学公式:') + # tex_html = ''' + # + # + #

                                                                                  where [tex]d^2(x_1,x_2)[/tex] is the squared distance between [tex]x_1[/tex] and [tex]x_2[/tex] in some metric space [tex]\\Theta[/tex]. All integrals are over [tex]\\Theta[/tex]

                                                                                  + # + # + # ''' + + # tex_tree = html_to_element(tex_html) + # mathjax_render = MathJaxRender() # 直接创建MathJax渲染器,不需要检测 + + # # 处理前的HTML + # print('处理前的HTML:') + # print(element_to_html(tex_tree)) + + # # 使用find_math处理数学公式 + # mathjax_render.find_math(tex_tree) + + # # 处理后的HTML + # print('\n处理后的HTML:') + # processed_html = element_to_html(tex_tree) + # print(processed_html) + + # # 查找处理后的ccmath节点 + # ccmath_nodes = tex_tree.xpath('.//*[self::ccmath-inline or self::ccmath-interline]') + # print(f'\n找到 {len(ccmath_nodes)} 个数学公式节点:') + # for i, node in enumerate(ccmath_nodes, 1): + # print(f'{i}. <{node.tag}> {node.text}') + + # # 测试真实文本 + # print('\n测试真实文本:') + # real_text = ''' + #

                                                                                  where [tex]d^2(x_1,x_2)[/tex] is the $a=b$ squared distance between [tex]x_1[/tex] and [tex]x_2[/tex] in some metric space [tex]\\Theta[/tex]. All integrals are over [tex]\\Theta[/tex]

                                                                                  + # ''' + + # real_tree = html_to_element(real_text) + # mathjax_render = MathJaxRender() + + # # 处理前的HTML + # print('处理前的HTML:') + # print(element_to_html(real_tree)) + + # # 使用find_math处理数学公式 + # mathjax_render.find_math(real_tree) + + # # 处理后的HTML + # print('\n处理后的HTML:') + # processed_html = element_to_html(real_tree) + # print(processed_html) + + # # 查找处理后的ccmath节点 + # ccmath_nodes = real_tree.xpath('.//*[self::ccmath-inline or self::ccmath-interline]') + # print(f'\n找到 {len(ccmath_nodes)} 个数学公式节点:') + # for i, node in enumerate(ccmath_nodes, 1): + # print(f'{i}. <{node.tag}> {node.text}') + + # # 测试$$格式的公式 + # print('\n专门测试$$格式的公式:') + # dollar_text = ''' + #

                                                                                  This is a display formula: $$F = G\\frac{m_1 m_2}{r^2}$$

                                                                                  + # ''' + + # dollar_tree = html_to_element(dollar_text) + # mathjax_render = MathJaxRender() + + # # 处理前的HTML + # print('处理前的HTML:') + # print(element_to_html(dollar_tree)) + + # # 使用find_math处理数学公式 + # mathjax_render.find_math(dollar_tree) + + # # 处理后的HTML + # print('\n处理后的HTML:') + # processed_html = element_to_html(dollar_tree) + # print(processed_html) + + # # 查找处理后的ccmath节点 + # ccmath_nodes = dollar_tree.xpath('.//*[self::ccmath-inline or self::ccmath-interline]') + # print(f'\n找到 {len(ccmath_nodes)} 个数学公式节点:') + # for i, node in enumerate(ccmath_nodes, 1): + # print(f'{i}. <{node.tag}> {node.text}') + + # empty_text = '''
                                                                                  Inline: \\(a^2 + b^2 = c^2\\) and display: \\[a^2 + b^2 = c^2\\]
                                                                                  ''' + # empty_tree = html_to_element(empty_text) + # mathjax_render = MathJaxRender() + # mathjax_render.find_math(empty_tree) + # print(f'empty_tree: {element_to_html(empty_tree)}') diff --git a/llm_web_kit/extractor/html/recognizer/cc_math/render/render.py b/llm_web_kit/extractor/html/recognizer/cc_math/render/render.py new file mode 100644 index 00000000..aad4ec6e --- /dev/null +++ b/llm_web_kit/extractor/html/recognizer/cc_math/render/render.py @@ -0,0 +1,194 @@ +from abc import abstractmethod +from typing import Any, Dict + +from lxml.html import HtmlElement + +from llm_web_kit.exception.exception import \ + HtmlMathMathjaxRenderRecognizerException +from llm_web_kit.libs.html_utils import html_to_element + + +class MathRenderType: + """数学公式渲染器类型.""" + MATHJAX = 'mathjax' + MATHJAX_CUSTOMIZED = 'mathjax_customized' # 临时增加这个type,未来区分走自定义解析的数据 + KATEX = 'katex' + + +class BaseMathRender(): + """数学公式渲染器基类. + + 提供了识别和处理不同类型数学公式渲染器的基本功能。 子类需要实现特定渲染器的选项解析和处理逻辑。 + """ + + def __init__(self): + """初始化渲染器基类.""" + self.options = {} + self.render_type = None + + @abstractmethod + def get_render_type(self) -> str: + """获取渲染器类型.""" + return self.render_type + + @abstractmethod + def get_options(self, html: str) -> Dict[str, Any]: + """从HTML中提取渲染器选项. + + Args: + html: 包含渲染器配置的HTML字符串 + + Returns: + Dict[str, Any]: 渲染器选项字典 + """ + return self.options + + @abstractmethod + def is_customized_options(self) -> bool: + """是否与默认配置不同.""" + return False + + def find_math(self, root: HtmlElement) -> None: + """遍历HTML根节点查找数学公式,并创建相应的数学公式节点. + + Args: + root: HTML根节点 + """ + pass + + def get_math_render(self, html: str) -> 'BaseMathRender': + """获取数学公式渲染器. + + 根据HTML内容检测使用的数学公式渲染器类型(MathJax或KaTeX)。 + + Args: + html: 包含可能的数学公式渲染器的HTML字符串 + + Returns: + BaseMathRender: 返回对应类型的渲染器实例。 + - 如果检测到KaTeX,返回KaTeXRender实例 + - 如果检测到MathJax,返回MathJaxRender实例 + - 如果未检测到任何渲染器或发生异常,返回BaseMathRender实例 + - 如果输入为None或空字符串,返回None + + 示例: + MathJax: + + KaTeX: + + """ + # 在方法内部导入,避免循环导入 + from llm_web_kit.extractor.html.recognizer.cc_math.render.katex import \ + KaTeXRender + from llm_web_kit.extractor.html.recognizer.cc_math.render.mathjax import \ + MathJaxRender + + # 处理无效输入 + if html is None or not isinstance(html, str) or not html.strip(): + return None + + try: + # 解析HTML + tree = html_to_element(html) + if tree is None: + return None + + # 首先检查 KaTeX(优先级更高) + katex_detected = False + for link in tree.iter('link'): + href = link.get('href', '').lower() + if href and 'katex' in href: + katex_detected = True + break + + if not katex_detected: + # 检查脚本中是否包含KaTeX关键字 + for script in tree.iter('script'): + src = script.get('src', '').lower() + if src and 'katex' in src: + katex_detected = True + break + # 检查脚本内容 + if script.text and ('katex' in script.text.lower() or 'rendermathinelem' in script.text.lower()): + katex_detected = True + break + + if katex_detected: + render = KaTeXRender() + render.get_options(html) + return render + + # 检查 MathJax + mathjax_detected = False + for script in tree.iter('script'): + src = script.get('src', '').lower() + if src and ('mathjax' in src or 'asciimath' in src): + mathjax_detected = True + break + # 检查脚本内容 + if script.text and ('mathjax' in script.text.lower() or 'tex2jax' in script.text.lower()): + mathjax_detected = True + break + + if mathjax_detected: + render = MathJaxRender() + render.get_options(html) + return render + + # 如果没有检测到任何渲染器,返回基础渲染器 + return BaseMathRender() + + except Exception as e: + # 记录异常,但不抛出 + raise HtmlMathMathjaxRenderRecognizerException(f'获取数学公式渲染器失败: {e}') + + @staticmethod + def detect_render_type(tree: HtmlElement) -> str: + """检测HTML中使用的数学公式渲染器类型. + + Args: + tree: HTML元素树 + + Returns: + str: 渲染器类型,如果未检测到则返回None + """ + if tree is None: + return None + + # 检查 KaTeX + for link in tree.iter('link'): + if link.get('href') and 'katex' in link.get('href', '').lower(): + return MathRenderType.KATEX + + # 检查 MathJax + for script in tree.iter('script'): + src = script.get('src', '').lower() + if src and ('mathjax' in src or 'asciimath' in src): + return MathRenderType.MATHJAX + + return None + + @staticmethod + def create_render(tree: HtmlElement) -> 'BaseMathRender': + """根据HTML创建合适的渲染器实例. + + Args: + tree: HTML元素树 + + Returns: + BaseMathRender: 渲染器实例,如果未检测到则返回None + """ + # 在方法内部导入,避免循环导入 + from llm_web_kit.extractor.html.recognizer.cc_math.render.katex import \ + KaTeXRender + from llm_web_kit.extractor.html.recognizer.cc_math.render.mathjax import \ + MathJaxRender + + render_type = BaseMathRender.detect_render_type(tree) + + if render_type == MathRenderType.MATHJAX: + return MathJaxRender() + elif render_type == MathRenderType.KATEX: + return KaTeXRender() + + return BaseMathRender() diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_asciimath.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_asciimath.py similarity index 76% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_asciimath.py rename to llm_web_kit/extractor/html/recognizer/cc_math/tag_asciimath.py index aad90173..f0a6ef9c 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_asciimath.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_asciimath.py @@ -1,9 +1,9 @@ from lxml.html import HtmlElement -from llm_web_kit.exception.exception import HtmlMathRecognizerExp +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.cc_math.common import (CCMATH, + text_strip) from llm_web_kit.libs.html_utils import replace_element -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import ( - CCMATH, text_strip) def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, parent: HtmlElement): @@ -21,4 +21,4 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa replace_element(node,new_span) new_span.tail = tail except Exception as e: - raise HtmlMathRecognizerExp(f'Error processing asciimath: {e}') + raise HtmlMathRecognizerException(f'Error processing asciimath: {e}') diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_common_modify.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_common_modify.py similarity index 82% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_common_modify.py rename to llm_web_kit/extractor/html/recognizer/cc_math/tag_common_modify.py index aaa60f17..260d4b80 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_common_modify.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_common_modify.py @@ -1,9 +1,10 @@ from lxml.html import HtmlElement -from llm_web_kit.exception.exception import HtmlMathRecognizerExp +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.cc_math.common import (CCMATH, + MathType, + text_strip) from llm_web_kit.libs.html_utils import replace_element -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import ( - CCMATH, MathType, text_strip) def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, parent: HtmlElement): @@ -30,4 +31,4 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa # new_span = build_cc_element(html_tag_name=new_tag, text=cm.wrap_math_md(text), tail=text_strip(node.tail), type=math_type, by=math_render, html=o_html) # replace_element(node, new_span) except Exception as e: - raise HtmlMathRecognizerExp(f'Error processing script mathtex: {e}') + raise HtmlMathRecognizerException(f'Error processing script mathtex: {e}') diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_img.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_img.py similarity index 94% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_img.py rename to llm_web_kit/extractor/html/recognizer/cc_math/tag_img.py index 9f9d2f4b..04ee4bbe 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_img.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_img.py @@ -2,11 +2,11 @@ from lxml.html import HtmlElement -from llm_web_kit.exception.exception import HtmlMathRecognizerExp -from llm_web_kit.libs.html_utils import build_cc_element, replace_element -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import ( +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.cc_math.common import ( CCMATH, CCMATH_INTERLINE, LATEX_IMAGE_CLASS_NAMES, LATEX_IMAGE_SRC_NAMES, MathType, text_strip) +from llm_web_kit.libs.html_utils import build_cc_element, replace_element def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, parent: HtmlElement): @@ -51,4 +51,4 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa replace_element(node, new_span) except Exception as e: - raise HtmlMathRecognizerExp(f'Error processing img tag: {e}') + raise HtmlMathRecognizerException(f'Error processing img tag: {e}') diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_math.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_math.py similarity index 90% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_math.py rename to llm_web_kit/extractor/html/recognizer/cc_math/tag_math.py index 74023481..4717c881 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_math.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_math.py @@ -3,11 +3,12 @@ from lxml.html import HtmlElement -from llm_web_kit.exception.exception import HtmlMathRecognizerExp +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.cc_math.common import (CCMATH, + MathType, + text_strip) from llm_web_kit.libs.html_utils import (build_cc_element, element_to_html, html_to_element, replace_element) -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import ( - CCMATH, MathType, text_strip) def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, parent: HtmlElement): @@ -56,7 +57,7 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa new_span = build_cc_element(html_tag_name=new_tag, text=cm.wrap_math_md(latex), tail=text_strip(node.tail), type=math_type, by=math_render, html=o_html) replace_element(node, new_span) except Exception as e: - raise HtmlMathRecognizerExp(f'Error processing math tag: {e}') + raise HtmlMathRecognizerException(f'Error processing math tag: {e}') if __name__ == '__main__': diff --git a/llm_web_kit/extractor/html/recognizer/cc_math/tag_mjx.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_mjx.py new file mode 100644 index 00000000..51679234 --- /dev/null +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_mjx.py @@ -0,0 +1,51 @@ +from lxml.html import HtmlElement + +from llm_web_kit.extractor.html.recognizer.cc_math.common import (CCMATH, + CCTag, + MathType, + text_strip) +from llm_web_kit.libs.html_utils import build_cc_element, replace_element + + +# +# \vec{F} = m\vec{a} +# +def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement): + """修改HTML树中的数学公式节点. + + Args: + cm: CCMATH实例 + math_render: 数学公式渲染器类型 + o_html: 原始HTML + node: 当前节点 + """ + # 处理mjx-container标签 + if node.tag == 'mjx-container': + display = node.get('display', 'false').lower() == 'true' + if display: + new_tag = CCTag.CC_MATH_INTERLINE + else: + new_tag = CCTag.CC_MATH_INLINE + + # 获取jax类型 + jax_type = node.get('jax', '') + if jax_type == 'CHTML': + math_type = MathType.LATEX + elif jax_type == 'AsciiMath': + math_type = MathType.ASCIIMATH + else: + math_type = MathType.LATEX # 先默认是latex + + # 查找formula标签 + formula = node.find('.//formula') + if formula is not None and formula.text: + new_span = build_cc_element( + html_tag_name=new_tag, + text=formula.text, + tail=text_strip(formula.tail), + type=math_type, + by=math_render, + html=o_html + ) + replace_element(formula, new_span) + return diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_script.py b/llm_web_kit/extractor/html/recognizer/cc_math/tag_script.py similarity index 92% rename from llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_script.py rename to llm_web_kit/extractor/html/recognizer/cc_math/tag_script.py index 7aae32c6..e8b578ba 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cc_math/tag_script.py +++ b/llm_web_kit/extractor/html/recognizer/cc_math/tag_script.py @@ -3,11 +3,11 @@ from lxml.html import HtmlElement -from llm_web_kit.exception.exception import HtmlMathRecognizerExp +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.cc_math.common import ( + CCMATH, CCMATH_INTERLINE, MathType, text_strip) from llm_web_kit.libs.html_utils import (build_cc_element, element_to_html, replace_element) -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import ( - CCMATH, CCMATH_INTERLINE, MathType, text_strip) def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, parent: HtmlElement): @@ -15,7 +15,6 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa text = node.text if text and text_strip(text): if node.tag not in ['script', 'style']: - node.text = None new_span = create_new_span([(CCMATH_INTERLINE,MathType.LATEX)], cm.wrap_math_md(text), node, math_render, o_html) node.addnext(new_span) else: @@ -35,11 +34,10 @@ def modify_tree(cm: CCMATH, math_render: str, o_html: str, node: HtmlElement, pa tag_math_type_list = cm.get_equation_type(o_html) if not tag_math_type_list: return - node.text = None new_span = create_new_span(tag_math_type_list, cm.wrap_math_md(node_text), node, math_render, o_html) replace_element(node, new_span) except Exception as e: - raise HtmlMathRecognizerExp(f'Error processing katex math: {e}') + raise HtmlMathRecognizerException(f'Error processing katex math: {e}') def create_new_span(tag_math_type_list, text_content, node, math_render, o_html): diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/cccode.py b/llm_web_kit/extractor/html/recognizer/cccode.py similarity index 74% rename from llm_web_kit/pipeline/extractor/html/recognizer/cccode.py rename to llm_web_kit/extractor/html/recognizer/cccode.py index e12ae7e9..fe5744a7 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/cccode.py +++ b/llm_web_kit/extractor/html/recognizer/cccode.py @@ -3,24 +3,21 @@ from lxml.html import HtmlElement from overrides import override -from llm_web_kit.libs.html_utils import element_to_html, html_to_element -from llm_web_kit.pipeline.extractor.html.recognizer.code import (tag_code, - tag_pre, - tag_pre_code) -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( +from llm_web_kit.extractor.html.recognizer.code import (tag_code, tag_pre, + tag_pre_code) +from llm_web_kit.extractor.html.recognizer.recognizer import ( BaseHTMLElementRecognizer, CCTag) class CodeRecognizer(BaseHTMLElementRecognizer): """解析代码元素.""" - @override def recognize( self, base_url: str, - main_html_lst: List[Tuple[str, str]], - raw_html: str, - ) -> List[Tuple[str, str]]: + main_html_lst: List[Tuple[HtmlElement, HtmlElement]], + raw_html: str + ) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析代码元素. Args: @@ -39,8 +36,8 @@ def recognize( if self.is_cc_html(html): rtn.append((html, raw_html)) continue - - root: HtmlElement = html_to_element(html) + # root: HtmlElement = html_to_element(html) + root = html while True: # 最常见: #
                                                                                  @@ -79,31 +76,36 @@ def remove_empty_code(r: HtmlElement): remove_empty_code(x) remove_empty_code(root) - - html_str: str = element_to_html(root) - - rtn.extend(BaseHTMLElementRecognizer.html_split_by_tags(html_str, CCTag.CC_CODE)) - + # html_str: str = element_to_html(root) + rtn.extend(BaseHTMLElementRecognizer.html_split_by_tags(root, CCTag.CC_CODE)) return rtn @override - def to_content_list_node(self, base_url:str, parsed_content: str, raw_html_segment:str) -> dict: - code_node: HtmlElement = html_to_element(parsed_content) + def to_content_list_node(self, base_url:str, parsed_content: HtmlElement, raw_html_segment:str) -> dict: + """ + 把代码元素转换为content list node. + Args: + base_url: + parsed_content: HtmlElement对象 + raw_html_segment: + Returns: + + """ d = { 'type': 'code', # "bbox": [], 'raw_content': raw_html_segment, - 'inline': code_node.get('inline', 'false') == 'true', + 'inline': parsed_content.get('inline', 'false') == 'true', 'content': { - 'code_content': code_node.text, + 'code_content': parsed_content.text, }, } - if lang := code_node.get('language', None): + if lang := parsed_content.get('language', None): d['content']['language'] = lang - if by := code_node.get('by', None): + if by := parsed_content.get('by', None): d['content']['by'] = by return d diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/ccmath.py b/llm_web_kit/extractor/html/recognizer/ccmath.py similarity index 53% rename from llm_web_kit/pipeline/extractor/html/recognizer/ccmath.py rename to llm_web_kit/extractor/html/recognizer/ccmath.py index e66ba7f9..62701417 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/ccmath.py +++ b/llm_web_kit/extractor/html/recognizer/ccmath.py @@ -3,17 +3,19 @@ from lxml.html import HtmlElement from overrides import override -from llm_web_kit.exception.exception import HtmlMathRecognizerExp +from llm_web_kit.exception.exception import ( + HtmlMathMathjaxRenderRecognizerException, HtmlMathRecognizerException) +from llm_web_kit.extractor.html.recognizer.cc_math import (tag_asciimath, + tag_common_modify, + tag_img, tag_math, + tag_mjx, tag_script) +from llm_web_kit.extractor.html.recognizer.cc_math.common import CCMATH +from llm_web_kit.extractor.html.recognizer.cc_math.render.render import ( + BaseMathRender, MathRenderType) +from llm_web_kit.extractor.html.recognizer.recognizer import ( + BaseHTMLElementRecognizer, CCTag) from llm_web_kit.libs.doc_element_type import DocElementType from llm_web_kit.libs.html_utils import iter_node -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math import ( - tag_asciimath, tag_common_modify, tag_img, tag_math, tag_script) -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import \ - CCMATH -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( - BaseHTMLElementRecognizer, CCTag) - -cm = CCMATH() class MathRecognizer(BaseHTMLElementRecognizer): @@ -21,9 +23,10 @@ class MathRecognizer(BaseHTMLElementRecognizer): def __init__(self): super().__init__() + self.cm = CCMATH() @override - def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_html: str) -> List[Tuple[str, str]]: + def recognize(self, base_url: str, main_html_lst: List[Tuple[HtmlElement, HtmlElement]], raw_html: str) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析数学公式元素. Args: @@ -34,18 +37,26 @@ def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_htm Returns: main_html_lst中发现有公式,则返回处理后的元素,标签更新为ccmath,否则原样返回. """ result = [] + self.cm.url = base_url # 获取数学公式渲染器 - math_render = cm.get_math_render(raw_html) + base_render = BaseMathRender() + math_render = base_render.get_math_render(raw_html) for cc_html, o_html in main_html_lst: if not self.is_cc_html(cc_html): - result.extend(self.process_ccmath_html(cc_html, o_html, math_render)) + # 对于自定义的mathjax,需要单独处理 + if math_render and math_render.render_type == MathRenderType.MATHJAX and math_render.is_customized_options(): + math_render.get_options(raw_html) + print(f'处理mathjax,有自定义配置, options: {math_render.options}') + result.extend(self.process_mathjax_html(cc_html, o_html, math_render, base_url)) + else: + result.extend(self.process_ccmath_html(cc_html, o_html, math_render, base_url)) else: result.append((cc_html, o_html)) return result @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: """将content转换成content_list_node. 每种类型的html元素都有自己的content-list格式:参考 docs/specification/output_format/content_list_spec.md 例如代码的返回格式: @@ -67,16 +78,16 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm Returns: dict: content_list_node """ - tree = self._build_html_tree(parsed_content) + tree = parsed_content if tree is None: - raise HtmlMathRecognizerExp(f'Failed to load html: {parsed_content}') + raise HtmlMathRecognizerException(f'Failed to load html: {parsed_content}') inter_ele = tree.xpath(f'//{CCTag.CC_MATH_INTERLINE}') in_els = tree.xpath(f'//{CCTag.CC_MATH_INLINE}') if len(inter_ele) > 0: # 获取math_content math_content = inter_ele[0].text - math_content = cm.wrap_math_md(math_content) + math_content = self.cm.wrap_math_md(math_content) return { 'type': DocElementType.EQUATION_INTERLINE, @@ -100,9 +111,9 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm } } else: - raise HtmlMathRecognizerExp(f'No ccmath element found in content: {parsed_content}') + raise HtmlMathRecognizerException(f'No ccmath element found in content: {parsed_content}') - def process_ccmath_html(self, cc_html: str, o_html: str, math_render: str) -> List[Tuple[str, str]]: + def process_ccmath_html(self, cc_html: str, o_html: str, math_render: BaseMathRender, base_url: str) -> List[Tuple[str, str]]: """处理数学公式,将外层标签修改为 ccmath. Args: @@ -113,9 +124,11 @@ def process_ccmath_html(self, cc_html: str, o_html: str, math_render: str) -> Li List[Tuple[str, str]]: 处理后的HTML对 """ # node是从cc_html中解析出来的lxml节点 - tree = self._build_html_tree(cc_html) + self.cm.url = base_url + tree = cc_html + math_render_type = math_render.get_render_type() if tree is None: - raise HtmlMathRecognizerExp(f'Failed to load html: {cc_html}') + raise HtmlMathRecognizerException(f'Failed to load html: {cc_html}') # 打印遍历node次数 # count = 0 @@ -126,55 +139,72 @@ def process_ccmath_html(self, cc_html: str, o_html: str, math_render: str) -> Li # tag = span, class 为 math-containerm, 或者 mathjax 或者 wp-katex-eq if node.tag == 'span' and node.get('class') and ('math-container' in node.get('class') or 'mathjax' in node.get('class') or 'wp-katex-eq' in node.get('class') or 'x-ck12-mathEditor' in node.get('class') or 'tex' in node.get('class')): - tag_common_modify.modify_tree(cm, math_render, original_html, node, parent) + tag_common_modify.modify_tree(self.cm, math_render_type, original_html, node, parent) # script[type="math/tex"] # if node.tag == 'script' and node.get('type') and 'math/tex' in node.get('type'): - # tag_common_modify.modify_tree(cm, math_render, original_html, node, parent) + # tag_common_modify.modify_tree(cm, math_render_type, original_html, node, parent) # math tags if node.tag == 'math' or node.tag.endswith(':math'): - tag_math.modify_tree(cm, math_render, original_html, node, parent) + tag_math.modify_tree(self.cm, math_render_type, original_html, node, parent) # script[type="math/asciimath"] # if node.tag == 'script' and node.get('type') == 'math/asciimath': if node.tag in ('p','div') and node.text and '`' in node.text: - tag_asciimath.modify_tree(cm, math_render, original_html, node, parent) + tag_asciimath.modify_tree(self.cm, math_render_type, original_html, node, parent) - # Remove any .MathJax_Preview spans - if node.tag == 'span' and node.get('class') and 'MathJax_Preview' in node.get('class'): - pass + if node.tag == 'mjx-container': + tag_mjx.modify_tree(self.cm, math_render, original_html, node) # img中的latex if node.tag == 'img': - tag_img.modify_tree(cm, math_render, original_html, node, parent) + tag_img.modify_tree(self.cm, math_render_type, original_html, node, parent) # span.katex if node.tag == 'script' or 'math' == node.get('class') or 'katex' == node.get('class'): - tag_script.modify_tree(cm, math_render, original_html, node, parent) + tag_script.modify_tree(self.cm, math_render_type, original_html, node, parent) # 14. 只处理只有一层的p标签 if node.tag == 'p' and len(node.getchildren()) == 0: - tag_common_modify.modify_tree(cm, math_render, original_html, node, parent) - # 打印处理后的html - # print(self._element_to_html(tree)) - return self.html_split_by_tags(self._element_to_html(tree), [CCTag.CC_MATH_INTERLINE]) + tag_common_modify.modify_tree(self.cm, math_render_type, original_html, node, parent) + # 保存处理后的html + # with open('math_physicsforums_1_processed.html', 'w') as f: + # f.write(self._element_to_html(tree)) + return self.html_split_by_tags(tree, [CCTag.CC_MATH_INTERLINE]) + + def process_mathjax_html(self, cc_html: HtmlElement, o_html: HtmlElement, math_render: BaseMathRender, base_url: str) -> List[Tuple[HtmlElement, HtmlElement]]: + """处理mathjax有自定义标识符的数学公式.""" + self.cm.url = base_url + try: + tree = cc_html + math_render.find_math(tree) + + # with open('math_physicsforums_1_processed.html', 'w') as f: + # f.write(self._element_to_html(tree)) + except Exception as e: + raise HtmlMathMathjaxRenderRecognizerException(f'处理mathjax有自定义标识符的数学公式失败: {e}') + return self.html_split_by_tags(tree, [CCTag.CC_MATH_INTERLINE]) if __name__ == '__main__': math_recognizer = MathRecognizer() test_html = [ ( - ('

                                                                                  这是p的text' - '$$a^2 + b^2 = c^2$$这是span的tail这是b的text' - '这是b的tail

                                                                                  ' - '

                                                                                  2omega_0,  2omega_0-4pi,  2omega_0-8pi, ... 2omega_0-52pi

                                                                                  ' - r''), - ('

                                                                                  这是p的text' - '$$a^2 + b^2 = c^2$$这是span的tail这是b的text' - '这是b的tail

                                                                                  ' - '

                                                                                  2omega_0,  2omega_0-4pi,  2omega_0-8pi, ... 2omega_0-52pi

                                                                                  ' - r'') + (""" +
                                                                                  + + + +
                                                                                  + """), + (""" +
                                                                                  + + + +
                                                                                  + """) ) ] raw_html = ( @@ -184,11 +214,17 @@ def process_ccmath_html(self, cc_html: str, o_html: str, math_render: str) -> Li ' ' '

                                                                                  这是p的text$$a^2 + b^2 = c^2$$这是span的tail这是b的text这是b的tail

                                                                                  ' ) - print(math_recognizer.recognize( - 'https://www.baidu.com', - test_html, - raw_html - )) + # print(math_recognizer.recognize( + # 'https://www.baidu.com', + # test_html, + # raw_html + # )) + # raw_html = open('bench/data/origin/math_physicsforums_1.html', 'r').read() + # print(math_recognizer.recognize( + # 'https://www.baidu.com', + # [(raw_html, raw_html)], + # raw_html + # )) # print(math_recognizer.to_content_list_node( # 'https://www.baidu.com', # '$u_{x_0}^{in}(x)$', @@ -199,3 +235,9 @@ def process_ccmath_html(self, cc_html: str, o_html: str, math_render: str) -> Li # raw_html, # ['ccmath'] # )) + # raw_html = open('bench/data/origin/math_physicsforums_1.html', 'r').read() + # print(math_recognizer.recognize( + # 'https://www.baidu.com', + # [(raw_html, raw_html)], + # raw_html + # )) diff --git a/llm_web_kit/extractor/html/recognizer/code/__init__.py b/llm_web_kit/extractor/html/recognizer/code/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/code/common.py b/llm_web_kit/extractor/html/recognizer/code/common.py similarity index 98% rename from llm_web_kit/pipeline/extractor/html/recognizer/code/common.py rename to llm_web_kit/extractor/html/recognizer/code/common.py index 6d96d1c9..0c3ca3f0 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/code/common.py +++ b/llm_web_kit/extractor/html/recognizer/code/common.py @@ -3,8 +3,8 @@ from lxml.html import HtmlElement +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag from llm_web_kit.libs.html_utils import element_to_html -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag _RE_NUMBER = re.compile(r'^(\s*)([0-9]+)(\s*)') _RE_NUMBER_NO_CODE = re.compile(r'^(\s*)([0-9]+)(\s*)$') @@ -190,7 +190,8 @@ def replace_node_by_cccode( """ origin_html = element_to_html(node) - _detect_and_remove_subling_lineno(node) + if not inline: + _detect_and_remove_subling_lineno(node) language = __detect_language(node) diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_code.py b/llm_web_kit/extractor/html/recognizer/code/tag_code.py similarity index 55% rename from llm_web_kit/pipeline/extractor/html/recognizer/code/tag_code.py rename to llm_web_kit/extractor/html/recognizer/code/tag_code.py index e3cf384d..760d312b 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_code.py +++ b/llm_web_kit/extractor/html/recognizer/code/tag_code.py @@ -1,8 +1,10 @@ +from typing import Optional + from lxml.html import HtmlElement -from llm_web_kit.pipeline.extractor.html.recognizer.code.common import ( +from llm_web_kit.extractor.html.recognizer.code.common import ( _BLOCK_ELES, replace_node_by_cccode) -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag """ 处理仅由标签组成的代码块 @@ -29,111 +31,6 @@ def __is_all_chars_in_code_element(node: HtmlElement) -> bool: return full_text == code_text -def __group_code_by_distance( - root: HtmlElement, - node_paths: list[list[str]], - dist: list[list[int]], -) -> list[str]: - father = list(range(len(node_paths))) - - def get_father(x: int) -> int: - if father[x] == x: - return x - father[x] = get_father(father[x]) - return father[x] - - edges: list[tuple[int, int, int]] = [] - root_paths: list[list[str]] = [] - for i in range(len(node_paths)): - root_paths.append(node_paths[i]) - for j in range(i + 1, len(node_paths)): - edges.append((dist[i][j], i, j)) - edges = sorted(edges) - - used_edge = 0 - meet = set() - for edge in edges: - _, i, j = edge - i = get_father(i) - j = get_father(j) - if i != j and (i, j) not in meet: - common_node_idx = min(len(root_paths[i]), len(root_paths[j])) - for idx, (x, y) in enumerate(zip(root_paths[i], root_paths[j])): - if idx == 0: - continue - if x != y: - common_node_idx = idx - break - maybe_tree_root = __get_html_element(root, root_paths[i][:common_node_idx]) - - if len(maybe_tree_root.xpath(f'.//{CCTag.CC_CODE}|.//{CCTag.CC_CODE_INLINE}')) > 0: - meet.add((i, j)) - continue - - if not __is_all_chars_in_code_element(maybe_tree_root): - meet.add((i, j)) - continue - - root_paths[i] = root_paths[i][:common_node_idx] - used_edge += 1 - father[j] = i - - root_paths = [ - root_path for i, root_path in enumerate(root_paths) if i == get_father(i) - ] - - removed = set() - root_paths_joined = sorted( - list(set(['/'.join(root_path) for root_path in root_paths])) - ) - for x in root_paths_joined: - for y in root_paths_joined: - if len(x) < len(y) and y.startswith(x): - removed.add(y) - return [x for x in root_paths_joined if x not in removed] - - -def __compute_distance_matrix(node_paths: list[list[str]]) -> list[list[int]]: - """ - 计算节点路径的距离矩阵,具体步骤: - 1. 创建距离矩阵,计算每两个节点之间的距离 - 2. 距离计算方法:从共同祖先节点到两个节点的路径长度之和 - 例如: - 节点1路径:/html/body/div/code - 节点2路径:/html/body/pre/code - 共同祖先到 body,距离为 2(div->code) + 2(pre->code) = 4 - 节点1和节点2的距离为 4 - - 距离矩阵(对称矩阵): - [0, 1, 2, 3], - [1, 0, 1, 2], - [2, 1, 0, 1], - [3, 2, 1, 0] - - Args: - node_paths: 节点路径 - - Returns: - list[list[int]]: 距离矩阵 - """ - def get_lca_depth(path1: list[str], path2: list[str]) -> int: - for i, (x, y) in enumerate(zip(path1, path2)): - if x != y: - return i - return min(len(path1), len(path2)) - - n = len(node_paths) - dist = [[0] * n for _ in range(n)] - - for i in range(n): - for j in range(i + 1, n): - lca_depth = get_lca_depth(node_paths[i], node_paths[j]) - d = len(node_paths[i]) + len(node_paths[j]) - 2 * lca_depth - dist[i][j] = dist[j][i] = d - - return dist - - def __get_code_node_paths(html_el: HtmlElement) -> list[list[str]]: """获取 html_el 中所有 code 标签的路径 只获取最外层的code标签, 如果code标签内还有code标签,则不获取。 @@ -223,6 +120,49 @@ def __detect_inline_code(root: HtmlElement, node_paths: list[list[str]]) -> tupl return new_node_paths, inline_code +def __group_code(root: HtmlElement, node_paths: list[list[str]]) -> list[str]: + root_paths = [] + + def next_parent(code_node: HtmlElement, code_tags: int) -> tuple[Optional[HtmlElement], int]: + parent: Optional[HtmlElement] = code_node.getparent() + while parent is not None: + new_code_tags = len(parent.xpath('.//code')) + if new_code_tags == code_tags: + parent = parent.getparent() + else: + return parent, new_code_tags + return None, 0 + + while len(node_paths): + code_node = __get_html_element(root, node_paths[0]) + code_tags = len(code_node.xpath('.//code')) + + parent, new_code_tags = next_parent(code_node, code_tags) + while parent is not None: + if not __is_all_chars_in_code_element(parent): + break + + if len(parent.xpath(f'.//{CCTag.CC_CODE}|.//{CCTag.CC_CODE_INLINE}')) > 0: + break + + code_node = parent + code_tags = new_code_tags + + parent, new_code_tags = next_parent(code_node, code_tags) + + root_path = code_node.getroottree().getpath(code_node) + root_paths.append(root_path) + + new_node_path = [] + for node_path in node_paths: + if '/'.join(node_path).startswith(root_path): + continue + new_node_path.append(node_path) + node_paths = new_node_path + + return root_paths + + def modify_tree(root: HtmlElement) -> None: """将 html 树中所有 code 标签转换为代码块. @@ -239,8 +179,8 @@ def modify_tree(root: HtmlElement) -> None: elif len(node_paths) == 1: tree_roots = ['/'.join(node_paths[0])] else: - dist_matrix = __compute_distance_matrix(node_paths) # 计算距离矩阵 - tree_roots = __group_code_by_distance(root, node_paths, dist_matrix) # 根据距离矩阵,对code标签进行分组 + tree_roots = __group_code(root, node_paths) # 根据距离矩阵,对code标签进行分组 + tree_roots = sorted(tree_roots) nodes = __get_code_blocks_nodes(root, tree_roots) # 获取所有需要被转换为代码块的节点,并进行标签替换 for node in nodes: diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre.py b/llm_web_kit/extractor/html/recognizer/code/tag_pre.py similarity index 86% rename from llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre.py rename to llm_web_kit/extractor/html/recognizer/code/tag_pre.py index 8d4950a9..275fc7ad 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre.py +++ b/llm_web_kit/extractor/html/recognizer/code/tag_pre.py @@ -1,9 +1,9 @@ from lxml.html import HtmlElement # from llm_web_kit.model.code_detector import decide_code_by_str -from llm_web_kit.pipeline.extractor.html.recognizer.code.common import \ +from llm_web_kit.extractor.html.recognizer.code.common import \ replace_node_by_cccode -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag def modify_tree(root: HtmlElement) -> None: diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre_code.py b/llm_web_kit/extractor/html/recognizer/code/tag_pre_code.py similarity index 93% rename from llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre_code.py rename to llm_web_kit/extractor/html/recognizer/code/tag_pre_code.py index 87c6e0a8..f4d5c714 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/code/tag_pre_code.py +++ b/llm_web_kit/extractor/html/recognizer/code/tag_pre_code.py @@ -1,6 +1,6 @@ from lxml.html import HtmlElement -from llm_web_kit.pipeline.extractor.html.recognizer.code.common import \ +from llm_web_kit.extractor.html.recognizer.code.common import \ replace_node_by_cccode diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/image.py b/llm_web_kit/extractor/html/recognizer/image.py similarity index 70% rename from llm_web_kit/pipeline/extractor/html/recognizer/image.py rename to llm_web_kit/extractor/html/recognizer/image.py index 7a09a505..af362110 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/image.py +++ b/llm_web_kit/extractor/html/recognizer/image.py @@ -1,7 +1,4 @@ import base64 -import gzip -import html -import json import re from typing import List, Tuple from urllib.parse import urljoin, urlparse @@ -10,10 +7,10 @@ from lxml.html import HtmlElement from overrides import override -from llm_web_kit.libs.doc_element_type import DocElementType -from llm_web_kit.libs.logger import mylogger -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( +from llm_web_kit.exception.exception import HtmlImageRecognizerException +from llm_web_kit.extractor.html.recognizer.recognizer import ( BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.libs.doc_element_type import DocElementType class ImageRecognizer(BaseHTMLElementRecognizer): @@ -21,7 +18,7 @@ class ImageRecognizer(BaseHTMLElementRecognizer): IMG_LABEL = ['.jpg', '.jpeg', '.png', '.gft', '.webp', '.bmp', '.svg', 'data:image', '.gif'] # '.pdf' @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: """将content转换成content_list_node. 每种类型的html元素都有自己的content-list格式:参考 docs/specification/output_format/content_list_spec.md 例如代码的返回格式: @@ -46,14 +43,14 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm Returns: dict: content_list_node """ - html_obj = self._build_html_tree(parsed_content) - if html_obj is None: - raise ValueError(f'Failed to load html: {parsed_content}') + # html_obj = self._build_html_tree(parsed_content) + html_obj = parsed_content if html_obj.tag == CCTag.CC_IMAGE: return self.__ccimg_to_content_list(raw_html_segment, html_obj) else: - raise ValueError(f'No ccimage element found in content: {parsed_content}') + HtmlImageRecognizerException(f'No ccimage element found in content: {parsed_content}') + raise HtmlImageRecognizerException(f'No ccimage element found in content: {parsed_content}') def __ccimg_to_content_list(self, raw_html_segment: str, html_obj: HtmlElement) -> dict: result = { @@ -67,11 +64,10 @@ def __ccimg_to_content_list(self, raw_html_segment: str, html_obj: HtmlElement) 'caption': html_obj.get('caption') } } - # print(f'content: {result["content"]}') return result @override - def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_html: str) -> List[Tuple[str, str]]: + def recognize(self, base_url: str, main_html_lst: List[Tuple[HtmlElement, HtmlElement]], raw_html: str) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析图片元素. Args: @@ -83,23 +79,20 @@ def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_htm """ ccimg_html = list() for html_li in main_html_lst: - try: - if self.is_cc_html(html_li[0]): - ccimg_html.append(html_li) + if self.is_cc_html(html_li[0]): + ccimg_html.append(html_li) + else: + new_html_li = self.__parse_html_img(base_url, html_li) + if new_html_li: + ccimg_html.extend(new_html_li) else: - new_html_li = self.__parse_html_img(base_url, html_li) - if new_html_li: - ccimg_html.extend(new_html_li) - else: - ccimg_html.append(html_li) - except Exception as e: - mylogger.exception(f'recognizer image failed: {e}') - raise Exception(f'recognizer image failed: {e}') + ccimg_html.append(html_li) return ccimg_html - def __parse_html_img(self, base_url: str, html_str: Tuple[str, str]) -> List[Tuple[str, str]]: + def __parse_html_img(self, base_url: str, html_str: Tuple[HtmlElement, HtmlElement]) -> List[Tuple[HtmlElement, HtmlElement]]: """解析html,获取img标签.""" - html_obj = self._build_html_tree(html_str[0]) + # html_obj = self._build_html_tree(html_str[0]) + html_obj = html_str[0] image_related_selectors = [ '//*[contains(@class, "image-embed") or contains(@id, "image-embed")]', # 可能包含嵌入图片的自定义标签 '//*[starts-with(@src, "data:image/") and not(self::img)]', @@ -135,7 +128,6 @@ def __parse_img_elements(self, base_url: str, img_elements: HtmlElement, html_ob for elem in img_elements: tag = elem.tag raw_img_html = self._element_to_html(elem) - # mylogger.info(f'raw_img_html: {raw_img_html}') attributes = { 'by': tag, 'html': raw_img_html, # 保留原始 标签作为属性值 @@ -173,22 +165,13 @@ def __parse_img_elements(self, base_url: str, img_elements: HtmlElement, html_ob img_tag.append(CCTag.CC_IMAGE) is_valid_img = True - # attributes = {k: self.__clean_xml_string(v) for k, v in attributes.items()} img_text, img_tail = self.__parse_text_tail(attributes) - try: - new_ccimage = self._build_cc_element(CCTag.CC_IMAGE, img_text, img_tail, **attributes) - except Exception as e: - mylogger.exception(f'build_cc_element failed: {e}') - raise Exception(f'build_cc_element failed: {e}') - # mylogger.info(f'new_ccimage:{self._element_to_html(new_ccimage)}') - try: - self._replace_element(elem, new_ccimage) - except Exception as e: - mylogger.exception(f'replace img element fail: {e}') - raise Exception(f'replace img element fail: {e}') + new_ccimage = self._build_cc_element(CCTag.CC_IMAGE, img_text, img_tail, **attributes) + self._replace_element(elem, new_ccimage) if is_valid_img: - updated_html = self._element_to_html(html_obj) + # updated_html = self._element_to_html(html_obj) + updated_html = html_obj return (updated_html, img_tag) else: return (None, None) @@ -201,7 +184,6 @@ def __parse_img_attr(self, base_url: str, elem: HtmlElement, attributes: dict): if text.startswith('data:image'): attributes['text'] = text attributes['format'] = 'base64' - # attributes['text'] = re.search(r'base64[, ]?(.*)', text).group(1) else: attributes['text'] = self.__get_full_image_url(base_url, text) common_attributes = ['alt', 'title', 'width', 'height'] # , 'src', 'style', 'data-src', 'srcset' @@ -226,7 +208,11 @@ def __parse_img_text(self, elem_attributes: dict): return text def __parse_svg_img_attr(self, elem: HtmlElement, attributes: dict): - svg_img = self.__svg_to_base64(attributes['html']) + if [k for k, v in elem.attrib.items() if k == 'xmlns']: + elem.attrib.pop('xmlns') + svg_img = self.__svg_to_base64(self._element_to_html(elem)) + else: + svg_img = self.__svg_to_base64(attributes['html']) if svg_img: attributes['text'] = svg_img attributes['format'] = 'base64' @@ -237,15 +223,8 @@ def __parse_svg_img_attr(self, elem: HtmlElement, attributes: dict): if elem.get(attr) is not None: attributes[attr] = elem.get(attr) - def __clean_xml_string(self, s): - """清洗html数据,统一标准的unicode编码,移除NULL字节和其他控制字符.""" - s = html.unescape(s) - return ''.join(c for c in s if ord(c) >= 32) - def __parse_text_tail(self, attributes: dict) -> Tuple[str, str]: """解析img标签的text&tail值.""" - if not attributes: - raise ZeroDivisionError text = attributes.pop('text') if attributes.get('text') else '' tail = attributes.pop('tail') if attributes.get('tail') else '' return (text, tail) @@ -275,44 +254,4 @@ def __svg_to_base64(self, svg_content: str) -> str: f'base64,{base64_data}' ) except ValueError: - mylogger.info(f'value error, The SVG size is undefined: {svg_content}') - except Exception as e: - mylogger.exception(f'svg_to_base64 failed: {e}, error data: {svg_content}') - raise Exception(f'svg_to_base64 failed: {e}') - - -def read_gz_and_parse_json_line_by_line(file_path): - try: - # 使用 gzip.open() 读取 .gz 文件 - with gzip.open(file_path, 'rt', encoding='utf-8') as gz_file: - for line in gz_file: - # 解析每一行 JSON 数据 - json_line = json.loads(line) - yield json_line - except Exception as e: - print(f'Error reading or parsing the file: {e}') - - -if __name__ == '__main__': - img = ImageRecognizer() - path = r'C:\Users\renpengli\Downloads\CC_benchmark_test_v014_part-676e680976e0-000000.jsonl.gz' - - idx = 0 - num = 0 - for html_d in read_gz_and_parse_json_line_by_line(path): - idx += 1 - # if idx < num: - # continue - # if idx > num: - # break - if idx < num: - continue - if idx > 5000: - break - print(f"start analysis idx: {idx}, url: {html_d['url']}") - # print(html_d['html']) - res = img.recognize(html_d['url'], [(html_d['html'], html_d['html'])], html_d['html']) - # parsed_content = """http://s201.ucoz.net/img/cp/6.gif""" - # res = img.to_content_list_node(html_d["url"], parsed_content, html_d["html"]) - print(f'res size: {len(res)}') -# 43 svg, figure -- 21, 92 picture --53, 69 base64--186, 62 svg--26, table -- 1 + pass diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/list.py b/llm_web_kit/extractor/html/recognizer/list.py similarity index 71% rename from llm_web_kit/pipeline/extractor/html/recognizer/list.py rename to llm_web_kit/extractor/html/recognizer/list.py index 3bd63b5c..2615f60e 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/list.py +++ b/llm_web_kit/extractor/html/recognizer/list.py @@ -1,18 +1,19 @@ import json -from typing import List, Tuple +from typing import Any, List, Tuple -from lxml.etree import _Element as HtmlElement +from lxml.html import HtmlElement from overrides import override -from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( +from llm_web_kit.exception.exception import HtmlListRecognizerException +from llm_web_kit.extractor.html.recognizer.recognizer import ( BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType class ListRecognizer(BaseHTMLElementRecognizer): """解析列表元素.""" - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: """专化为列表元素的解析. Args: @@ -22,20 +23,23 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm Returns: """ - ordered, content_list, _ = self.__get_attribute(parsed_content) + if not isinstance(parsed_content, HtmlElement): + raise HtmlListRecognizerException(f'parsed_content 必须是 HtmlElement 类型,而不是 {type(parsed_content)}') + ordered, content_list, _, list_nest_level = self.__get_attribute(parsed_content) ele_node = { 'type': DocElementType.LIST, 'raw_content': raw_html_segment, 'content': { 'items': content_list, - 'ordered': ordered + 'ordered': ordered, + 'list_nest_level': list_nest_level } } return ele_node @override - def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_html: str) -> List[Tuple[str, str]]: + def recognize(self, base_url: str, main_html_lst: List[Tuple[HtmlElement, HtmlElement]], raw_html: str) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析列表元素. Args: @@ -55,7 +59,7 @@ def recognize(self, base_url: str, main_html_lst: List[Tuple[str, str]], raw_htm new_html_lst.extend(lst) return new_html_lst - def _extract_list(self, raw_html: str) -> List[Tuple[str, str]]: + def _extract_list(self, raw_html: HtmlElement) -> List[Tuple[HtmlElement, HtmlElement]]: """提取列表元素. 不支持嵌套列表,如果有嵌套的情况,则内部列表将作为一个单独的段落,内部列表的每个列表项作为一个单独的句子,使用句号结尾。 列表在html中有以下几个标签: @@ -68,12 +72,13 @@ def _extract_list(self, raw_html: str) -> List[Tuple[str, str]]: Returns: List[Tuple[str, str]]: 列表元素, 第一个str是xxx, 第二个str是原始的html内容 """ - tree = self._build_html_tree(raw_html) + # tree = self._build_html_tree(raw_html) + tree = raw_html self.__do_extract_list(tree) # 最后切割html - new_html = self._element_to_html(tree) + # new_html = self._element_to_html(tree) + new_html = tree lst = self.html_split_by_tags(new_html, CCTag.CC_LIST) - return lst def __do_extract_list(self, root:HtmlElement) -> None: @@ -88,16 +93,16 @@ def __do_extract_list(self, root:HtmlElement) -> None: list_tag_names = ['ul', 'ol', 'dl', 'menu', 'dir'] if root.tag in list_tag_names: - is_ordered, content_list, raw_html, tail_text = self.__extract_list_element(root) + list_nest_level, is_ordered, content_list, raw_html, tail_text = self.__extract_list_element(root) text = json.dumps(content_list, ensure_ascii=False, indent=4) - cc_element = self._build_cc_element(CCTag.CC_LIST, text, tail_text, ordered=is_ordered, html=raw_html) + cc_element = self._build_cc_element(CCTag.CC_LIST, text, tail_text, ordered=is_ordered, list_nest_level=list_nest_level, html=raw_html) self._replace_element(root, cc_element) # cc_element 替换掉原来的列表元素 return for child in root.iterchildren(): self.__do_extract_list(child) - def __extract_list_element(self, ele: HtmlElement) -> Tuple[bool, list, str, str]: + def __extract_list_element(self, ele: HtmlElement) -> tuple[int, bool, list[list[list]], str, Any]: """ 提取列表元素: 假如有如下列表: @@ -135,6 +140,7 @@ def __extract_list_element(self, ele: HtmlElement) -> Tuple[bool, list, str, str (bool, str, str): 第一个元素是是否有序; 第二个元素是个python list,内部是文本和行内公式,具体格式参考list的content_list定义。第三个元素是列表原始的html内容 """ is_ordered = ele.tag in ['ol', 'dl'] + list_nest_level = self.__get_list_type(ele) tail_text = ele.tail content_list = [] raw_html = self._element_to_html(ele) @@ -144,7 +150,38 @@ def __extract_list_element(self, ele: HtmlElement) -> Tuple[bool, list, str, str text_paragraph = self.__extract_list_item_text(item) content_list.append(text_paragraph) - return is_ordered, content_list, raw_html, tail_text + return list_nest_level, is_ordered, content_list, raw_html, tail_text + + def __get_list_type(self, list_ele:HtmlElement) -> int: + """获取list嵌套的层级。 + + 计算一个列表元素的最大嵌套深度,通过递归遍历所有子元素。 + 例如: + - 没有嵌套的列表返回1 + - 有一层嵌套的列表返回2 + - 有两层嵌套的列表返回3 + + Args: + list_ele: 列表HTML元素 + + Returns: + int: 列表的最大嵌套深度 + """ + list_type = ['ul', 'ol', 'dl', 'menu', 'dir'] + + def get_max_depth(element): + max_child_depth = 0 + for child in element.iterchildren(): + if child.tag in list_type: + # 找到嵌套列表,其深度至少为1 + child_depth = 1 + get_max_depth(child) + max_child_depth = max(max_child_depth, child_depth) + else: + # 对非列表元素递归检查其子元素 + child_depth = get_max_depth(child) + max_child_depth = max(max_child_depth, child_depth) + return max_child_depth + return get_max_depth(list_ele) + 1 def __extract_list_item_text(self, root:HtmlElement) -> list[list]: """提取列表项的文本. @@ -185,7 +222,7 @@ def __extract_list_item_text_recusive(el: HtmlElement) -> list[list]: return text_paragraph - def __get_attribute(self, html:str) -> Tuple[bool, dict, str]: + def __get_attribute(self, html:HtmlElement) -> Tuple[bool, dict, str]: """获取element的属性. Args: @@ -194,12 +231,13 @@ def __get_attribute(self, html:str) -> Tuple[bool, dict, str]: Returns: Tuple[str]: 第一个元素是是否有序; 第二个元素是个python list,内部是文本和行内公式,具体格式参考list的content_list定义。第三个元素是列表原始的html内容 """ - ele = self._build_html_tree(html) + # ele = self._build_html_tree(html) + ele = html if ele is not None and ele.tag == CCTag.CC_LIST: ordered = ele.attrib.get('ordered', 'False') in ['True', 'true'] content_list = json.loads(ele.text) raw_html = ele.attrib.get('html') - return ordered, content_list, raw_html + list_nest_level = ele.attrib.get('list_nest_level', 0) + return ordered, content_list, raw_html, list_nest_level else: - # TODO 抛出异常, 需要自定义 - raise ValueError(f'{html}中没有cctitle标签') + raise HtmlListRecognizerException(f'{html}中没有cctitle标签') diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/recognizer.py b/llm_web_kit/extractor/html/recognizer/recognizer.py similarity index 80% rename from llm_web_kit/pipeline/extractor/html/recognizer/recognizer.py rename to llm_web_kit/extractor/html/recognizer/recognizer.py index d8a4b7c8..6ab1a5ef 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/recognizer.py +++ b/llm_web_kit/extractor/html/recognizer/recognizer.py @@ -5,6 +5,7 @@ from lxml.html import HtmlElement, HTMLParser from llm_web_kit.libs.html_utils import (build_cc_element, element_to_html, + element_to_html_unescaped, html_to_element, replace_element) from llm_web_kit.libs.logger import mylogger @@ -28,7 +29,7 @@ class BaseHTMLElementRecognizer(ABC): """基本的元素解析类.""" @abstractmethod - def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: + def recognize(self, base_url:str, main_html_lst: List[Tuple[HtmlElement, HtmlElement]], raw_html:str) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析html中的元素. Args: @@ -37,11 +38,12 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: raw_html: 原始完整的html Returns: + List[Tuple[HtmlElement, HtmlElement]]: 处理后的HTML元素列表 """ raise NotImplementedError @abstractmethod - def to_content_list_node(self, base_url:str, parsed_content: str, raw_html_segment:str) -> dict: + def to_content_list_node(self, base_url:str, parsed_content: HtmlElement, raw_html_segment:str) -> dict: """将content转换成content_list_node. 每种类型的html元素都有自己的content-list格式:参考 docs/specification/output_format/content_list_spec.md 例如代码的返回格式: @@ -90,6 +92,10 @@ def _element_to_html(self, element: HtmlElement) -> str: """ return element_to_html(element) + def _element_to_html_entity(self, element: HtmlElement) -> str: + """将element转换成html字符串.""" + return element_to_html_unescaped(element) + def _build_cc_element(self, html_tag_name: str, text: str, tail: str, **kwargs) -> HtmlElement: """构建cctitle的html. 例如:标题1 @@ -114,7 +120,7 @@ def _replace_element(self, element:HtmlElement, cc_element:HtmlElement) -> None: replace_element(element, cc_element) @staticmethod - def html_split_by_tags(html_segment: str, split_tag_names:str | list) -> List[Tuple[str,str]]: + def html_split_by_tags(root: HtmlElement, split_tag_names:str | list) -> List[Tuple[HtmlElement,HtmlElement]]: """根据split_tag_name将html分割成不同的部分. Args: @@ -122,7 +128,7 @@ def html_split_by_tags(html_segment: str, split_tag_names:str | list) -> List[Tu split_tag_names: str|list: 分割标签名, 例如 'p' 或者 'div' 或者 ['p', 'div'] """ copy_attri = True # 是否copy 父节点的属性 - root = html_to_element(html_segment) + # root = html_to_element(html_segment) if isinstance(split_tag_names, str): # 如果参数是str,转换成list split_tag_names = [split_tag_names] @@ -179,7 +185,8 @@ def __split_node(elem: HtmlElement): for sub_elem in elem: if sub_elem.tag in split_tag_names: # previous elements - nodes = raw_nodes = element_to_html(path[0]) + # nodes = raw_nodes = element_to_html(path[0]) + nodes = raw_nodes = path[0] if not __is_element_text_empty(path[0]): yield nodes, raw_nodes @@ -191,7 +198,11 @@ def __split_node(elem: HtmlElement): if not html_source_segment: mylogger.error(f'{sub_elem.tag} has no html attribute') # TODO raise exception - nodes, raw_nodes = element_to_html(path[0]), html_source_segment + # nodes, raw_nodes = element_to_html(path[0]), html_source_segment + if html_source_segment: + nodes, raw_nodes = path[0], html_to_element(html_source_segment) + else: + nodes, raw_nodes = path[0], None # if not __is_element_text_empty(path[0]): yield nodes, raw_nodes # 这个地方无需检查是否为空,因为这个是分割元素,必须返还 @@ -208,7 +219,8 @@ def __split_node(elem: HtmlElement): copied.tail = elem.tail if not path: - nodes = raw_nodes = element_to_html(copied) + nodes = raw_nodes = copied + # raw_nodes = element_to_html(copied) if not __is_element_text_empty(copied): yield nodes, raw_nodes @@ -216,30 +228,38 @@ def __split_node(elem: HtmlElement): return rtn @staticmethod - def is_cc_html(html: str, tag_name: str | list = None) -> bool: + def is_cc_html(el: HtmlElement, tag_name: str | list = None) -> bool: """判断html片段是否是cc标签. 判断的时候由于自定义ccmath等标签可能会含有父标签,因此要逐层判断tagname. 含有父html 完整路径的如:...,这种情况也会被识别为cc标签. - TODO 保证进来的cc标签没有父标签,只有一个根标签。 + Args: - html: str: html片段 + el: str|HtmlElement: html片段或HtmlElement对象 tag_name: str|list: cc标签,如ccmath, cccode, 如果指定了那么就只检查这几个标签是否在html里,否则检查所有cc标签 """ - # cc标签是指自定义标签,例如等,输入html片段,判断是否是cc标签 - el = html_to_element(html) if el is None: return False + # 默认cc标签列表 + default_tag_names = [ + CCTag.CC_CODE, CCTag.CC_MATH_INTERLINE, CCTag.CC_IMAGE, CCTag.CC_VIDEO, + CCTag.CC_AUDIO, CCTag.CC_TABLE, CCTag.CC_LIST, CCTag.CC_TEXT, CCTag.CC_TITLE + ] + + # 确定需要检查的标签集合 if tag_name: if isinstance(tag_name, str): - tag_to_check = [tag_name] + tags = {tag_name} else: - tag_to_check = tag_name + tags = set(tag_name) else: - tag_to_check = [CCTag.CC_CODE, CCTag.CC_MATH_INTERLINE, CCTag.CC_IMAGE, CCTag.CC_VIDEO, CCTag.CC_AUDIO, CCTag.CC_TABLE, CCTag.CC_LIST, CCTag.CC_TEXT, CCTag.CC_TITLE] + tags = set(default_tag_names) + + # 如果当前元素的标签匹配,直接返回True + if el.tag in tags: + return True - for tag in tag_to_check: - if el.tag == tag or el.xpath(f'.//{tag}') : - return True - return False + # 构建XPath表达式,检查子元素是否包含目标标签 + xpath_expr = ' or '.join([f'self::{tag}' for tag in tags]) + return bool(el.xpath(f'.//*[{xpath_expr}]')) diff --git a/llm_web_kit/extractor/html/recognizer/table.py b/llm_web_kit/extractor/html/recognizer/table.py new file mode 100644 index 00000000..3effe18a --- /dev/null +++ b/llm_web_kit/extractor/html/recognizer/table.py @@ -0,0 +1,301 @@ +from itertools import chain +from typing import Any, List, Tuple + +from lxml.html import HtmlElement +from overrides import override + +from llm_web_kit.exception.exception import HtmlTableRecognizerException +from llm_web_kit.extractor.html.recognizer.ccmath import MathRecognizer +from llm_web_kit.extractor.html.recognizer.recognizer import ( + BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.libs.doc_element_type import DocElementType +from llm_web_kit.libs.html_utils import remove_element + + +class TableRecognizer(BaseHTMLElementRecognizer): + """解析table元素.""" + + def __init__(self): + super().__init__() + self.math_recognizer = MathRecognizer() + + @override + def recognize(self, + base_url: str, + main_html_lst: List[Tuple[HtmlElement, HtmlElement]], + raw_html: str) -> List[Tuple[HtmlElement, HtmlElement]]: + """父类,解析表格元素. + + Args: + base_url: str: 基础url + main_html_lst: main_html在一层一层的识别过程中,被逐步分解成不同的元素 + raw_html: 原始完整的html + + Returns: + List[Tuple[HtmlElement, HtmlElement]]: 处理后的HTML元素列表 + """ + final_result = list() + for cc_html, o_html in main_html_lst: + if self.__is_contain_cc_html(cc_html): + final_result.append((cc_html, o_html)) + else: + lst = self.__extract_tables(cc_html) + final_result.extend(lst) + return final_result + + @override + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: + if not isinstance(parsed_content, HtmlElement): + raise HtmlTableRecognizerException(f'parsed_content 必须是 HtmlElement 类型,而不是 {type(parsed_content)}') + + table_type, table_nest_level, table_body = self.__get_attribute(parsed_content) + + # 确保 table_body 不为 None 且是字符串类型 + html_content = table_body if table_body is not None else '' + # 使用传入的 raw_html_segment 或将 parsed_content 转换为字符串 + if table_type: + cc_table_type = DocElementType.COMPLEX_TABLE + else: + cc_table_type = DocElementType.SIMPLE_TABLE + d = { + 'type': cc_table_type, + 'raw_content': raw_html_segment, + 'content': { + 'html': html_content, + 'is_complex': table_type, + 'table_nest_level': table_nest_level + } + } + return d + + def __is_contain_cc_html(self, cc_html: HtmlElement) -> bool: + """判断html片段是否是cc标签.""" + return BaseHTMLElementRecognizer.is_cc_html(cc_html) + + def __is_table_empty(self, table: HtmlElement) -> bool: + """table是否为空.""" + # 合并单元格查询 + cells = table.xpath('.//td | .//th') + for cell in cells: + if cell.text and cell.text.strip(): + return False + stack = [cell] + while stack: + elem = stack.pop() + if elem.text and elem.text.strip(): + return False + if elem.tail and elem.tail.strip(): + return False + # 添加子元素到栈中(倒序保证处理顺序) + stack.extend(reversed(elem.getchildren())) + return True + + def __is_simple_table(self, tree: HtmlElement) -> bool: + """处理table元素,判断是是否复杂:是否包含合并单元格.""" + print('tree', self._element_to_html(tree)) + cells = tree.xpath('.//td | .//th') + for cell in cells: + colspan_str = cell.get('colspan', '1').strip('"\'\\') + rowspan_str = cell.get('rowspan', '1').strip('"\'\\') + try: + colspan = int(colspan_str) + rowspan = int(rowspan_str) + except ValueError as e: + raise HtmlTableRecognizerException( + f'table的合并单元格属性值colspan:{colspan_str}或rowspan:{rowspan_str}不是有效的整数') from e + if (colspan > 1) or (rowspan > 1): + return False + return True + + def __is_table_nested(self, element: HtmlElement) -> int: + """计算表格的嵌套层级.""" + if element.tag != 'table': + return 0 + + # 初始化栈结构:存储(当前元素, 当前层级) + stack = [(element, 1)] + max_level = 1 + + # 深度优先遍历 + while stack: + current, current_level = stack.pop() + # 更新最大层级 + max_level = max(max_level, current_level) + # 遍历子元素(倒序保证处理顺序) + for child in reversed(current.getchildren()): + if child.tag == 'table': + # 遇到子表格时层级+1 + stack.append((child, current_level + 1)) + else: + # 非表格元素保持当前层级 + stack.append((child, current_level)) + return max_level + + def __extract_tables(self, tree: HtmlElement) -> List[Tuple[HtmlElement, HtmlElement]]: + """提取html中的table元素.""" + self.__do_extract_tables(tree) + new_html = tree + lst = self.html_split_by_tags(new_html, CCTag.CC_TABLE) + return lst + + def __get_table_type(self, child: HtmlElement) -> str: + """获取table的类型.""" + assert isinstance(child, HtmlElement) + empty_flag = self.__is_table_empty(child) + if empty_flag: + return 'empty' + level = self.__is_table_nested(child) + # 是否跨行跨列 + flag = (self.__is_simple_table(child) and level < 2) + if flag: + table_type = 'simple' + else: + table_type = 'complex' + return table_type + + def __check_table_include_math_code(self, raw_html: HtmlElement): + """检查table中的内容,包括普通文本、数学公式和代码.""" + math_raw_html = self._element_to_html(raw_html) + math_html = raw_html + math_res_parts = self.math_recognizer.recognize( + base_url='', + main_html_lst=[(math_html, math_html)], + raw_html=math_raw_html + ) + result = [] + for math_item in math_res_parts: + ele_item = math_item[0] + + def process_node(node): + """处理行内公式、行间公式、行间代码、行内代码.""" + if node.tag == CCTag.CC_MATH_INLINE: + if node.text and node.text.strip(): + result.append(f'${node.text.strip()}$') + if node.tail and node.tail.strip(): + result.append(node.tail.strip()) + # 处理行间公式 + elif node.tag == CCTag.CC_MATH_INTERLINE: + if node.text and node.text.strip(): + result.append(f'$${node.text.strip()}$$') + if node.tail and node.tail.strip(): + result.append(node.tail.strip()) + # 处理行间代码 + elif node.tag == CCTag.CC_CODE: + if node.text and node.text.strip(): + result.append(f'```{node.text.strip()}```') + if node.tail and node.tail.strip(): + result.append(node.tail.strip()) + # 处理行内代码 + elif node.tag == CCTag.CC_CODE_INLINE: + if node.text and node.text.strip(): + result.append(f'`{node.text.strip()}`') + if node.tail and node.tail.strip(): + result.append(node.tail.strip()) + else: + # 提取当前节点的文本 + if node.text and node.text.strip(): + cleaned_text = node.text.strip().replace('\\n', '') + result.append(cleaned_text) + # 处理节点的tail(元素闭合后的文本) + if node.tail and node.tail.strip(): + cleaned_tail = node.tail.strip().replace('\\n', '') + result.append(cleaned_tail) + # 递归处理子节点 + for child in node: + process_node(child) + # 从根节点开始处理 + process_node(ele_item) + return result + + def __simplify_td_th_content(self, table_nest_level, elem: HtmlElement) -> None: + """简化 和 内容,保留嵌套表格结构.""" + if elem.tag in ['td', 'th']: + parse_res = [] + # 检查是否存在嵌套的表格 + if table_nest_level > 1: + # 存在嵌套表格,递归处理子节点 + for child in elem.iterchildren(): + if child.tag == 'table': + # 对嵌套表格递归调用简化处理 + self.__simplify_td_th_content(table_nest_level, child) + else: + # 处理非表格元素 + math_res = self.__check_table_include_math_code(child) + parse_res.extend(math_res) + remove_element(child) + # 将非表格内容拼接后放在表格前面 + if parse_res: + elem.text = ' '.join(parse_res) + else: + # 没有嵌套表格,直接简化 + math_res = self.__check_table_include_math_code(elem) + parse_res.extend(math_res) + for item in list(elem.iterchildren()): + remove_element(item) + if parse_res: + elem.text = ' '.join(parse_res) + return + # 非 td/th 元素继续递归处理 + for child in elem.iterchildren(): + self.__simplify_td_th_content(table_nest_level, child) + + def __get_table_body(self, table_type, table_nest_level, table_root): + """获取并处理table body,返回处理后的HTML字符串。""" + if table_type == 'empty': + return None + allowed_attributes = ['colspan', 'rowspan'] + # 清理除了colspan和rowspan之外的属性 + if len(table_root.attrib) > 0: + cleaned_attrs = {k: v for k, v in table_root.attrib.items() if k in allowed_attributes} + table_root.attrib.clear() + table_root.attrib.update(cleaned_attrs) + # text进行strip操作,tail保留(部分内容留在tail中) + for elem in chain([table_root], table_root.iterchildren()): + if elem.text is not None: + elem.text = elem.text.strip().replace('\\n', '') + if elem.tail is not None: + elem.tail = elem.tail.strip().replace('\\n', '') + # 单元格内的多标签内容进行简化,空格拼接,公式、代码识别 + self.__simplify_td_th_content(table_nest_level, table_root) + # 迭代 + for child in table_root.iterchildren(): + if child is not None: + self.__get_table_body(table_type, table_nest_level, child) + return self._element_to_html_entity(table_root) + + def __do_extract_tables(self, root: HtmlElement) -> None: + """递归处理所有子标签.""" + if root.tag in ['table']: + table_raw_html = self._element_to_html(root) + table_type = self.__get_table_type(root) + table_nest_level = self.__is_table_nested(root) + tail_text = root.tail + table_body = self.__get_table_body(table_type, table_nest_level, root) + cc_element = self._build_cc_element( + CCTag.CC_TABLE, table_body, tail_text, table_type=table_type, table_nest_level=table_nest_level, + html=table_raw_html) + self._replace_element(root, cc_element) + return + for child in root.iterchildren(): + self.__do_extract_tables(child) + + def __get_attribute(self, ele: HtmlElement) -> Tuple[bool, Any, Any]: + """获取element的属性.""" + # ele = self._build_html_tree(html) + if ele is not None and ele.tag == CCTag.CC_TABLE: + table_type = ele.attrib.get('table_type') + table_nest_level = ele.attrib.get('table_nest_level') + table_flag = self.__get_content_list_table_type(table_type) + table_body = ele.text + return table_flag, table_nest_level, table_body + else: + raise HtmlTableRecognizerException(f'{ele}中没有cctable标签') + + def __get_content_list_table_type(self, table_type): + """complex|simple 转为True|False.""" + is_complex = False + if table_type == 'simple': + is_complex = False + elif table_type == 'complex': + is_complex = True + return is_complex diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/text.py b/llm_web_kit/extractor/html/recognizer/text.py similarity index 73% rename from llm_web_kit/pipeline/extractor/html/recognizer/text.py rename to llm_web_kit/extractor/html/recognizer/text.py index be287015..a5da0a96 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/text.py +++ b/llm_web_kit/extractor/html/recognizer/text.py @@ -2,14 +2,14 @@ import string from typing import List, Tuple -from lxml import etree +from lxml import html from lxml.html import HtmlElement from overrides import override -from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType -from llm_web_kit.libs.html_utils import element_to_html -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( +from llm_web_kit.extractor.html.recognizer.recognizer import ( BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType +from llm_web_kit.libs.html_utils import element_to_html, html_to_element special_symbols = [ # TODO 从文件读取 '®', # 注册商标符号 @@ -37,32 +37,35 @@ '☁' # 云符号 ] +PARAGRAPH_SEPARATOR = '\n\n' + class TextParagraphRecognizer(BaseHTMLElementRecognizer): """解析文本段落元素.""" @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: """ 把文本段落元素转换为content list node. Args: base_url: - parsed_content: + parsed_content: 可能是字符串或HtmlElement对象 raw_html_segment: Returns: """ - el = self._build_html_tree(parsed_content) + # 如果是字符串则转换为HtmlElement,否则直接使用 + el = parsed_content node = { 'type': DocElementType.PARAGRAPH, - 'raw_content': el.attrib.get('html', ''), + 'raw_content': raw_html_segment, 'content': json.loads(el.text), } return node @override - def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: + def recognize(self, base_url:str, main_html_lst: List[Tuple[HtmlElement | str, HtmlElement | str]], raw_html:str) -> List[Tuple[HtmlElement, HtmlElement]]: """父类,解析文本段落元素. Args: @@ -73,31 +76,32 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: Returns: """ new_html_lst = [] - for html, raw_html in main_html_lst: - if self.is_cc_html(html): - new_html_lst.append((html, raw_html)) + for html_element, raw_html_element in main_html_lst: + # 如果是字符串则转换为 HtmlElement + if self.is_cc_html(html_element): + new_html_lst.append((html_element, raw_html_element)) else: - root_el = self._build_html_tree(html) - lst = list(self.__extract_paragraphs(root_el)) - # 然后对lst[Element, raw_html] 进行处理. 提出Element里的文字,做成<>标签 + lst = list(self.__extract_paragraphs(html_element)) new_lst = self.__to_cctext_lst(lst) new_html_lst.extend(new_lst) return new_html_lst - def __to_cctext_lst(self, lst: List[Tuple[HtmlElement, str]]) -> List[Tuple[str, str]]: + def __to_cctext_lst(self, lst: List[Tuple[HtmlElement | str, HtmlElement | str]]) -> List[Tuple[HtmlElement, HtmlElement]]: """将lst[Element, raw_html] 进行处理. 提出Element里的文字,做成<>标签. Args: - lst: List[Tuple[HtmlElement, str]]: Element和raw_html组成的列表 + lst: List[Tuple[HtmlElement | str, HtmlElement | str]]: Element和raw_html组成的列表 """ new_lst = [] for el, raw_html in lst: - para_text = self.__get_paragraph_text(el) - if para_text: - cctext_el = self._build_cc_element(CCTag.CC_TEXT, json.dumps(para_text, ensure_ascii=False, indent=4), '', html=raw_html) - cc_node_html = self._element_to_html(cctext_el) - new_lst.append((cc_node_html, raw_html)) + # 如果是字符串则转换为 HtmlElement + el_element = html_to_element(el) if isinstance(el, str) else el + raw_html_element = html_to_element(raw_html) if isinstance(raw_html, str) else raw_html + para_text = self.__get_paragraph_text(el_element) + if para_text: + cctext_el = self._build_cc_element(CCTag.CC_TEXT, json.dumps(para_text, ensure_ascii=False, indent=4), '', html=element_to_html(raw_html_element)) + new_lst.append((cctext_el, raw_html_element)) return new_lst def __combine_text(self, text1:str, text2:str, lang='en') -> str: @@ -108,10 +112,11 @@ def __combine_text(self, text1:str, text2:str, lang='en') -> str: text2: str: 第二段文本 lang: str: 语言 TODO 实现根据语言连接文本的不同方式, 还有就是一些特殊符号开头的连接不加空格。 """ - text1 = text1.strip() if text1 else '' - text2 = text2.strip() if text2 else '' + text1 = text1.strip(' ') if text1 else '' + text2 = text2.strip(' ') if text2 else '' if lang == 'zh': - return text1.strip() + text2.strip() + txt = text1 + text2 + return txt.strip() else: words_sep = '' if text2[0] in string.punctuation or text2[0] in special_symbols else ' ' txt = text1 + words_sep + text2 @@ -140,13 +145,15 @@ def __get_paragraph_text_recusive(el: HtmlElement, text: str) -> str: para_text.append({'c':el.text, 't':ParagraphTextType.EQUATION_INLINE}) elif el.tag == CCTag.CC_CODE_INLINE: if text: - para_text.append({'c':text, 't':ParagraphTextType.TEXT}) + para_text.append({'c': text, 't': ParagraphTextType.TEXT}) text = '' - para_text.append({'c':el.text, 't':ParagraphTextType.CODE_INLINE}) + para_text.append({'c': el.text, 't': ParagraphTextType.CODE_INLINE}) + elif el.tag in ['br']: + text += PARAGRAPH_SEPARATOR else: if el.text and el.text.strip(): text = self.__combine_text(text, el.text.strip()) - for child in el.getchildren(): + for child in el: text = __get_paragraph_text_recusive(child, text) if el.tail and el.tail.strip(): @@ -169,7 +176,7 @@ def __extract_paragraphs(self, root: HtmlElement): 解析后的文本段落元素 """ path: List[HtmlElement] = [] - parser = etree.HTMLParser(collect_ids=False, encoding='utf-8', remove_comments=True, remove_pis=True) + parser = html.HTMLParser(collect_ids=False, encoding='utf-8', remove_comments=True, remove_pis=True) def is_contain_readable_text(text): return text.strip() if text else text @@ -220,12 +227,18 @@ def helper(elem: HtmlElement): path[-1].append(copied) path.append(copied) + # elem直接有text,则直接添加返回 + if has_direct_text(elem): + rebuild_path() + path[-1].append(copy_helper(elem)) + yield path[0], path[0] + rebuild_path() for sub_elem in elem: if has_direct_text(sub_elem) or (sub_elem.tag == 'p' and has_text(sub_elem)): rebuild_path() path[-1].append(copy_helper(sub_elem)) - yield path[0], element_to_html(path[0]) - + # yield path[0], element_to_html(path[0]) + yield path[0], path[0] # detach the yielded tree rebuild_path() continue diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/title.py b/llm_web_kit/extractor/html/recognizer/title.py similarity index 79% rename from llm_web_kit/pipeline/extractor/html/recognizer/title.py rename to llm_web_kit/extractor/html/recognizer/title.py index a92313ff..9b18bdb4 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/title.py +++ b/llm_web_kit/extractor/html/recognizer/title.py @@ -1,18 +1,19 @@ from typing import List, Tuple -from lxml.etree import _Element as HtmlElement +# from lxml.etree import _Element as HtmlElement +from lxml.html import HtmlElement from overrides import override -from llm_web_kit.libs.doc_element_type import DocElementType -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( +from llm_web_kit.extractor.html.recognizer.recognizer import ( BaseHTMLElementRecognizer, CCTag) +from llm_web_kit.libs.doc_element_type import DocElementType class TitleRecognizer(BaseHTMLElementRecognizer): """解析多级标题元素.""" @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: """将html转换成content_list_node. Args: @@ -24,6 +25,8 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm dict: content_list_node """ level, text = self.__get_attribute(parsed_content) + if not text or len(text.strip()) == 0: # 如果有的空标题存在 + return None cctitle_content_node = { 'type': DocElementType.TITLE, 'raw_content': raw_html_segment, @@ -35,8 +38,8 @@ def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segm return cctitle_content_node @override - def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: - """父类,解析多级标题元素. + def recognize(self, base_url: str, main_html_lst: List[Tuple[HtmlElement, HtmlElement]], raw_html: str) -> List[Tuple[HtmlElement, HtmlElement]]: + """父类,解析标题元素. Args: base_url: str: 基础url @@ -44,9 +47,12 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: raw_html: 原始完整的html Returns: + List[Tuple[HtmlElement, HtmlElement]]: 处理后的HTML元素列表 """ new_html_lst = [] for html, raw_html in main_html_lst: + if isinstance(html, str): + html = self._build_html_tree(html) if self.is_cc_html(html): new_html_lst.append((html, raw_html)) else: @@ -54,22 +60,19 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: new_html_lst.extend(lst) return new_html_lst - def _extract_title(self, raw_html:str) -> List[Tuple[str,str]]: - """ - 提取多级标题元素 + def _extract_title(self, raw_html: HtmlElement) -> List[Tuple[HtmlElement, HtmlElement]]: + """提取多级标题元素 Args: - raw_html: + raw_html: HtmlElement对象 Returns: - List[Tuple[str,str]]: 多级标题元素, 第一个str是xxx, 第二个str是原始的html内容 - + List[Tuple[HtmlElement, HtmlElement]]: 多级标题元素列表 """ - tree = self._build_html_tree(raw_html) - self.__do_extract_title(tree) # 遍历这个tree, 找到所有h1, h2, h3, h4, h5, h6标签, 并得到其对应的原始的html片段 + tree = raw_html + self.__do_extract_title(tree) # 遍历这个tree, 找到所有h1, h2, h3, h4, h5, h6标签 # 最后切割html - new_html = self._element_to_html(tree) + new_html = tree lst = self.html_split_by_tags(new_html, CCTag.CC_TITLE) - return lst def __do_extract_title(self, root:HtmlElement) -> None: @@ -135,9 +138,10 @@ def __extract_title_text_recusive(el: HtmlElement, with_tail: bool = True) -> li return ' '.join(blk for blk in blks if blk) - def __get_attribute(self, html:str) -> Tuple[int, str]: + def __get_attribute(self, html:HtmlElement) -> Tuple[int, str]: """获取element的属性.""" - ele = self._build_html_tree(html) + # ele = self._build_html_tree(html) + ele = html # 找到cctitle标签 if ele is not None: level = ele.attrib.get('level') diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/video.py b/llm_web_kit/extractor/html/recognizer/video.py similarity index 74% rename from llm_web_kit/pipeline/extractor/html/recognizer/video.py rename to llm_web_kit/extractor/html/recognizer/video.py index edfa6d17..bed7df5a 100644 --- a/llm_web_kit/pipeline/extractor/html/recognizer/video.py +++ b/llm_web_kit/extractor/html/recognizer/video.py @@ -1,15 +1,16 @@ from typing import List, Tuple +from lxml.html import HtmlElement from overrides import override -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import \ +from llm_web_kit.extractor.html.recognizer.recognizer import \ BaseHTMLElementRecognizer class VideoRecognizer(BaseHTMLElementRecognizer): """解析视元素.""" @override - def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html:str) -> List[Tuple[str,str]]: + def recognize(self, base_url:str, main_html_lst: List[Tuple[HtmlElement,HtmlElement]], raw_html:str) -> List[Tuple[HtmlElement,HtmlElement]]: """父类,解析视频元素. Args: @@ -22,5 +23,5 @@ def recognize(self, base_url:str, main_html_lst: List[Tuple[str,str]], raw_html: raise NotImplementedError @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: + def to_content_list_node(self, base_url: str, parsed_content: HtmlElement, raw_html_segment: str) -> dict: raise NotImplementedError diff --git a/llm_web_kit/pipeline/extractor/md/__init__.py b/llm_web_kit/extractor/md/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/md/__init__.py rename to llm_web_kit/extractor/md/__init__.py diff --git a/llm_web_kit/pipeline/extractor/md/extractor.py b/llm_web_kit/extractor/md/extractor.py similarity index 93% rename from llm_web_kit/pipeline/extractor/md/extractor.py rename to llm_web_kit/extractor/md/extractor.py index 6d185567..86a4c15a 100644 --- a/llm_web_kit/pipeline/extractor/md/extractor.py +++ b/llm_web_kit/extractor/md/extractor.py @@ -2,8 +2,8 @@ """Actual data extraction main program.""" from overrides import override +from llm_web_kit.extractor.extractor import BaseFileFormatExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.extractor import BaseFileFormatExtractor class MDFileFormatExtractor(BaseFileFormatExtractor): diff --git a/llm_web_kit/pipeline/extractor/md/post_extractor.py b/llm_web_kit/extractor/md/post_extractor.py similarity index 91% rename from llm_web_kit/pipeline/extractor/md/post_extractor.py rename to llm_web_kit/extractor/md/post_extractor.py index 1e02c6ca..1934c75b 100644 --- a/llm_web_kit/pipeline/extractor/md/post_extractor.py +++ b/llm_web_kit/extractor/md/post_extractor.py @@ -2,9 +2,8 @@ """Data extraction post-processing program.""" from overrides import override +from llm_web_kit.extractor.post_extractor import BaseFileFormatPostExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.post_extractor import \ - BaseFileFormatPostExtractor class MDFileFormatPostExtractor(BaseFileFormatPostExtractor): diff --git a/llm_web_kit/pipeline/extractor/md/pre_extractor.py b/llm_web_kit/extractor/md/pre_extractor.py similarity index 94% rename from llm_web_kit/pipeline/extractor/md/pre_extractor.py rename to llm_web_kit/extractor/md/pre_extractor.py index 76514abe..d9402774 100644 --- a/llm_web_kit/pipeline/extractor/md/pre_extractor.py +++ b/llm_web_kit/extractor/md/pre_extractor.py @@ -2,9 +2,9 @@ """Data extraction pre-processing program.""" from overrides import override -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.pre_extractor import \ +from llm_web_kit.extractor.pre_extractor import \ BaseFileFormatFilterPreExtractor +from llm_web_kit.input.datajson import DataJson class MDFileFormatFilterPreExtractor(BaseFileFormatFilterPreExtractor): diff --git a/llm_web_kit/pipeline/extractor/pdf/__init__.py b/llm_web_kit/extractor/pdf/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/pdf/__init__.py rename to llm_web_kit/extractor/pdf/__init__.py diff --git a/llm_web_kit/pipeline/extractor/pdf/extractor.py b/llm_web_kit/extractor/pdf/extractor.py similarity index 93% rename from llm_web_kit/pipeline/extractor/pdf/extractor.py rename to llm_web_kit/extractor/pdf/extractor.py index 2dd40bda..00cd5b38 100644 --- a/llm_web_kit/pipeline/extractor/pdf/extractor.py +++ b/llm_web_kit/extractor/pdf/extractor.py @@ -2,8 +2,8 @@ """Actual data extraction main program.""" from overrides import override +from llm_web_kit.extractor.extractor import BaseFileFormatExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.extractor import BaseFileFormatExtractor class PDFFileFormatExtractor(BaseFileFormatExtractor): diff --git a/llm_web_kit/pipeline/extractor/pdf/post_extractor.py b/llm_web_kit/extractor/pdf/post_extractor.py similarity index 91% rename from llm_web_kit/pipeline/extractor/pdf/post_extractor.py rename to llm_web_kit/extractor/pdf/post_extractor.py index 02419c7a..e5c5c410 100644 --- a/llm_web_kit/pipeline/extractor/pdf/post_extractor.py +++ b/llm_web_kit/extractor/pdf/post_extractor.py @@ -2,9 +2,8 @@ """Data extraction post-processing program.""" from overrides import override +from llm_web_kit.extractor.post_extractor import BaseFileFormatPostExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.post_extractor import \ - BaseFileFormatPostExtractor class PDFFileFormatPostExtractor(BaseFileFormatPostExtractor): diff --git a/llm_web_kit/pipeline/extractor/pdf/pre_extractor.py b/llm_web_kit/extractor/pdf/pre_extractor.py similarity index 94% rename from llm_web_kit/pipeline/extractor/pdf/pre_extractor.py rename to llm_web_kit/extractor/pdf/pre_extractor.py index db014af3..027cab48 100644 --- a/llm_web_kit/pipeline/extractor/pdf/pre_extractor.py +++ b/llm_web_kit/extractor/pdf/pre_extractor.py @@ -2,9 +2,9 @@ """Data extraction pre-processing program.""" from overrides import override -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.pre_extractor import \ +from llm_web_kit.extractor.pre_extractor import \ BaseFileFormatFilterPreExtractor +from llm_web_kit.input.datajson import DataJson class PDFFileFormatFilterPreExtractor(BaseFileFormatFilterPreExtractor): diff --git a/llm_web_kit/pipeline/extractor/post_extractor.py b/llm_web_kit/extractor/post_extractor.py similarity index 97% rename from llm_web_kit/pipeline/extractor/post_extractor.py rename to llm_web_kit/extractor/post_extractor.py index eb7fac00..8f5ca979 100644 --- a/llm_web_kit/pipeline/extractor/post_extractor.py +++ b/llm_web_kit/extractor/post_extractor.py @@ -2,8 +2,8 @@ from overrides import override +from llm_web_kit.extractor.base import FileTypeMatcher from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.base import FileTypeMatcher class AbstractPostExtractor(ABC): diff --git a/llm_web_kit/pipeline/extractor/pre_extractor.py b/llm_web_kit/extractor/pre_extractor.py similarity index 98% rename from llm_web_kit/pipeline/extractor/pre_extractor.py rename to llm_web_kit/extractor/pre_extractor.py index 06bcd7d9..a0251afb 100644 --- a/llm_web_kit/pipeline/extractor/pre_extractor.py +++ b/llm_web_kit/extractor/pre_extractor.py @@ -15,8 +15,8 @@ from overrides import override +from llm_web_kit.extractor.base import FileTypeMatcher from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.base import FileTypeMatcher class AbstractPreExtractor(ABC): diff --git a/llm_web_kit/pipeline/extractor/txt/__init__.py b/llm_web_kit/extractor/txt/__init__.py similarity index 100% rename from llm_web_kit/pipeline/extractor/txt/__init__.py rename to llm_web_kit/extractor/txt/__init__.py diff --git a/llm_web_kit/pipeline/extractor/txt/extractor.py b/llm_web_kit/extractor/txt/extractor.py similarity index 93% rename from llm_web_kit/pipeline/extractor/txt/extractor.py rename to llm_web_kit/extractor/txt/extractor.py index 1953aaaa..ce19b26c 100644 --- a/llm_web_kit/pipeline/extractor/txt/extractor.py +++ b/llm_web_kit/extractor/txt/extractor.py @@ -2,8 +2,8 @@ """Actual data extraction main program.""" from overrides import override +from llm_web_kit.extractor.extractor import BaseFileFormatExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.extractor import BaseFileFormatExtractor class TXTFileFormatExtractor(BaseFileFormatExtractor): diff --git a/llm_web_kit/pipeline/extractor/txt/post_extractor.py b/llm_web_kit/extractor/txt/post_extractor.py similarity index 91% rename from llm_web_kit/pipeline/extractor/txt/post_extractor.py rename to llm_web_kit/extractor/txt/post_extractor.py index b3aabac2..ae3c98dc 100644 --- a/llm_web_kit/pipeline/extractor/txt/post_extractor.py +++ b/llm_web_kit/extractor/txt/post_extractor.py @@ -2,9 +2,8 @@ """Data extraction post-processing program.""" from overrides import override +from llm_web_kit.extractor.post_extractor import BaseFileFormatPostExtractor from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.post_extractor import \ - BaseFileFormatPostExtractor class TXTFileFormatPostExtractor(BaseFileFormatPostExtractor): diff --git a/llm_web_kit/pipeline/extractor/txt/pre_extractor.py b/llm_web_kit/extractor/txt/pre_extractor.py similarity index 94% rename from llm_web_kit/pipeline/extractor/txt/pre_extractor.py rename to llm_web_kit/extractor/txt/pre_extractor.py index c6b1a133..d8e846a6 100644 --- a/llm_web_kit/pipeline/extractor/txt/pre_extractor.py +++ b/llm_web_kit/extractor/txt/pre_extractor.py @@ -2,9 +2,9 @@ """Data extraction pre-processing program.""" from overrides import override -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.pre_extractor import \ +from llm_web_kit.extractor.pre_extractor import \ BaseFileFormatFilterPreExtractor +from llm_web_kit.input.datajson import DataJson class TXTFileFormatFilterPreExtractor(BaseFileFormatFilterPreExtractor): diff --git a/llm_web_kit/html_layout_classify/__init__.py b/llm_web_kit/html_layout_classify/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/llm_web_kit/html_layout_classify/classify-spot.sh b/llm_web_kit/html_layout_classify/classify-spot.sh new file mode 100755 index 00000000..c5ed3c95 --- /dev/null +++ b/llm_web_kit/html_layout_classify/classify-spot.sh @@ -0,0 +1,138 @@ +#!/bin/bash + +command -v proxyoff >/dev/null 2>&1 && proxyoff +command -v proxy_off >/dev/null 2>&1 && proxy_off + + +function count_used_gpus(){ + all_jobs=`squeue --me -p $1` + + gpu_num=0 + for name in $all_jobs + do + if [ "$(echo $name | grep "gpu:")" != "" ];then + num="${name//gpu:/}" + gpu_num=$((($gpu_num+$num))) + fi + done + echo $gpu_num +} + + +# 函数:获取当前用户所有处于PD状态的任务数量 +get_pd_count() { + squeue -u "$USER" -t PD -h |grep spot | wc -l +} + +# 定义一个函数来计算 SPOT_USED 的总和 +calculate_total_spot_used() { + # 执行 svp list 并获取输出 + local svp_output=$(svp list) + + # 使用 awk 解析并计算 SPOT_USED 列的总和 + local total_spot_used=$(echo "$svp_output" | awk ' + NR == 1 {next} # 跳过标题行 + { + sum += $6 # 假设 SPOT_USED 是第6列 + } + END { + print sum + }') + + # 返回结果 + echo $total_spot_used +} + +calculate_total_reserved_idle() { + # 执行 svp list 并获取输出 + local svp_output=$(svp list) + + #总和 + local total_reserved_idle=$(echo "$svp_output" | awk ' + NR == 1 {next} + { + sum += $5 + } + END { + print sum + }') + # 返回结果 + echo $total_reserved_idle +} + +####################################################################################### +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --partation) + PARTATION="$2" + shift 2 + ;; + --tag) + TAG="$2" + shift 2 + ;; + --task-num) + TASK_NUM="$2" + shift 2 + ;; + --debug) + DEBUG=1 + shift 1 + ;; + --server-addr) + SERVER_ADDR="$2" + shift 2 + ;; + --result-save-dir) + RESULT_SAVE_DIR="$2" + shift 2 + ;; + *) + echo "Unknown argument: $1" + exit 1 + ;; + esac +done + +MAX_PENDING_JOBS=10 # 用户pending任务数量,不能超过这个值 +MAX_JOBS=1000 # 用户最大提交任务数量 +MY_NAME="${USER}" # 用户名 + +MY_HOME=$(echo $HOME) +SLURM_LOG_DIR=${MY_HOME}/slum-logs/${TAG} +# 创建日志目录(如果不存在) +mkdir -p ${SLURM_LOG_DIR}/logs +mkdir -p ${SLURM_LOG_DIR}/error +export SLURM_SUBMIT_DIR=${SLURM_LOG_DIR} +export LLM_WEB_KIT_CFG_PATH=/share/xuchao/.llm-web-kit-pageclassify.jsonc +TASK_NUM="${TASK_NUM:-1}" # Default to 1 if not provided +DEBUG="${DEBUG:-0}" + +# Check required arguments +if [ -z "$PARTATION" ] || [ -z "$TAG" ]; then + echo "Usage: $0 --partation --tag " + exit 1 +fi + +# 核心思路是只要不超过最大的pending任务数量,就一直提交任务 +while true +do + for partation in "${PARTATION[@]}"; do + PD_COUNT=$(get_pd_count) + spot_count=$(squeue -u ${MY_NAME} | grep -i spot |wc -l) + + if [ "$PD_COUNT" -lt "$MAX_PENDING_JOBS" ] && [ $spot_count -lt $MAX_JOBS ]; then + # 如果PD任务数小于最大限制,则提交新任务 + if [ $DEBUG -eq 1 ]; then + LOG_LEVEL=ERROR srun -p ${partation} --quotatype=spot --output=${SLURM_LOG_DIR}/logs/output_%j.out --export=ALL --error=${SLURM_LOG_DIR}/error/error_%j.err -N 1 -n${TASK_NUM} --gres=gpu:1 python main.py ${SERVER_ADDR} --result-save-dir ${RESULT_SAVE_DIR} + else + LOG_LEVEL=ERROR srun -p ${partation} --quotatype=spot --output=${SLURM_LOG_DIR}/logs/output_%j.out --export=ALL --error=${SLURM_LOG_DIR}/error/error_%j.err -N 1 -n ${TASK_NUM} --gres=gpu:1 --async python main.py ${SERVER_ADDR} --result-save-dir ${RESULT_SAVE_DIR} + fi + echo "use ${partation} submit job succ, submit next job now..." + rm batchscript* 2>/dev/null + fi + break + done # for + sleep 20 +done # while diff --git a/llm_web_kit/html_layout_classify/classify.sh b/llm_web_kit/html_layout_classify/classify.sh new file mode 100755 index 00000000..e59b2e75 --- /dev/null +++ b/llm_web_kit/html_layout_classify/classify.sh @@ -0,0 +1,108 @@ +#! /bin/bash + +command -v proxyoff >/dev/null 2>&1 && proxyoff +command -v proxy_off >/dev/null 2>&1 && proxy_off + +function count_used_gpus(){ + all_jobs=`squeue --me -p $1` + + gpu_num=0 + for name in $all_jobs + do + if [ "$(echo $name | grep "gpu:")" != "" ];then + num="${name//gpu:/}" + gpu_num=$((($gpu_num+$num))) + fi + done + echo $gpu_num +} + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --partation) + PARTATION="$2" + shift 2 + ;; + --max-job) + MAX_JOB_TOTAL="$2" + shift 2 + ;; + --tag) + TAG="$2" + shift 2 + ;; + --task-num) + TASK_NUM="$2" + shift 2 + ;; + --debug) + DEBUG=1 + shift 1 + ;; + --result-save-dir) + RESULT_SAVE_DIR="$2" + shift 2 + ;; + --server-addr) + SERVER_ADDR="$2" + shift 2 + ;; + *) + echo "Unknown argument: $1" + exit 1 + ;; + esac +done + + +MY_HOME=$(echo $HOME) +MY_NAME="${USER}" # 用户名 +SLURM_LOG_DIR=${MY_HOME}/slum-logs/${TAG} +# 创建日志目录(如果不存在) +mkdir -p ${SLURM_LOG_DIR}/logs +mkdir -p ${SLURM_LOG_DIR}/error +export SLURM_SUBMIT_DIR=${SLURM_LOG_DIR} +export LLM_WEB_KIT_CFG_PATH=/share/${MY_NAME}/.llm-web-kit-pageclassify.jsonc +TASK_NUM="${TASK_NUM:-1}" # Default to 1 if not provided +DEBUG="${DEBUG:-0}" +SERVER_ADDR="${SERVER_ADDR:-http://127.0.0.1:5000}" +PYTHON=/share/${MY_NAME}/.conda/envs/webkitdev/bin/python + + +# Check required arguments +if [ -z "$PARTATION" ] || [ -z "$MAX_JOB_TOTAL" ] || [ -z "$TAG" ]; then + echo "Usage: $0 --partation --max-job --tag --debug " + exit 1 +fi + + +submited_job_num=0 # 成功提交的任务数 + +while [ $submited_job_num -lt $MAX_JOB_TOTAL ] +do + used_gpu=($(count_used_gpus $PARTATION)) # 分区中自己已使用的GPU数 + avai_gpu=$(svp list -p $PARTATION|grep $PARTATION | awk '{print $5}') # 分区中可用的GPU数 + echo -e "check partation $PARTATION \n used_gpu: $used_gpu\n avai_gpu: $avai_gpu" + + if [ $avai_gpu -gt 0 ]; then + # 提交一个任务,睡眠 + if [ $DEBUG -eq 1 ]; then + LOG_LEVEL=INFO srun -p ${PARTATION} --output=${SLURM_LOG_DIR}/logs/output_%j.out --export=ALL --error=${SLURM_LOG_DIR}/error/error_%j.err --gres=gpu:1 -N 1 -n ${TASK_NUM} ${PYTHON} main.py --server-addr ${SERVER_ADDR} --result-save-dir ${RESULT_SAVE_DIR} + else + + LOG_LEVEL=ERROR srun -p ${PARTATION} --output=${SLURM_LOG_DIR}/logs/output_%j.out --export=ALL --error=${SLURM_LOG_DIR}/error/error_%j.err --gres=gpu:1 --async -N 1 -n ${TASK_NUM} ${PYTHON} main.py --server-addr ${SERVER_ADDR} --result-save-dir ${RESULT_SAVE_DIR} + fi + # TODO 判断任务是否提交成功 + submited_job_num=$((submited_job_num+1)) + sleep 2 + echo "use ${PARTATION} submit job succ, submit next job now..." + rm batchscript* 2>/dev/null + else + echo "skip ${PARTATION}, used_GPU = ${used_gpu}, no available GPU" + sleep 2 + fi + +done # while + +echo "任务提交完成" diff --git a/llm_web_kit/html_layout_classify/main.py b/llm_web_kit/html_layout_classify/main.py new file mode 100644 index 00000000..ff9a1d8c --- /dev/null +++ b/llm_web_kit/html_layout_classify/main.py @@ -0,0 +1,145 @@ +import json +import os +import socket +import time +from io import BytesIO +from pathlib import Path + +import click +import requests +from loguru import logger +from retry import retry + +from llm_web_kit.model.html_layout_cls import HTMLLayoutClassifier + +CLASSIFY_MAP = {'other': 0, 'article': 1, 'forum': 2} +INT_CLASSIFY_MAP = {0: 'other', 1: 'article', 2: 'forum'} +MODEL_VERESION = '0.0.2' +MODEL = None +GET_FILE_URL = None +UPDATE_STATUS_URL = None + + +def __get_runtime_id(): + # 获取 hostname + hostname = socket.gethostname() + job_id = os.environ.get('SLURM_JOB_ID', 'unknown') + return f'{hostname}_{job_id}' + + +def __read_sample_of_layout_id(to_process_file_path): + """读取to_process_file_path路径的文件,并根据layout_id进行读取,每个layout_id为一组. + + 每次yield一个list, 列表中是layout_id对应的layout_samples. 读取直到layout_id发生变化. + """ + cur_layout_id = None + cur_layout_samples = [] + with open(to_process_file_path, 'r') as f: + for line in f: + data = json.loads(line) + if data['layout_id'] == cur_layout_id or cur_layout_id is None: + cur_layout_samples.append(data) + cur_layout_id = data['layout_id'] + else: + yield cur_layout_samples + cur_layout_id = data['layout_id'] + cur_layout_samples = [data] + yield cur_layout_samples + + +def __do_page_classify(samples:list) -> tuple[str, float]: + """对samples进行分类,返回分类结果标签和最大概率.""" + if len(samples) <= 1: + logger.error(f"samples of layout_id {samples[0]['layout_id']} is less than 1 or empty") + return 'other', 0.0 + + # 进行2次分类 + html_str_inputs = [html['simp_html'] for html in samples] + classify_res_top_2 = MODEL.predict(html_str_inputs[0:2]) + # 如果分类结果一致,则直接写入结果 + if classify_res_top_2[0]['pred_label'] == classify_res_top_2[1]['pred_label']: # 如果1和2的分类结果一致,则直接返回1的分类结果 + return classify_res_top_2[0]['pred_label'], max(classify_res_top_2[0]['pred_prob'], classify_res_top_2[1]['pred_prob']) + else: # 如果分类结果不一致,则进行第三次分类 + if len(samples) > 2: + classify_3 = MODEL.predict([html_str_inputs[2]]) + if classify_3[0]['pred_label'] == classify_res_top_2[0]['pred_label']: + return classify_3[0]['pred_label'], max(classify_3[0]['pred_prob'], classify_res_top_2[0]['pred_prob']) + elif classify_3[0]['pred_label'] == classify_res_top_2[1]['pred_label']: + return classify_3[0]['pred_label'], max(classify_3[0]['pred_prob'], classify_res_top_2[1]['pred_prob']) + else: # 第三个和前两个任何一个分类结果都不一致,则把类别分到other里 + return 'other', 0.0 + else: + return 'other', 0.0 + + +def __process_one_layout_file(result_save_dir, to_process_file_path): + """读取to_process_file_path路径的文件,并进行分类,将结果写入result_save_dir路径 + 读取的时候,需要根据layout_id进行读取,每个layout_id为一组,每组内部进行分类。 分类的时候,先进行2次分类,如果分类结果一致,则直接 + 写入结果,如果分类结果不一致,则进行第三次分类,第三次分类的时候,需要根据前两次分类结果,进行分类。""" + result_file_path = os.path.join(result_save_dir , Path(to_process_file_path).name) + # 检查如果result_file_path存在,则不进行处理 + if Path(result_file_path).exists(): + logger.info(f'result_file_path {result_file_path} exists, skip') + __report_status(UPDATE_STATUS_URL, to_process_file_path, 'SUCC') + return + + file_buffer = BytesIO() + for samples_of_layout_id in __read_sample_of_layout_id(to_process_file_path): + label, max_score = __do_page_classify(samples_of_layout_id) + classify_res = { + 'url_list': [i['url'] for i in samples_of_layout_id], + 'layout_id': samples_of_layout_id[0]['layout_id'], + 'page_type': label, + 'max_pred_prod': max_score, + 'version': MODEL_VERESION, + } + logger.info(f"{samples_of_layout_id[0]['layout_id']}, {label}, {max_score}, {samples_of_layout_id[0]['url']}") + file_buffer.write(json.dumps(classify_res, ensure_ascii=False).encode('utf-8') + b'\n') + + file_buffer.seek(0) + # 一次性写入到磁盘,降低磁盘IO + with open(result_file_path, 'wb') as f: + f.write(file_buffer.getvalue()) + logger.info(f'finished process {to_process_file_path}, write result to {result_file_path}') + file_buffer.close() + + +@retry(tries=5, delay=10, max_delay=5) +def __report_status(server_url, file_path, status, msg=''): + """更新server上的状态.""" + requests.post(server_url, json={'file_path': file_path, 'status': status, 'msg': msg}) + logger.info(f'report status {status} for file {file_path}') + + +@click.command() +@click.option('--result-save-dir', type=click.Path(exists=True), help='分类结果文件输出路径') +@click.option('--server-addr', type=str, help='server的地址,例如http://127.0.0.1:5000') +def main(result_save_dir: str, server_addr: str): + global GET_FILE_URL, UPDATE_STATUS_URL, MODEL + GET_FILE_URL = f'{server_addr}/get_file' + UPDATE_STATUS_URL = f'{server_addr}/update_status' + logger.info('init model') + MODEL = HTMLLayoutClassifier() + logger.info('init model done') + while True: + try: + # 获取待处理的文件路径 + logger.info(f'get layout classify file from {GET_FILE_URL}') + to_process_file_path = requests.get(GET_FILE_URL).json()['file_path'] + logger.info(f'get layout classify file: {to_process_file_path}') + if not to_process_file_path: + logger.info('no file to process, sleep 10s') + time.sleep(10) + continue + # 处理文件 + __process_one_layout_file(result_save_dir, to_process_file_path) + # 更新状态 + __report_status(UPDATE_STATUS_URL, to_process_file_path, 'SUCC') + except Exception as e: + logger.error(f'get layout classify fail: {e}') + logger.exception(e) + time.sleep(1) + + +if __name__ == '__main__': + main() diff --git a/llm_web_kit/html_layout_classify/readme.md b/llm_web_kit/html_layout_classify/readme.md new file mode 100644 index 00000000..a278a2a3 --- /dev/null +++ b/llm_web_kit/html_layout_classify/readme.md @@ -0,0 +1,53 @@ +# html layout classify layout分类 + +## 环境 + +配置 .xinghe.yaml + +配置 .llm_web_kit.jsonc + +## 入参 + +layout_sample_dir: 一个本地的目录,内含多个jsonl文件,每个文件的结构如下: + +| 字段 | 类型 | 描述 | 是否必须 | +| --------- | ------ | ---------------------------- | -------- | +| layout_id | string | layout id | 是 | +| url | string | 数据url | 是 | +| simp_html | string | html原数据经过简化处理的html | 是 | + +layout_classify_dir:分类结果的保存目录。输出的jsonl文件,每个文件的结构如下: + +| 字段 | 类型 | 描述 | 是否必须 | +| ------------- | ------ | --------------------------------------------------------------- | -------- | +| url_list | list | layout id 对应的url | 是 | +| layout_id | string | layout id | 是 | +| page_type | string | layout_id 经过分类之后的分类结果('other', 'article', 'forum') | 是 | +| max_pred_prod | float | 分类模型的分类可靠度 | 是 | +| version | string | 模型版本 | 是 | + +## 执行步骤 + +1. 执行server.py,启动服务,此服务提供2个接口: + + - /get_file:获取待分类的文件路径,每次一个,如果队列中没有文件,则返回空 + - /update_status:更新文件分类状态 + - /index:一个简单的web界面,可以查看当前的分类进度 + - 启动参数为: + - --layout_sample_dir:layout样本的保存目录,这里面每个文件会被server分发出去。 + - --port:服务端口 + - --host:服务地址 + - --timeout:客户端处理一个文件的超时时间,如果超时会被重新分配。 + - --reset:是否重置。会清空当前的分类状态,不保存重启前的任务状态。 + +2. 执行classify.sh,此脚本会向slurm集群提交任务。这些任务常驻GPU,每个任务调用server.py的/get_file接口获取待分类的文件,然后进行分类,并调用server.py的/update_status接口更新文件分类状态。 + + - --partation:slurm的partation,例如:xinghe-gpu + - --max-job:最大提交任务数 + - --tag:slurm的tag,例如:html_layout_classify,用于同一个管理节点启动区分不同的任务隔离开日志的输出 + - --task-num:每个GPU上开启多少个任务实例,为了充分提高GPU的利用率 + - --debug:是否开启debug模式 + - --result-save-dir:分类结果的保存目录 + - --server-addr:server的地址,例如:http://127.0.0.1:5000 + +3. 执行classify-spot.sh ,可以利用spot资源。 diff --git a/llm_web_kit/html_layout_classify/s3/__init__.py b/llm_web_kit/html_layout_classify/s3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/llm_web_kit/html_layout_classify/s3/client.py b/llm_web_kit/html_layout_classify/s3/client.py new file mode 100644 index 00000000..42809f84 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/client.py @@ -0,0 +1,139 @@ +import time +from typing import Dict, List, Union + +import boto3 +from boto3.s3.transfer import TransferConfig +from botocore.client import Config +from botocore.exceptions import ClientError + +from .conf import get_s3_config +from .path import split_s3_path + + +def get_s3_client(path: Union[str, List[str]], outside=False): + s3_config = get_s3_config(path, outside) + try: + return boto3.client( + 's3', + aws_access_key_id=s3_config['ak'], + aws_secret_access_key=s3_config['sk'], + endpoint_url=s3_config['endpoint'], + config=Config( + s3={'addressing_style': 'path'}, + retries={'max_attempts': 8, 'mode': 'standard'}, + connect_timeout=600, + read_timeout=600, + ), + ) + except Exception: + # older boto3 do not support retries.mode param. + return boto3.client( + 's3', + aws_access_key_id=s3_config['ak'], + aws_secret_access_key=s3_config['sk'], + endpoint_url=s3_config['endpoint'], + config=Config(s3={'addressing_style': 'path'}, retries={'max_attempts': 8}), + ) + + +def is_s3_404_error(e: Exception): + if not isinstance(e, ClientError): + return False + return ( + e.response.get('Error', {}).get('Code') in ['404', 'NoSuchKey'] + or e.response.get('Error', {}).get('Message') == 'Not Found' + or e.response.get('ResponseMetadata', {}).get('HTTPStatusCode') == 404 + ) + + +def head_s3_object(path: str, raise_404=False, client=None) -> Union[Dict, None]: + client = client or get_s3_client(path) + bucket, key = split_s3_path(path) + try: + resp = client.head_object(Bucket=bucket, Key=key) + return resp + except ClientError as e: + if not raise_404 and is_s3_404_error(e): + return None + raise + + +def _restore_and_wait(client, bucket: str, key: str, path: str): + while True: + head = client.head_object(Bucket=bucket, Key=key) + restore = head.get('Restore', '') + if not restore: + req = {'Days': 1, 'GlacierJobParameters': {'Tier': 'Standard'}} + client.restore_object(Bucket=bucket, Key=key, RestoreRequest=req) + print(f'restoration-started: {path}') + elif 'ongoing-request="true"' in restore: + print(f'restoration-ongoing: {path}') + elif 'ongoing-request="false"' in restore: + print(f'restoration-complete: {path}') + break + time.sleep(3) + + +def get_s3_object(path: str, client=None, **kwargs) -> dict: + client = client or get_s3_client(path) + bucket, key = split_s3_path(path) + try: + return client.get_object(Bucket=bucket, Key=key, **kwargs) + except ClientError as e: + if e.response.get('Error', {}).get('Code') == 'GlacierObjectNotRestore': + _restore_and_wait(client, bucket, key, path) + return client.get_object(Bucket=bucket, Key=key, **kwargs) + raise + + +def list_s3_objects(path: str, recursive=False, is_prefix=False, limit=0, client=None): + for content in list_s3_objects_detailed(path, recursive, is_prefix, limit, client=client): + yield content[0] + + +def list_s3_objects_detailed(path: str, recursive=False, is_prefix=False, limit=0, client=None): + client = client or get_s3_client(path) + if limit > 1000: + raise Exception('limit greater than 1000 is not supported.') + if not path.endswith('/') and not is_prefix: + path += '/' + bucket, prefix = split_s3_path(path) + marker = None + while True: + list_kwargs = dict(MaxKeys=1000, Bucket=bucket, Prefix=prefix) + if limit > 0: + list_kwargs['MaxKeys'] = limit + if not recursive: + list_kwargs['Delimiter'] = '/' + if marker: + list_kwargs['Marker'] = marker + response = client.list_objects(**list_kwargs) + marker = None + if not recursive: + common_prefixes = response.get('CommonPrefixes', []) + for cp in common_prefixes: + yield (f"s3://{bucket}/{cp['Prefix']}", cp) + if common_prefixes: + marker = common_prefixes[-1]['Prefix'] + contents = response.get('Contents', []) + for content in contents: + if not content['Key'].endswith('/'): + yield (f"s3://{bucket}/{content['Key']}", content) + if contents: + last_key = contents[-1]['Key'] + if not marker or last_key > marker: + marker = last_key + if limit or not response.get('IsTruncated') or not marker: + break + + +def upload_s3_object(path: str, local_file_path: str, client=None): + client = client or get_s3_client(path) + # upload + MB = 1024 ** 2 + config = TransferConfig( + multipart_threshold=128 * MB, + multipart_chunksize=16 * MB, # 156.25GiB maximum + ) + bucket, key = split_s3_path(path) + client.upload_file(local_file_path, bucket, key, Config=config) diff --git a/llm_web_kit/html_layout_classify/s3/cmd.py b/llm_web_kit/html_layout_classify/s3/cmd.py new file mode 100644 index 00000000..5e9997a3 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/cmd.py @@ -0,0 +1,146 @@ +import ast +import json +import re +from typing import Union + +try: + import orjson +except Exception: + orjson = None + +_surrogates_re = r'[\ud800-\udfff]' + + +def json_dumps(d: dict, **kwargs) -> str: + if not kwargs and orjson: + try: + return orjson.dumps(d).decode('utf-8') + except Exception: + pass + return json.dumps(d, ensure_ascii=False, **kwargs) + + +def json_loads(s: Union[str, bytes], **kwargs) -> dict: + if not kwargs and orjson: + try: + return orjson.loads(s) + except Exception: + pass + try: + return json.loads(s, **kwargs) + except Exception as e: + if 'enclosed in double quotes' not in str(e): + raise e + if isinstance(s, bytes): + s = s.decode('utf-8') + else: + s = str(s) + return ast.literal_eval(s) + + +def json_encode(d: dict, end='\n', **kwargs) -> bytes: + return str_encode(json_dumps(d, **kwargs) + end) + + +def str_encode(s: str) -> bytes: + # try remote special characters + s = re.sub(_surrogates_re, '\ufffd', s) + + try: + return s.encode('utf-8') + except UnicodeEncodeError as e: + debug_start = max(0, e.start - 1000) + debug_end = min(len(s), e.end + 1000) + print(f'{debug_start=}, {debug_end=}, debug_s={s[debug_start:debug_end]}') + raise + +# def json_print(obj): +# if isinstance(obj, list) and len(obj): +# return json_print(obj[0]) +# if isinstance(obj, bytes): +# return json_print(obj.decode('utf-8')) +# if isinstance(obj, str): +# return json_print(json_loads(obj)) +# if isinstance(obj, dict): +# return print(json_dumps(obj, indent=2)) +# +# from .row_fallback import Row +# +# if isinstance(obj, Row) and 'value' in obj: +# return json_print(obj.value) +# +# print(obj) +# +# def _format_datetime(dt): +# if not dt: +# return '' +# dt = dt.replace(tzinfo=timezone.utc).astimezone(tz=None) # localtime +# return dt.strftime('%y-%m-%d %H:%M:%S %Z') +# +# +# def _format_size(size): +# if size is None: +# return '' +# size = str(size) +# parts = [] +# while len(size): +# part_size = 3 +# if not parts and len(size) % part_size: +# part_size = len(size) % part_size +# parts.append(size[:part_size]) +# size = size[part_size:] +# return ','.join(parts) +# +# +# def _format_detail(detail): +# path, obj = detail +# if path.endswith('/'): +# return f"{'DIR'.rjust(53)} {path}" +# tm = _format_datetime(obj.get('LastModified')) +# sz = _format_size(obj.get('Size') or obj.get('ContentLength', 0)) +# owner = obj.get('Owner', {}).get('ID', '') +# return f'{tm} {sz.rjust(15)} {owner.rjust(15)} {path}' +# +# +# def head(path): +# obj_head = head_s3_object_with_retry(path) +# if obj_head is not None: +# print(json_dumps(obj_head, indent=2, default=str)) +# +# +# def cat(path, limit=1, show_loc=False): +# if '?bytes=' in path: +# row = read_s3_row(path) +# if row is not None: +# if show_loc: +# print(row.loc) +# json_print(row) +# return +# for row in read_s3_rows(path, use_stream=True, limit=limit): +# if show_loc: +# print(row.loc) +# json_print(row) +# +# +# def ls(path, limit=100): +# for obj in list_s3_objects(path, limit=limit): +# print(obj) +# +# +# def ls_r(path, limit=100): +# for item in list_s3_objects(path, True, True, limit): +# print(item) +# +# +# def ll(path, limit=100): +# for detail in list_s3_objects_detailed(path, limit=limit): +# print(_format_detail(detail)) +# +# +# def ll_r(path, limit=100): +# for detail in list_s3_objects_detailed(path, True, True, limit): +# print(_format_detail(detail)) +# +# +# def download(path): +# print(get_s3_presigned_url(path)) diff --git a/llm_web_kit/html_layout_classify/s3/conf.py b/llm_web_kit/html_layout_classify/s3/conf.py new file mode 100644 index 00000000..c354e219 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/conf.py @@ -0,0 +1,92 @@ +import fnmatch +import random +import socket +from typing import List, Union + +from .config import s3_bucket_prefixes, s3_buckets, s3_profiles +from .path import split_s3_path + + +def _is_inside_cluster(cluster_config: dict): + inside_hosts = cluster_config.get('inside_hosts') + if not (isinstance(inside_hosts, list) and inside_hosts): + return False + inside_hosts = [str(pat).lower() for pat in inside_hosts] + try: + host = socket.gethostname().lower() + except Exception: + return False + for host_pattern in inside_hosts: + if fnmatch.fnmatch(host, host_pattern): + return True + return False + + +def _get_s3_bucket_config(path: str): + bucket = split_s3_path(path)[0] if path else '' + bucket_config = s3_buckets.get(bucket) + if not bucket_config: + for prefix, c in s3_bucket_prefixes.items(): + if bucket.startswith(prefix): + bucket_config = c + break + if not bucket_config: + bucket_config = s3_profiles.get(bucket) + if not bucket_config: + bucket_config = s3_buckets.get('[default]') + assert bucket_config is not None + return bucket_config + + +def _get_s3_config( + bucket_config, + outside: bool, + prefer_ip=False, + prefer_auto=False, +): + cluster = bucket_config['cluster'] + assert isinstance(cluster, dict) + + if outside: + endpoint_key = 'outside' + elif prefer_auto: + endpoint_key = 'auto' + elif _is_inside_cluster(cluster): + endpoint_key = 'inside' + else: + endpoint_key = 'outside' + + if endpoint_key not in cluster: + endpoint_key = 'outside' + + if prefer_ip and f'{endpoint_key}_ips' in cluster: + endpoint_key = f'{endpoint_key}_ips' + + endpoints = cluster[endpoint_key] + + if isinstance(endpoints, str): + endpoint = endpoints + elif isinstance(endpoints, list): + endpoint = random.choice(endpoints) + else: + raise Exception(f'invalid endpoint for [{cluster}]') + + return { + 'endpoint': endpoint, + 'ak': bucket_config['ak'], + 'sk': bucket_config['sk'], + } + + +def get_s3_config(path: Union[str, List[str]], outside=False): + paths = [path] if type(path) == str else path + bucket_config = None + for p in paths: + bc = _get_s3_bucket_config(p) + if bucket_config in [bc, None]: + bucket_config = bc + continue + raise Exception(f'{paths} have different s3 config, cannot read together.') + if not bucket_config: + raise Exception('path is empty.') + return _get_s3_config(bucket_config, outside, prefer_ip=True) diff --git a/llm_web_kit/html_layout_classify/s3/config.py b/llm_web_kit/html_layout_classify/s3/config.py new file mode 100644 index 00000000..0499b96e --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/config.py @@ -0,0 +1,62 @@ +from .reader import read_config + +config = read_config() + +spark_clusters: dict = config.get('spark', {}).get('clusters', {}) +kafka_clusters: dict = config.get('kafka', {}).get('clusters', {}) +es_clusters: dict = config.get('es', {}).get('clusters', {}) +kudu_clusters: dict = config.get('kudu', {}).get('clusters', {}) +hive_clusters: dict = config.get('hive', {}).get('clusters', {}) + +_s3_buckets: dict = config.get('s3', {}).get('buckets', {}) +_s3_profiles: dict = config.get('s3', {}).get('profiles', {}) +s3_clusters: dict = config.get('s3', {}).get('endpoints', {}) + +_kc = list(s3_clusters.keys()) +_kc.sort(key=lambda s: -len(s)) + +s3_profiles = {} +for name, profile in _s3_profiles.items(): + assert isinstance(profile, dict) + ak = profile.get('aws_access_key_id') + sk = profile.get('aws_secret_access_key') + if not ak and sk: + continue + c = next((c for c in _kc if name.startswith(c)), None) + cluster = s3_clusters[c] if c else None + if not cluster and profile.get('endpoint_url'): + cluster = {'outside': profile['endpoint_url']} + if not cluster: + continue + s3_profiles[name] = { + 'profile': name, + 'ak': ak, + 'sk': sk, + 'cluster': cluster, + } + +s3_buckets = {} +s3_bucket_prefixes = {} +for bucket, profile_name in _s3_buckets.items(): + profile = s3_profiles.get(profile_name) + if not profile: + continue + if '*' not in bucket: + s3_buckets[bucket] = profile + continue + bucket_prefix = bucket.rstrip('*') + if '*' not in bucket_prefix: + s3_bucket_prefixes[bucket_prefix] = profile + +__all__ = [ + 'config', + 's3_buckets', + 's3_bucket_prefixes', + 's3_profiles', + 's3_clusters', + 'spark_clusters', + 'kafka_clusters', + 'es_clusters', + 'kudu_clusters', + 'hive_clusters', +] diff --git a/llm_web_kit/html_layout_classify/s3/const.py b/llm_web_kit/html_layout_classify/s3/const.py new file mode 100644 index 00000000..f6cfb124 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/const.py @@ -0,0 +1,18 @@ +SUCCESS_MARK_FILE = '_SUCCESS' +SUCCESS_MARK_FILE2 = '.SUCCESS' + +FAILURE_MARK_FILE = '_FAILURE' +RESERVE_MARK_FILE = '_RESERVE' +SUMMARY_MARK_FILE = '_SUMMARY' +DELETED_MARK_FILE = '_DELETED' + +FIELD_ID = 'id' +FIELD_SUB_PATH = 'sub_path' + + +def is_flag_field(f: str): + return f.startswith('is_') or f.startswith('has_') + + +def is_acc_field(f: str): + return f.startswith('acc_') diff --git a/llm_web_kit/html_layout_classify/s3/path.py b/llm_web_kit/html_layout_classify/s3/path.py new file mode 100644 index 00000000..8a869517 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/path.py @@ -0,0 +1,27 @@ +import re + +__re_s3_path = re.compile('^s3a?://([^/]+)(?:/(.*))?$') + + +def is_s3_path(path: str) -> bool: + return path.startswith('s3://') or path.startswith('s3a://') + + +def ensure_s3a_path(path: str) -> str: + if not path.startswith('s3://'): + return path + return 's3a://' + path[len('s3://'):] + + +def ensure_s3_path(path: str) -> str: + if not path.startswith('s3a://'): + return path + return 's3://' + path[len('s3a://'):] + + +def split_s3_path(path: str): + """split bucket and key from path.""" + m = __re_s3_path.match(path) + if m is None: + return '', '' + return m.group(1), (m.group(2) or '') diff --git a/llm_web_kit/html_layout_classify/s3/read.py b/llm_web_kit/html_layout_classify/s3/read.py new file mode 100644 index 00000000..384c6f0d --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/read.py @@ -0,0 +1,164 @@ +import io +import re +from typing import Tuple, Union + +from botocore.exceptions import ClientError +from botocore.response import StreamingBody + +from .client import get_s3_object +from .read_resume import ResumableS3Stream + +__re_bytes = re.compile('^([0-9]+)([,-])([0-9]+)$') +__re_bytes_1 = re.compile('^([0-9]+),([0-9]+)$') + +SIZE_1M = 1 << 20 + + +def read_s3_object_detailed( + path: str, + bytes: Union[str, None] = None, + client=None, +) -> Tuple[StreamingBody, dict]: + """ + ### Usage + ``` + obj = read_object('s3://bkt/path/to/file.txt') + for line in obj.iter_lines(): + handle(line) + ``` + """ + kwargs = {} + if bytes: + m = __re_bytes.match(bytes) + if m is not None: + frm = int(m.group(1)) + to = int(m.group(3)) + sep = m.group(2) + if sep == ',': + to = frm + to - 1 + if to >= frm: + kwargs['Range'] = f'bytes={frm}-{to}' + elif frm > 0: + kwargs['Range'] = f'bytes={frm}-' + + obj = get_s3_object(path, client=client, **kwargs) + return obj.pop('Body'), obj + + +def read_s3_object_bytes_detailed(path: str, size_limit=0, client=None): + """This method cache all content in memory, avoid large file.""" + import time + + retries = 0 + last_e = None + while True: + if retries > 5: + msg = f'Retry exhausted for reading [{path}]' + raise Exception(msg) from last_e + try: + stream, obj = read_s3_object_detailed(path, client=client) + with stream: + amt = size_limit if size_limit > 0 else None + buf = stream.read(amt) + break + except ClientError: + raise + except Exception as e: + last_e = e + retries += 1 + time.sleep(3) + + assert isinstance(buf, bytes) + return buf, obj + + +def read_s3_object_io_detailed(path: str, size_limit=0, client=None): + """This method cache all content in memory, avoid large file.""" + import io + + buf, obj = read_s3_object_bytes_detailed(path, size_limit, client=client) + return io.BytesIO(buf), obj + + +def read_s3_object_io(path: str, size_limit=0, client=None): + """This method cache all content in memory, avoid large file.""" + return read_s3_object_io_detailed(path, size_limit, client=client)[0] + + +def buffered_stream(stream, buffer_size: int, **kwargs): + from warcio.bufferedreaders import BufferedReader + return BufferedReader(stream, buffer_size, **kwargs) + + +def read_records(path: str, stream: io.IOBase, buffer_size: int): + """do not handle stream.close()""" + offset = 0 + + # if path.endswith('.warc') or path.endswith('.warc.gz'): + # from .read_warc import read_warc_records + # + # yield from read_warc_records(path, stream) + + if path.endswith('.gz'): + r = buffered_stream(stream, buffer_size, decomp_type='gzip') + while True: + line = r.readline() + if not line: + if r.read_next_member(): + continue + break + tell = stream.tell() - r.rem_length() + yield (line.decode('utf-8'), offset, tell - offset) + offset = tell + + elif path.endswith('.bz2'): + raise Exception('bz2 is not supported yet.') + + # elif path.endswith('.7z'): + # from .read_7z import SevenZipReadStream + # + # stream1 = SevenZipReadStream(stream) + # stream2 = buffered_stream(stream1, buffer_size) + # + # while True: + # line = stream2.readline() + # if not line: + # break + # yield (line.decode('utf-8'), int(-1), int(0)) + + else: # plaintext + stream1 = stream + if isinstance(stream, ResumableS3Stream): + stream1 = buffered_stream(stream, buffer_size) + + while True: + line = stream1.readline() + if not line: + break + yield (line.decode('utf-8'), offset, len(line)) + offset += len(line) + + +def read_s3_rows(path: str, use_stream=False, limit=0, size_limit=0, client=None): + from .row_fallback import Row + + if use_stream: + stream = ResumableS3Stream(path, size_limit, client=client) + else: + stream = read_s3_object_io(path, size_limit, client=client) + + with stream: + cnt = 0 + for record in read_records(path, stream, SIZE_1M): + value, offset, length = record + + if offset >= 0: + loc = f'{path}?bytes={offset},{length}' + else: + loc = path + + yield Row(value=value, loc=loc) + + cnt += 1 + if limit > 0 and cnt >= limit: + break diff --git a/llm_web_kit/html_layout_classify/s3/read_resume.py b/llm_web_kit/html_layout_classify/s3/read_resume.py new file mode 100644 index 00000000..6dad2fcc --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/read_resume.py @@ -0,0 +1,105 @@ +import io +import time + +from botocore.exceptions import (IncompleteReadError, ReadTimeoutError, + ResponseStreamingError) +from botocore.response import StreamingBody + +from .retry import get_s3_object_with_retry, head_s3_object_with_retry + + +class _EmptyStream: + def read(self, n): + return b'' + + def close(self): + pass + + +class ResumableS3Stream(io.IOBase): + def __init__(self, path: str, size_limit=0, client=None): + self.path = path + self.size_limit = size_limit + self.client = client + self.pos = 0 + self.size = -1 + self.stream = self.new_stream() + + def new_stream(self) -> StreamingBody: + if self.size < 0 and self.size_limit > 0: + head = head_s3_object_with_retry(self.path, True, self.client) + assert head is not None + if int(head['ContentLength']) <= self.size_limit: + self.size_limit = 0 + self.size = int(head['ContentLength']) + else: + self.size = self.size_limit + + if self.size_limit > 0: + kwargs = {'Range': f'bytes={self.pos}-{self.size_limit - 1}'} + else: + kwargs = {'Range': f'bytes={self.pos}-'} if self.pos > 0 else {} + + obj = get_s3_object_with_retry(self.path, client=self.client, **kwargs) + + if self.size < 0: + self.size = int(obj['ContentLength']) + + return obj['Body'] + + def readable(self): + return True + + def read(self, n=None): + if self.pos >= self.size: + return b'' + + retries = 0 + last_e = None + while True: + if retries > 5: + msg = f'Retry exhausted for reading [{self.path}]' + raise Exception(msg) from last_e + try: + data = self.stream.read(n) + self.pos += len(data) + return data + except (ReadTimeoutError, ResponseStreamingError, IncompleteReadError) as e: + try: + self.stream.close() + except Exception: + pass + last_e = e + retries += 1 + time.sleep(3) + self.stream = self.new_stream() + + def seekable(self): + return True + + def seek(self, offset, whence=io.SEEK_SET): + if whence == io.SEEK_SET: + pos = offset + elif whence == io.SEEK_CUR: + pos = self.pos + offset + elif whence == io.SEEK_END: + pos = self.size + offset + else: + raise ValueError('Invalid argument: whence') + if pos != self.pos: + self.pos = pos + try: + self.stream.close() + except Exception: + pass + if self.pos < self.size: + self.stream = self.new_stream() + else: + self.stream = _EmptyStream() + return pos + + def tell(self): + return self.pos + + def close(self): + self.stream.close() diff --git a/llm_web_kit/html_layout_classify/s3/reader.py b/llm_web_kit/html_layout_classify/s3/reader.py new file mode 100644 index 00000000..b8f887ff --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/reader.py @@ -0,0 +1,127 @@ +"""read config from: + +- user config [specific s3 configs] +- user ~/.aws/ [for ak/sk of s3 clusters] +- default config [same for all users] +""" + +import configparser +import json +import os +import re +from pathlib import Path + +import yaml + +_USER_CONFIG_FILES = [ + '.xinghe.yaml', + '.xinghe.yml', + '.code-clean.yaml', + '.code-clean.yml', +] + + +def _get_home_dir(): + spark_user = os.environ.get('SPARK_USER') + if spark_user: + return os.path.join('/share', spark_user) # hard code + return Path.home() + + +def _read_ini_s3_section(s: str): + config = {} + for line in s.split('\n'): + ml = re.match(r'^\s*([^=\s]+)\s*=\s*(.+?)\s*$', line) + if ml: + config[ml.group(1)] = ml.group(2) + return config + + +def _read_ini_file(file: str): + parser = configparser.ConfigParser() + parser.read(file) + config = {} + for name, section in parser.items(): + name = re.sub(r'^\s*profile\s+', '', name) + name = name.strip().strip('"') + for key, val in section.items(): + if key == 's3': + val = _read_ini_s3_section(val) + config.setdefault(name, {}).update(val) + else: + config.setdefault(name, {})[key] = val + return config + + +def _merge_config(old: dict, new: dict): + ret = {} + for key, old_val in old.items(): + if key not in new: + ret[key] = old_val + continue + new_val = new.pop(key) + if isinstance(old_val, dict) and isinstance(new_val, dict): + ret[key] = _merge_config(old_val, new_val) + else: + ret[key] = new_val + for key, new_val in new.items(): + ret[key] = new_val + return ret + + +def _read_s3_config(): + home = _get_home_dir() + conf_file = os.path.join(home, '.aws', 'config') + cred_file = os.path.join(home, '.aws', 'credentials') + config = {} + if os.path.isfile(conf_file): + config = _read_ini_file(conf_file) + if os.path.isfile(cred_file): + config = _merge_config(config, _read_ini_file(cred_file)) + return {'s3': {'profiles': config}} + + +def _read_user_config(): + home = _get_home_dir() + for filename in _USER_CONFIG_FILES: + conf_file = os.path.join(home, filename) + if os.path.isfile(conf_file): + break + else: + return {} + with open(conf_file, 'r') as f: + config = yaml.safe_load(f) + assert isinstance(config, dict) + return config + + +def get_conf_dir(): + conf_dir = os.getenv('XINGHE_CONF_DIR') + if not conf_dir and os.getenv('BASE_DIR'): + conf_dir = os.path.join(os.environ['BASE_DIR'], 'conf') + if not conf_dir: + raise Exception('XINGHE_CONF_DIR not set.') + return conf_dir + + +def _read_default_config(): + conf_file = os.path.join(get_conf_dir(), 'config.yaml') + if not os.path.isfile(conf_file): + raise Exception(f'config file [{conf_file}] not found.') + with open(conf_file, 'r') as f: + config = yaml.safe_load(f) + assert isinstance(config, dict) + return config + + +def read_config(): + # config = _read_default_config() + config = {} + config = _merge_config(config, _read_s3_config()) + config = _merge_config(config, _read_user_config()) + return config + + +if __name__ == '__main__': + c = read_config() + print(json.dumps(c, indent=2)) diff --git a/llm_web_kit/html_layout_classify/s3/retry.py b/llm_web_kit/html_layout_classify/s3/retry.py new file mode 100644 index 00000000..3458f319 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/retry.py @@ -0,0 +1,39 @@ +from botocore.exceptions import ClientError + +from .client import get_s3_object, head_s3_object, upload_s3_object +from .retry_utils import with_retry + + +@with_retry +def _get_s3_object_or_ex(path: str, client, **kwargs): + try: + return get_s3_object(path, client=client, **kwargs) + except ClientError as e: + return e + + +def get_s3_object_with_retry(path: str, client=None, **kwargs): + ret = _get_s3_object_or_ex(path, client, **kwargs) + if isinstance(ret, ClientError): + raise ret + return ret + + +@with_retry +def _head_s3_object_or_ex(path: str, raise_404: bool, client): + try: + return head_s3_object(path, raise_404, client=client) + except ClientError as e: + return e + + +def head_s3_object_with_retry(path: str, raise_404=False, client=None): + ret = _head_s3_object_or_ex(path, raise_404, client) + if isinstance(ret, ClientError): + raise ret + return ret + + +@with_retry(sleep_time=180) +def upload_s3_object_with_retry(path: str, local_file_path: str, client=None): + upload_s3_object(path, local_file_path, client=client) diff --git a/llm_web_kit/html_layout_classify/s3/retry_utils.py b/llm_web_kit/html_layout_classify/s3/retry_utils.py new file mode 100644 index 00000000..0a195c51 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/retry_utils.py @@ -0,0 +1,45 @@ +import functools +import time + + +def get_func_path(func) -> str: + if not callable(func): + return func + return f'{func.__module__}.{func.__name__}' + + +def with_retry(func=None, max_retries=5, sleep_time=3): + def try_sleep(): + try: + time.sleep(sleep_time) + except Exception: + pass + + def get_msg(func, args, kwargs): + msg = f'Retry exhausted for [{get_func_path(func)}]' + msg += f', args={args}' if args else '' + msg += f', kwargs={kwargs}' if kwargs else '' + return msg + + def handle(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + retries = 0 + last_e = None + while True: + if retries > max_retries: + msg = get_msg(func, args, kwargs) + raise Exception(msg) from last_e + try: + return func(*args, **kwargs) + except Exception as e: + retries += 1 + last_e = e + try_sleep() + + return wrapper + + if func is not None: + return handle(func) + + return handle diff --git a/llm_web_kit/html_layout_classify/s3/row_fallback.py b/llm_web_kit/html_layout_classify/s3/row_fallback.py new file mode 100644 index 00000000..636ddf64 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/row_fallback.py @@ -0,0 +1,191 @@ +# copied from pyspark/sql/types.py + +from typing import Any, Dict, List, Optional, Tuple, Union, overload + + +def _create_row(fields: Union['Row', List[str]], values: Union[Tuple[Any, ...], List[Any]]) -> 'Row': + row = Row(*values) + row.__fields__ = fields + return row + + +class Row(tuple): + """A row in :class:`DataFrame`. The fields in it can be accessed: + + * like attributes (``row.key``) + * like dictionary values (``row[key]``) + + ``key in row`` will search through row keys. + + Row can be used to create a row object by using named arguments. + It is not allowed to omit a named argument to represent that the value is + None or missing. This should be explicitly set to None in this case. + + .. versionchanged:: 3.0.0 + Rows created from named arguments no longer have + field names sorted alphabetically and will be ordered in the position as + entered. + + Examples + -------- + >>> from pyspark.sql import Row + >>> row = Row(name='Alice', age=11) + >>> row + Row(name='Alice', age=11) + >>> row['name'], row['age'] + ('Alice', 11) + >>> row.name, row.age + ('Alice', 11) + >>> 'name' in row + True + >>> 'wrong_key' in row + False + + Row also can be used to create another Row like class, then it + could be used to create Row objects, such as + + >>> Person = Row('name', 'age') + >>> Person + + >>> 'name' in Person + True + >>> 'wrong_key' in Person + False + >>> Person('Alice', 11) + Row(name='Alice', age=11) + + This form can also be used to create rows as tuple values, i.e. with unnamed + fields. + + >>> row1 = Row('Alice', 11) + >>> row2 = Row(name='Alice', age=11) + >>> row1 == row2 + True + """ + + @overload + def __new__(cls, *args: str) -> 'Row': + ... + + @overload + def __new__(cls, **kwargs: Any) -> 'Row': + ... + + def __new__(cls, *args: Optional[str], **kwargs: Optional[Any]) -> 'Row': + if args and kwargs: + raise ValueError('Can not use both args ' 'and kwargs to create Row') + if kwargs: + # create row objects + row = tuple.__new__(cls, list(kwargs.values())) + row.__fields__ = list(kwargs.keys()) + return row + else: + # create row class or objects + return tuple.__new__(cls, args) + + def asDict(self, recursive: bool = False) -> Dict[str, Any]: + """Return as a dict. + + Parameters + ---------- + recursive : bool, optional + turns the nested Rows to dict (default: False). + + Notes + ----- + If a row contains duplicate field names, e.g., the rows of a join + between two :class:`DataFrame` that both have the fields of same names, + one of the duplicate fields will be selected by ``asDict``. ``__getitem__`` + will also return one of the duplicate fields, however returned value might + be different to ``asDict``. + + Examples + -------- + >>> from pyspark.sql import Row + >>> Row(name='Alice', age=11).asDict() == {'name': 'Alice', 'age': 11} + True + >>> row = Row(key=1, value=Row(name='a', age=2)) + >>> row.asDict() == {'key': 1, 'value': Row(name='a', age=2)} + True + >>> row.asDict(True) == {'key': 1, 'value': {'name': 'a', 'age': 2}} + True + """ + if not hasattr(self, '__fields__'): + raise TypeError('Cannot convert a Row class into dict') + + if recursive: + + def conv(obj: Any) -> Any: + if isinstance(obj, Row): + return obj.asDict(True) + elif isinstance(obj, list): + return [conv(o) for o in obj] + elif isinstance(obj, dict): + return dict((k, conv(v)) for k, v in obj.items()) + else: + return obj + + return dict(zip(self.__fields__, (conv(o) for o in self))) + else: + return dict(zip(self.__fields__, self)) + + def __contains__(self, item: Any) -> bool: + if hasattr(self, '__fields__'): + return item in self.__fields__ + else: + return super(Row, self).__contains__(item) + + # let object acts like class + def __call__(self, *args: Any) -> 'Row': + """create new Row object.""" + if len(args) > len(self): + raise ValueError( + 'Can not create Row with fields %s, expected %d values ' 'but got %s' % (self, len(self), args)) + return _create_row(self, args) + + def __getitem__(self, item: Any) -> Any: + if isinstance(item, (int, slice)): + return super(Row, self).__getitem__(item) + try: + # it will be slow when it has many fields, + # but this will not be used in normal cases + idx = self.__fields__.index(item) + return super(Row, self).__getitem__(idx) + except IndexError: + raise KeyError(item) + except ValueError: + raise ValueError(item) + + def __getattr__(self, item: str) -> Any: + if item.startswith('__'): + raise AttributeError(item) + try: + # it will be slow when it has many fields, + # but this will not be used in normal cases + idx = self.__fields__.index(item) + return self[idx] + except IndexError: + raise AttributeError(item) + except ValueError: + raise AttributeError(item) + + def __setattr__(self, key: Any, value: Any) -> None: + if key != '__fields__': + raise RuntimeError('Row is read-only') + self.__dict__[key] = value + + def __reduce__( + self, + ) -> Union[str, Tuple[Any, ...]]: + """Returns a tuple so Python knows how to pickle Row.""" + if hasattr(self, '__fields__'): + return (_create_row, (self.__fields__, tuple(self))) + else: + return tuple.__reduce__(self) + + def __repr__(self) -> str: + """Printable representation of Row used in Python REPL.""" + if hasattr(self, '__fields__'): + return 'Row(%s)' % ', '.join('%s=%r' % (k, v) for k, v in zip(self.__fields__, tuple(self))) + else: + return '' % ', '.join('%r' % field for field in self) diff --git a/llm_web_kit/html_layout_classify/s3/utils.py b/llm_web_kit/html_layout_classify/s3/utils.py new file mode 100644 index 00000000..d71af4f0 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/utils.py @@ -0,0 +1,34 @@ +from .client import (get_s3_client, get_s3_object, head_s3_object, + is_s3_404_error, list_s3_objects, + list_s3_objects_detailed, upload_s3_object) +from .conf import get_s3_config +from .path import ensure_s3_path, ensure_s3a_path, is_s3_path, split_s3_path +from .read import (read_s3_object_bytes_detailed, read_s3_object_detailed, + read_s3_object_io, read_s3_object_io_detailed, read_s3_rows) +from .retry import (get_s3_object_with_retry, head_s3_object_with_retry, + upload_s3_object_with_retry) +from .write import S3DocWriter + +__all__ = [ + 'is_s3_path', + 'ensure_s3a_path', + 'ensure_s3_path', + 'split_s3_path', + 'get_s3_config', + 'get_s3_client', + 'head_s3_object', + 'get_s3_object', + 'upload_s3_object', + 'list_s3_objects', + 'list_s3_objects_detailed', + 'is_s3_404_error', + 'read_s3_object_detailed', + 'read_s3_object_bytes_detailed', + 'read_s3_object_io', + 'read_s3_object_io_detailed', + 'read_s3_rows', + 'get_s3_object_with_retry', + 'head_s3_object_with_retry', + 'upload_s3_object_with_retry', + 'S3DocWriter', +] diff --git a/llm_web_kit/html_layout_classify/s3/write.py b/llm_web_kit/html_layout_classify/s3/write.py new file mode 100644 index 00000000..bdbbc9a6 --- /dev/null +++ b/llm_web_kit/html_layout_classify/s3/write.py @@ -0,0 +1,136 @@ +import bz2 +import gzip +import io +import os +import uuid + +from .cmd import json_encode +from .const import FIELD_ID +from .retry import upload_s3_object_with_retry + +_compressions = { + 'gz': 'gz', + 'gzip': 'gz', + 'bz2': 'bz2', + 'bzip': 'bz2', + 'bzip2': 'bz2', + 'raw': 'raw', + 'none': 'raw', +} + + +def s3_upload_tmp_dir(): + tmp_dir = '/tmp/s3_upload' + try: + os.makedirs(tmp_dir, exist_ok=True) + test_file = os.path.join(tmp_dir, '__test_file') + try: + open(test_file, 'a').close() + finally: + try: + os.remove(test_file) + except Exception: + pass + except Exception: + tmp_dir = os.path.join('/tmp', 's3_upload') + os.makedirs(tmp_dir, exist_ok=True) + return tmp_dir + + +class S3DocWriter: + def __init__( + self, + path: str, + client=None, + tmp_dir=None, + skip_loc=False, + compression='', + ) -> None: + if not path.startswith('s3://'): + raise Exception(f'invalid s3 path [{path}].') + + compression = _compressions.get(compression) + if compression and not path.endswith(f'.{compression}'): + raise Exception(f'path must endswith [.{compression}]') + if not compression and path.endswith('.gz'): + compression = 'gz' + if not compression and path.endswith('.bz2'): + compression = 'bz2' + + self.path = path + self.client = client + self.skip_loc = skip_loc + self.compression = compression + + if not tmp_dir: + tmp_dir = s3_upload_tmp_dir() + os.makedirs(tmp_dir, exist_ok=True) + + ext = self.__get_ext(path) + self.tmp_file = os.path.join(tmp_dir, f'{str(uuid.uuid4())}.{ext}') + self.tmp_fh = open(self.tmp_file, 'ab') + self.offset = 0 + + def __enter__(self): + return self + + def __exit__(self, type, value, tb): + self.flush() + + @staticmethod + def __get_ext(path: str): + filename = os.path.basename(path) + parts = filename.split('.') + if len(parts) > 1 and parts[0]: + return parts[-1] + return 'txt' + + def write(self, d: dict): + d = d.copy() + + if not self.skip_loc and 'doc_loc' in d: + track_loc = d.get('track_loc') or [] + track_loc.append(d['doc_loc']) + d['track_loc'] = track_loc + + if self.compression == 'gz': + if not self.skip_loc and FIELD_ID in d: + d['doc_loc'] = f'{self.path}?bytes={self.offset},0' + buf = io.BytesIO() + with gzip.GzipFile(fileobj=buf, mode='wb') as f: + f.write(json_encode(d)) + doc_bytes = buf.getvalue() + + elif self.compression == 'bz2': + if not self.skip_loc and FIELD_ID in d: + d['doc_loc'] = f'{self.path}?bytes={self.offset},0' + buf = io.BytesIO() + with bz2.BZ2File(buf, mode='wb') as f: + f.write(json_encode(d)) + doc_bytes = buf.getvalue() + + else: + doc_bytes = json_encode(d) + + # add doc_loc if doc has id + if not self.skip_loc and FIELD_ID in d: + doc_len, last_len = len(doc_bytes), 0 + while doc_len != last_len: + d['doc_loc'] = f'{self.path}?bytes={self.offset},{doc_len}' + doc_bytes = json_encode(d) + doc_len, last_len = len(doc_bytes), doc_len + + self.tmp_fh.write(doc_bytes) + self.offset += len(doc_bytes) + + return len(doc_bytes) + + def flush(self): + try: + self.tmp_fh.close() + upload_s3_object_with_retry(self.path, self.tmp_file, self.client) + finally: + try: + os.remove(self.tmp_file) + except Exception: + pass diff --git a/llm_web_kit/html_layout_classify/server.py b/llm_web_kit/html_layout_classify/server.py new file mode 100644 index 00000000..70e31bc5 --- /dev/null +++ b/llm_web_kit/html_layout_classify/server.py @@ -0,0 +1,282 @@ +""" +实现一个flask的server,实现: +1. 启动的时候,接受一个命令行参数 --layout_sample_dir,表示layout_sample_dir路径。扫描这个路径下所有.jsonl文件,保存他们的绝对路径。把这些路径放到一个队列里。 +2. 实现一个http get接口,每次返回队列里的一个路径,并从队列里删除该路径。被删除的路径保存到另外一个dict里,value是个当时的时间start_tm。用来记录未来处理是否成功。 +3. 实现一个http post接口,接受一个路径,和对这个路径的处理结果SUCC|FAIL, 和一条msg。把这3条信息存到dict的vlaue里,加上end_tm。 +4. 实现一个http get,返还一个html表格。 显示queue里总路径,dict里的路径,和处理结果。显示处理总进度=dict里处理成功的路径/queue里总路径+dict里总的路径。 + +""" +import json +import os +import queue +import sys +from datetime import datetime +from pathlib import Path +from queue import Queue +from threading import Lock + +import click +from flask import Flask, jsonify, render_template_string, request +from loguru import logger + +app = Flask(__name__) + +# Global variables + +file_queue = Queue() +processed_files = {} +total_files = 0 +processed_files_lock = Lock() +succ_count = 0 # 处理成功的计数 + + +# Queue persistence file path +QUEUE_FILE = os.path.expanduser('~/.page_classify_queue') + +# HTML template for status page +HTML_TEMPLATE = """ + + + + Processing Status + + + +

                                                                                  Processing Status

                                                                                  +

                                                                                  Progress: {{ progress }}%

                                                                                  +

                                                                                  Queue Status:

                                                                                  +

                                                                                  Files succ processing: {{ succ_count }}

                                                                                  +

                                                                                  Files remaining in queue: {{ queue_length }}

                                                                                  +

                                                                                  Files currently processing: {{ processing_count }}

                                                                                  +

                                                                                  Processed Files:

                                                                                  + + + + + + + + + + {% for path, info in processed_files.items() %} + + + + + + + + + {% endfor %} +
                                                                                  File PathStatusMessageStart TimeEnd TimeDuration
                                                                                  {{ path }}{{ info.get('status', '') }}{{ info.get('msg', '') }}{{ info.get('start_tm', '') }}{{ info.get('end_tm', '') }}{{ info.get('duration', '') }}
                                                                                  + + + +""" + + +def load_processed_files(): + """Load processing files from persistence file.""" + global processed_files, succ_count + if os.path.exists(QUEUE_FILE): + with open(QUEUE_FILE, 'r') as f: + saved_files = json.load(f) + # Only load files that are still in PROCESSING status + processed_files = { + path: info for path, info in saved_files.items() + if info.get('status') == 'PROCESSING' + } + for _, info in saved_files.items(): + if info.get('status') == 'SUCC': + succ_count += 1 + + +def clear_processed_files(): + """Clear processed files from persistence file.""" + if os.path.exists(QUEUE_FILE): + os.remove(QUEUE_FILE) + + +def save_processed_files(): + """Save processed files to persistence file.""" + with open(QUEUE_FILE, 'w') as f: + json.dump(processed_files, f) + + +def __init_queue(layout_sample_dir, reset): + """Initialize queue with .jsonl files from the given directory.""" + global file_queue, total_files + + layout_dir = Path(layout_sample_dir) + if not layout_dir.exists(): + print(f'Error: Directory {layout_sample_dir} does not exist') + sys.exit(1) + + # Load processed files first to exclude processing files + if reset: + clear_processed_files() + load_processed_files() + + # Get set of files currently being processed + processing_files = {path for path, info in processed_files.items() + if info.get('status') == 'PROCESSING'} + + layout_dir = Path(layout_sample_dir) + for file_path in layout_dir.rglob('*.jsonl'): + file_path_str = str(file_path) + # Only add files that are not currently being processed + if file_path_str not in processing_files: + file_queue.put(file_path_str) + + total_files = file_queue.qsize() + + +# Add lock as a global variable at module level + + +@app.route('/get_file', methods=['GET']) +def get_file(): + global file_queue, processed_files, processed_files_lock + + with processed_files_lock: + # Check for timed out files before getting next file + current_time = datetime.now() + timed_out_files = [] + for file_path, info in processed_files.items(): + if info['status'] == 'PROCESSING': + start_time = datetime.strptime(info['start_tm'], '%Y-%m-%d %H:%M:%S') + duration = (current_time - start_time).total_seconds() + if duration > app.config['TIMEOUT']: + logger.info(f'File {file_path} timed out, adding back to queue') + timed_out_files.append(file_path) # 超时的文件,重新加入队列 + file_queue.put(file_path) + + # Remove timed out files from processed_files + for file_path in timed_out_files: + del processed_files[file_path] + + try: + file_path = file_queue.get(block=False) + except queue.Empty: # queue.get() raises queue.Empty when empty, not IndexError + logger.error('No more files in queue') + return jsonify({'file_path': ''}) + + processed_files[file_path] = { + 'start_tm': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), + 'status': 'PROCESSING' + } + + # Save updated processed files + save_processed_files() + + logger.info(f'get layout classify file: {file_path}') + return jsonify({'file_path': file_path}) + + +@app.route('/update_status', methods=['POST']) +def update_status(): + data = request.get_json() + file_path = data['file_path'] + status = data['status'] + msg = data.get('msg', '') # Optional message parameter + """Update processing status for a file.""" + if file_path not in processed_files: + return jsonify({'error': 'File not found in processed list'}) + + end_time = datetime.now() + start_time = datetime.strptime(processed_files[file_path]['start_tm'], '%Y-%m-%d %H:%M:%S') + duration = end_time - start_time + + processed_files[file_path].update({ + 'status': status, + 'msg': msg, + 'end_tm': end_time.strftime('%Y-%m-%d %H:%M:%S'), + 'duration': str(duration) + }) + + # Save updated processed files + save_processed_files() + logger.info(f'update layout classify status: {file_path} {status} {msg}') + return jsonify({'status': 'success'}) + + +@app.route('/index', methods=['GET']) +def index(): + """Get processing status page.""" + global succ_count + success_count = sum(1 for info in processed_files.values() + if info.get('status') == 'SUCC') + processing_count = sum(1 for info in processed_files.values() + if info.get('status') == 'PROCESSING') + error_count = sum(1 for info in processed_files.values() + if info.get('status') == 'FAIL') + _succ_count = succ_count + sum(1 for info in processed_files.values() + if info.get('status') == 'SUCC') + total = total_files + progress = (success_count / total * 100) if total > 0 else 0 + + # Get page parameter from request, default to 1 + page = request.args.get('page', 1, type=int) + per_page = 50 + + # Get paginated list of processed files + items = list(processed_files.items()) + total_pages = (len(items) + per_page - 1) // per_page + start = (page - 1) * per_page + end = start + per_page + current_items = dict(items[start:end]) + + return render_template_string( + HTML_TEMPLATE, + queue_length=file_queue.qsize(), + processed_files=current_items, + progress=round(progress, 2), + page=page, + total_pages=total_pages, + processing_count=processing_count, + error_count=error_count, + succ_count=_succ_count + ) + + +@click.command() +@click.option('--layout_sample_dir', required=True, help='Directory containing layout sample files') +@click.option('--port', default=5000, help='Port to run the server on') +@click.option('--host', default='0.0.0.0', help='Host IP to run the server on') +@click.option('--timeout', default=10, help='timeout to process one file') +@click.option('--reset', is_flag=True, default=False, help='Reset cached files') +def run_server(layout_sample_dir, port, host, timeout, reset): + """Initialize and run the server.""" + __init_queue(layout_sample_dir, reset) + app.config['TIMEOUT'] = timeout + app.run(host=host, port=port) + + +if __name__ == '__main__': + run_server() diff --git a/llm_web_kit/input/datajson.py b/llm_web_kit/input/datajson.py index d844fa93..26246b58 100644 --- a/llm_web_kit/input/datajson.py +++ b/llm_web_kit/input/datajson.py @@ -1,11 +1,14 @@ +import copy import json from abc import ABC, abstractmethod from typing import Dict, List from overrides import override +from llm_web_kit.exception.exception import ExtractorChainInputException from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType -from llm_web_kit.libs.html_utils import (get_element_text, html_to_element, +from llm_web_kit.libs.html_utils import (element_to_html, get_element_text, + html_to_element, html_to_markdown_table, table_cells_count) @@ -50,11 +53,13 @@ def __init__(self): self.__list_item_start = '-' # md里的列表项前缀 self.__list_para_prefix = ' ' # 两个空格,md里的列表项非第一个段落的前缀:如果多个段落的情况,第二个以及之后的段落前缀 self.__md_special_chars = ['#', '`', ] # TODO: 先去掉$,会影响行内公式,后面再处理 + self.__nodes_document_type = [DocElementType.MM_NODE_LIST, DocElementType.PARAGRAPH, DocElementType.LIST, DocElementType.SIMPLE_TABLE, DocElementType.COMPLEX_TABLE, DocElementType.TITLE, DocElementType.IMAGE, DocElementType.AUDIO, DocElementType.VIDEO, DocElementType.CODE, DocElementType.EQUATION_INTERLINE] + self.__inline_types_document_type = [ParagraphTextType.EQUATION_INLINE, ParagraphTextType.CODE_INLINE] def to_html(self): raise NotImplementedError('This method must be implemented by the subclass.') - def to_txt(self, exclude_nodes=DocElementType.MM_NODE_LIST): + def to_txt(self, exclude_nodes=DocElementType.MM_NODE_LIST, exclude_inline_types=[]): """把content_list转化为txt格式. Args: @@ -67,7 +72,7 @@ def to_txt(self, exclude_nodes=DocElementType.MM_NODE_LIST): for page in content_lst: for content_lst_node in page: if content_lst_node['type'] not in exclude_nodes: - txt_content = self.__content_lst_node_2_txt(content_lst_node) + txt_content = self.__content_lst_node_2_txt(content_lst_node, exclude_inline_types) if txt_content and len(txt_content) > 0: text_blocks.append(txt_content) @@ -75,7 +80,7 @@ def to_txt(self, exclude_nodes=DocElementType.MM_NODE_LIST): txt = txt.strip() + self.__text_end # 加上结尾换行符 return txt - def __to_md(self, exclude_nodes=[]): + def __to_md(self, exclude_nodes=[], exclude_inline_types=[]): """把content_list转化为md格式. Args: @@ -88,7 +93,7 @@ def __to_md(self, exclude_nodes=[]): for page in content_lst: for content_lst_node in page: if content_lst_node['type'] not in exclude_nodes: - txt_content = self.__content_lst_node_2_md(content_lst_node) + txt_content = self.__content_lst_node_2_md(content_lst_node, exclude_inline_types) if txt_content and len(txt_content) > 0: md_blocks.append(txt_content) @@ -96,12 +101,31 @@ def __to_md(self, exclude_nodes=[]): md = md.strip() + self.__text_end # 加上结尾换行符 return md - def to_nlp_md(self): - md = self.__to_md(exclude_nodes=DocElementType.MM_NODE_LIST) + def __validate_exclude_nodes(self, exclude_nodes, exclude_inline_types): + if isinstance(exclude_nodes, str): + exclude_nodes = [exclude_nodes] + if isinstance(exclude_inline_types, str): + exclude_inline_types = [exclude_inline_types] + if not isinstance(exclude_nodes, list): + raise ExtractorChainInputException('exclude_nodes must be a list type.') + if not isinstance(exclude_inline_types, list): + raise ExtractorChainInputException('exclude_inline_types must be a list type.') + for node in exclude_nodes: + if node not in self.__nodes_document_type: + raise ExtractorChainInputException(f'exclude_nodes contains invalid element type: {node}') + for inline_type in exclude_inline_types: + if inline_type not in self.__inline_types_document_type: + raise ExtractorChainInputException(f'exclude_inline_types contains invalid inline type: {inline_type}') + return exclude_nodes, exclude_inline_types + + def to_nlp_md(self, exclude_nodes=[], exclude_inline_types=[]): + exclude_nodes, exclude_inline_types = self.__validate_exclude_nodes(exclude_nodes, exclude_inline_types) + md = self.__to_md(exclude_nodes + DocElementType.MM_NODE_LIST, exclude_inline_types) return md - def to_mm_md(self): - md = self.__to_md() + def to_mm_md(self, exclude_nodes=[], exclude_inline_types=[]): + self.__validate_exclude_nodes(exclude_nodes, exclude_inline_types) + md = self.__to_md(exclude_nodes, exclude_inline_types) return md def to_main_html(self) -> str: @@ -117,9 +141,11 @@ def to_main_html(self) -> str: for page in content_lst: for content_lst_node in page: raw_html = content_lst_node['raw_content'] - if raw_html: - html += raw_html - + if isinstance(raw_html, str): + html_segment = raw_html # 直接使用字符串 + else: + html_segment = element_to_html(raw_html) # 转换HtmlElement为字符串 + html += html_segment return html def to_json(self, pretty=False) -> str: @@ -129,11 +155,14 @@ def to_json(self, pretty=False) -> str: else: return json.dumps(content_lst, ensure_ascii=False) + def to_dict(self) -> dict: + return copy.deepcopy(self._get_data()) + @abstractmethod def _get_data(self) -> List[Dict]: raise NotImplementedError('This method must be implemented by the subclass.') - def __content_lst_node_2_md(self, content_lst_node: dict) -> str: + def __content_lst_node_2_md(self, content_lst_node: dict, exclude_inline_types: list = []) -> str: """把content_list里定义的每种元素块转化为markdown格式. Args: @@ -143,9 +172,9 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: """ node_type = content_lst_node['type'] if node_type == DocElementType.CODE: - code = content_lst_node['content'].get('code_content', '') + code = content_lst_node['content']['code_content'] # 这里禁止有None的content, 如果有应该消灭在模块内部。模块应该处理更精细,防止因为拼装导致掩盖了错误。 # 代码不可以 strip,因为首行可能有缩进,只能 rstrip - code = (code or '').rstrip() + code = code.rstrip() if not code: return '' language = content_lst_node['content'].get('language', '') @@ -186,7 +215,7 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: elif node_type == DocElementType.VIDEO: return '' # TODO: 视频格式 elif node_type == DocElementType.TITLE: - title_content = (content_lst_node['content'].get('title_content', '') or '').strip() + title_content = content_lst_node['content']['title_content'].strip() if not title_content: return '' level = content_lst_node['content']['level'] @@ -195,7 +224,7 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: return md_title elif node_type == DocElementType.PARAGRAPH: paragraph_el_lst = content_lst_node['content'] - one_para = self.__join_one_para(paragraph_el_lst) + one_para = self.__join_one_para(paragraph_el_lst, exclude_inline_types) return one_para elif node_type == DocElementType.LIST: items_paras = [] @@ -203,7 +232,7 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: for item_idx, item in enumerate(content_lst_node['content']['items']): paras_of_item = [] for para in item: - one_para = self.__join_one_para(para) + one_para = self.__join_one_para(para, exclude_inline_types) paras_of_item.append(one_para) # 由于markdown的列表项里可以有多个段落,这里拼装成md列表段落格式 list_prefix = f'{item_idx + 1}.' if is_ordered else self.__list_item_start # 有序列表和无需列表前缀 @@ -211,7 +240,7 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: items_paras.append(item_paras_md) md_list = '\n'.join(items_paras) return md_list - elif node_type == DocElementType.TABLE: + elif node_type == DocElementType.SIMPLE_TABLE: # 对文本格式来说,普通表格直接转为md表格,复杂表格返还原始html html_table = content_lst_node['content']['html'] if html_table is not None: @@ -220,12 +249,15 @@ def __content_lst_node_2_md(self, content_lst_node: dict) -> str: if cells_count <= 1: # 单个单元格的表格,直接返回文本 text = get_element_text(html_to_element(html_table)).strip() return text - is_complex = content_lst_node['content']['is_complex'] - if is_complex: - return html_table - else: - md_table = html_to_markdown_table(html_table) - return md_table + md_table = html_to_markdown_table(html_table) + return md_table + else: + return '' + elif node_type == DocElementType.COMPLEX_TABLE: + html_table = content_lst_node['content']['html'] + if html_table is not None: + html_table = html_table.strip() + return html_table else: return '' else: @@ -267,7 +299,7 @@ def __para_2_md_list_item(self, paras_of_item: list, list_prefix: str) -> str: return md_list_item - def __content_lst_node_2_txt(self, content_lst_node: dict) -> str: + def __content_lst_node_2_txt(self, content_lst_node: dict, exclude_inline_types=[]) -> str: """把content_list里定义的每种元素块转化为纯文本格式. Args: @@ -323,35 +355,38 @@ def __content_lst_node_2_txt(self, content_lst_node: dict) -> str: return title_content elif node_type == DocElementType.PARAGRAPH: paragraph_el_lst = content_lst_node['content'] - one_para = self.__join_one_para(paragraph_el_lst) + one_para = self.__join_one_para(paragraph_el_lst, exclude_inline_types) return one_para elif node_type == DocElementType.LIST: items_paras = [] for item in content_lst_node['content']['items']: paras_of_item = [] for para in item: - one_para = self.__join_one_para(para) + one_para = self.__join_one_para(para, exclude_inline_types) paras_of_item.append(one_para) items_paras.append(paras_of_item) items_paras = [self.__txt_para_splitter.join(item) for item in items_paras] return self.__txt_para_splitter.join(items_paras) # 对于txt格式来说一个列表项里多个段落没啥问题,但是对于markdown来说,多个段落要合并成1个,否则md格式无法表达。 - elif node_type == DocElementType.TABLE: + elif node_type == DocElementType.SIMPLE_TABLE: # 对文本格式来说,普通表格直接转为md表格,复杂表格返还原始html html_table = content_lst_node['content']['html'] if html_table is not None: html_table = html_table.strip() - is_complex = content_lst_node['content']['is_complex'] - if is_complex: - return html_table - else: - md_table = html_to_markdown_table(html_table) - return md_table + md_table = html_to_markdown_table(html_table) + return md_table + else: + return '' + elif node_type == DocElementType.COMPLEX_TABLE: + html_table = content_lst_node['content']['html'] + if html_table is not None: + html_table = html_table.strip() + return html_table else: return '' else: raise ValueError(f'content_lst_node contains invalid element type: {node_type}') # TODO: 自定义异常 - def __join_one_para(self, para: list) -> str: + def __join_one_para(self, para: list, exclude_inline_types: list = []) -> str: """把一个段落的元素块连接起来. Args: @@ -361,6 +396,8 @@ def __join_one_para(self, para: list) -> str: """ one_para = [] for el in para: + if el['t'] in exclude_inline_types: + continue if el['t'] == ParagraphTextType.TEXT: c = el['c'] if not c or not c.strip(): @@ -386,10 +423,10 @@ def _validate(self, json_obj: dict): json_obj (dict): _description_ """ if not isinstance(json_obj, dict): - raise ValueError('json_obj must be a dict type.') + raise ExtractorChainInputException('json_obj must be a dict type.') if DataJsonKey.CONTENT_LIST in json_obj: - if not isinstance(json_obj[DataJsonKey.CONTENT_LIST], list): - raise ValueError('content_list must be a list type.') + if not isinstance(json_obj.get(DataJsonKey.CONTENT_LIST, ''), list): + raise ExtractorChainInputException('content_list must be a list type.') class ContentList(StructureMapper): @@ -430,10 +467,11 @@ def __init__(self, input_data: dict): Args: input_data (dict): _description_ """ - self._validate(input_data) - self.__json_data = input_data - if DataJsonKey.CONTENT_LIST in input_data: - self.__json_data[DataJsonKey.CONTENT_LIST] = ContentList(input_data[DataJsonKey.CONTENT_LIST]) + copied_input = copy.deepcopy(input_data) # 防止修改外部数据,同时也让修改这个变量必须通过函数方法 + self._validate(copied_input) + self.__json_data = copied_input + if DataJsonKey.CONTENT_LIST in copied_input: + self.__json_data[DataJsonKey.CONTENT_LIST] = ContentList(copied_input[DataJsonKey.CONTENT_LIST]) if DataJsonKey.CONTENT_LIST not in self.__json_data: self.__json_data[DataJsonKey.CONTENT_LIST] = ContentList([]) @@ -468,7 +506,7 @@ def to_json(self, pretty=False) -> str: str: json字符串 """ json_dict = self.__json_data.copy() - json_dict[DataJsonKey.CONTENT_LIST] = self.get_content_list()._get_data() + json_dict[DataJsonKey.CONTENT_LIST] = self.get_content_list().to_dict() if pretty: return json.dumps(json_dict, indent=2, ensure_ascii=False) return json.dumps(json_dict, ensure_ascii=False) @@ -480,5 +518,5 @@ def to_dict(self) -> dict: dict: dict对象 """ json_dict = self.__json_data.copy() - json_dict[DataJsonKey.CONTENT_LIST] = self.get_content_list()._get_data() + json_dict[DataJsonKey.CONTENT_LIST] = self.get_content_list().to_dict() return json_dict diff --git a/llm_web_kit/libs/class_loader.py b/llm_web_kit/libs/class_loader.py index 4703e350..b4b0643a 100644 --- a/llm_web_kit/libs/class_loader.py +++ b/llm_web_kit/libs/class_loader.py @@ -5,7 +5,7 @@ def load_python_class_by_name(class_name: str, config: dict, init_kwargs: dict): """根据类名动态加载类,并实例化一个对象. Args: - class_name (str): 类名,格式为"模块名.pkg....类名", 例如"llm_web_kit.pipeline.formatter.html.HTMLFormatter" + class_name (str): 类名,格式为"模块名.pkg....类名", 例如"llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor" config (dict): 从文件里读取的配置 init_kwargs (dict): 初始化参数 diff --git a/llm_web_kit/libs/doc_element_type.py b/llm_web_kit/libs/doc_element_type.py index c3c63fdb..dd962ed7 100644 --- a/llm_web_kit/libs/doc_element_type.py +++ b/llm_web_kit/libs/doc_element_type.py @@ -8,7 +8,8 @@ class ParagraphTextType(object): class DocElementType(object): PARAGRAPH = 'paragraph' LIST = 'list' - TABLE = 'table' + SIMPLE_TABLE = 'simple_table' + COMPLEX_TABLE = 'complex_table' EQUATION_INTERLINE = 'equation-interline' CODE = 'code' TITLE = 'title' diff --git a/llm_web_kit/libs/html_utils.py b/llm_web_kit/libs/html_utils.py index c4628f9d..6f0e774c 100644 --- a/llm_web_kit/libs/html_utils.py +++ b/llm_web_kit/libs/html_utils.py @@ -1,4 +1,5 @@ import html +import re from copy import deepcopy from lxml.html import HtmlElement, HTMLParser, fromstring, tostring @@ -14,7 +15,9 @@ def html_to_element(html:str) -> HtmlElement: element: lxml.html.HtmlElement: element """ parser = HTMLParser(collect_ids=False, encoding='utf-8', remove_comments=True, remove_pis=True) - root = fromstring(html, parser=parser) + # 将 HTML 字符串编码为字节类型, 兼容html中有 XML 声明(如 ) + html_bytes = html.encode('utf-8') + root = fromstring(html_bytes, parser=parser) standalone = deepcopy(root) # 通过拷贝才能去掉自动加入的等标签, 非常奇怪的表现。 return standalone @@ -114,6 +117,18 @@ def iter_node(element: HtmlElement): yield from iter_node(sub_element) +def _escape_table_cell(text: str) -> str: + """转义表格单元格中的特殊字符. + + 比如 |、内容中的\n等 + """ + # 首先处理换行符,将其替换为空格 + text = re.sub(r'[\r\n]+', ' ', text) + # 转义竖线和点号,避免与markdown表格语法冲突 + escaped = text.replace('|', '\\|') + return escaped + + def html_to_markdown_table(table_html_source: str) -> str: """把html代码片段转换成markdown表格. @@ -140,7 +155,7 @@ def html_to_markdown_table(table_html_source: str) -> str: # 检查第一行是否是表头并获取表头内容 first_row_tags = rows[0].xpath('.//th | .//td') - headers = [tag.text_content().strip() for tag in first_row_tags] + headers = [_escape_table_cell(tag.text_content().strip()) for tag in first_row_tags] # 如果表头存在,添加表头和分隔符,并保证表头与最大列数对齐 if headers: while len(headers) < max_cols: @@ -155,7 +170,7 @@ def html_to_markdown_table(table_html_source: str) -> str: # 添加表格内容,跳过已被用作表头的第一行(如果有的话) for row in rows[1:]: - columns = [td.text_content().strip() for td in row.xpath('.//td | .//th')] + columns = [_escape_table_cell(td.text_content().strip()) for td in row.xpath('.//td | .//th')] # 如果这一行的列数少于最大列数,则补充空白单元格 while len(columns) < max_cols: columns.append('') @@ -191,3 +206,25 @@ def convert_html_entity_to_str(html_str): """将HTML实体转换回原始字符.""" result = html.unescape(html_str) return result + + +def remove_element(element: HtmlElement): + """删除节点. + + 删除节点时,保留节点后的tail文本 + + Args: + element: HtmlElement + """ + parent = element.getparent() + if parent is None: + return + + if element.tail: + previous = element.getprevious() + if previous is None: + parent.text = (parent.text or '') + element.tail + else: + previous.tail = (previous.tail or '') + element.tail + + parent.remove(element) diff --git a/llm_web_kit/libs/logger.py b/llm_web_kit/libs/logger.py index 0fac6c6f..4b72c45b 100644 --- a/llm_web_kit/libs/logger.py +++ b/llm_web_kit/libs/logger.py @@ -16,7 +16,7 @@ def init_logger(config: dict = None): logger_cfg = config.get('logger', []) if not logger_cfg: - logger_cfg = load_config().get('logger', []) + logger_cfg = load_config(suppress_error=True).get('logger', []) if not logger_cfg: return logger @@ -30,15 +30,17 @@ def init_logger(config: dict = None): # 检查 to 是否指向控制台 level = logger_configs.get('log-level', 'INFO') log_format = logger_configs.get('log-format', default_log_format) - if to == 'sys.stdout': - to = sys.stdout # 使用 sys.stdout 对象而不是字符串 - logger.add(to, level=level, format=log_format) - continue - else: - rotation = logger_configs.get('rotation', '1 days') - retention = logger_configs.get('retention', '1 days') - - logger.add(to, rotation=rotation, retention=retention, level=level, format=log_format, enqueue=True) + enable = logger_configs.get('enable', True) + if enable: + if to == 'sys.stdout': + to = sys.stdout # 使用 sys.stdout 对象而不是字符串 + logger.add(to, level=level, format=log_format) + continue + else: + rotation = logger_configs.get('rotation', '1 days') + retention = logger_configs.get('retention', '1 days') + + logger.add(to, rotation=rotation, retention=retention, level=level, format=log_format, enqueue=True) return logger diff --git a/llm_web_kit/libs/statics.py b/llm_web_kit/libs/statics.py index df640617..006cdcc8 100644 --- a/llm_web_kit/libs/statics.py +++ b/llm_web_kit/libs/statics.py @@ -94,10 +94,10 @@ def process_list_items(items, parent_type): elif element_type == DocElementType.LIST: # 使用递归函数处理列表项 process_list_items(element['content']['items'], DocElementType.LIST) - elif element_type == DocElementType.TABLE: + elif element_type == DocElementType.COMPLEX_TABLE: # 统计复杂表格数量 if element.get('content', {}).get('is_complex', False): - item_type = f'{DocElementType.TABLE}.complex' + item_type = f'{DocElementType.COMPLEX_TABLE}.complex' current_count = self.statics.get(item_type, 0) self.statics[item_type] = current_count + 1 diff --git a/llm_web_kit/libs/version.py b/llm_web_kit/libs/version.py index b7a55314..7f5601d9 100644 --- a/llm_web_kit/libs/version.py +++ b/llm_web_kit/libs/version.py @@ -1 +1 @@ -__version__ = '3.0.1' +__version__ = '3.1.0' diff --git a/llm_web_kit/model/assets/punc_list.jsonl b/llm_web_kit/model/assets/punc_list.jsonl new file mode 100644 index 00000000..74cfda26 --- /dev/null +++ b/llm_web_kit/model/assets/punc_list.jsonl @@ -0,0 +1,819 @@ +{"category": "Po", "punc": "⸐", "name": "FORKED PARAGRAPHOS", "hex": "0x2e10", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸮", "name": "REVERSED QUESTION MARK", "hex": "0x2e2e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ":", "name": "FULLWIDTH COLON", "hex": "0xff1a", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "⸋", "name": "RAISED SQUARE", "hex": "0x2e0b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༈", "name": "TIBETAN MARK SBRUL SHAD", "hex": "0xf08", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠰", "name": "SAMARITAN PUNCTUATION NEQUDAA", "hex": "0x830", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "¶", "name": "PILCROW SIGN", "hex": "0xb6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꫰", "name": "MEETEI MAYEK CHEIKHAN", "hex": "0xaaf0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‡", "name": "DOUBLE DAGGER", "hex": "0x2021", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐄁", "name": "AEGEAN WORD SEPARATOR DOT", "hex": "0x10101", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "၍", "name": "MYANMAR SYMBOL COMPLETED", "hex": "0x104d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹕", "name": "SMALL COLON", "hex": "0xfe55", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳆", "name": "SUNDANESE PUNCTUATION BINDU DA SATANGA", "hex": "0x1cc6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿒", "name": "TIBETAN MARK NYIS TSHEG", "hex": "0xfd2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༌", "name": "TIBETAN MARK DELIMITER TSHEG BSTAR", "hex": "0xf0c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠀", "name": "MONGOLIAN BIRGA", "hex": "0x1800", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇈", "name": "SHARADA SEPARATOR", "hex": "0x111c8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༏", "name": "TIBETAN MARK TSHEG SHAD", "hex": "0xf0f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙂", "name": "MODI DOUBLE DANDA", "hex": "0x11642", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿙", "name": "TIBETAN MARK LEADING MCHAN RTAGS", "hex": "0xfd9", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩿", "name": "OLD SOUTH ARABIAN NUMERIC INDICATOR", "hex": "0x10a7f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗊", "name": "SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS", "hex": "0x115ca", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፧", "name": "ETHIOPIC QUESTION MARK", "hex": "0x1367", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸆", "name": "RAISED INTERPOLATION MARKER", "hex": "0x2e06", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪪", "name": "TAI THAM SIGN SATKAAN", "hex": "0x1aaa", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁈", "name": "BRAHMI DOUBLE DANDA", "hex": "0x11048", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "*", "name": "ASTERISK", "hex": "0x2a", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "܊", "name": "SYRIAC CONTRACTION", "hex": "0x70a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "॰", "name": "DEVANAGARI ABBREVIATION SIGN", "hex": "0x970", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐕯", "name": "CAUCASIAN ALBANIAN CITATION MARK", "hex": "0x1056f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‶", "name": "REVERSED DOUBLE PRIME", "hex": "0x2036", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸬", "name": "SQUARED FOUR DOT PUNCTUATION", "hex": "0x2e2c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹓", "name": "MEDIEVAL EXCLAMATION MARK", "hex": "0x2e53", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛵", "name": "BAMUM COMMA", "hex": "0xa6f5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖺗", "name": "MEDEFAIDRIN COMMA", "hex": "0x16e97", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︖", "name": "PRESENTATION FORM FOR VERTICAL QUESTION MARK", "hex": "0xfe16", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐄂", "name": "AEGEAN CHECK MARK", "hex": "0x10102", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᱿", "name": "OL CHIKI PUNCTUATION DOUBLE MUCAAD", "hex": "0x1c7f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸾", "name": "WIGGLY VERTICAL LINE", "hex": "0x2e3e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐮜", "name": "PSALTER PAHLAVI FOUR DOTS WITH DOT", "hex": "0x10b9c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱄", "name": "BHAIKSUKI GAP FILLER-1", "hex": "0x11c44", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁌", "name": "BLACK LEFTWARDS BULLET", "hex": "0x204c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖬸", "name": "PAHAWH HMONG SIGN VOS TSHAB CEEB", "hex": "0x16b38", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁑", "name": "TWO ASTERISKS ALIGNED VERTICALLY", "hex": "0x2051", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁚", "name": "TWO DOT PUNCTUATION", "hex": "0x205a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܄", "name": "SYRIAC SUBLINEAR COLON", "hex": "0x704", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸶", "name": "DAGGER WITH LEFT GUARD", "hex": "0x2e36", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸵", "name": "TURNED SEMICOLON", "hex": "0x2e35", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‖", "name": "DOUBLE VERTICAL LINE", "hex": "0x2016", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧋", "name": "JAVANESE PADA ADEG ADEG", "hex": "0xa9cb", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁙", "name": "FIVE DOT PUNCTUATION", "hex": "0x2059", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ";", "name": "GREEK QUESTION MARK", "hex": "0x37e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "#", "name": "FULLWIDTH NUMBER SIGN", "hex": "0xff03", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𝪉", "name": "SIGNWRITING SEMICOLON", "hex": "0x1da89", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹌", "name": "MEDIEVAL COMMA", "hex": "0x2e4c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፦", "name": "ETHIOPIC PREFACE COLON", "hex": "0x1366", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠷", "name": "SAMARITAN PUNCTUATION MELODIC QITSA", "hex": "0x837", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸞", "name": "TILDE WITH DOT ABOVE", "hex": "0x2e1e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠶", "name": "SAMARITAN ABBREVIATION MARK", "hex": "0x836", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‣", "name": "TRIANGULAR BULLET", "hex": "0x2023", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܃", "name": "SYRIAC SUPRALINEAR COLON", "hex": "0x703", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᙮", "name": "CANADIAN SYLLABICS FULL STOP", "hex": "0x166e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "๚", "name": "THAI CHARACTER ANGKHANKHU", "hex": "0xe5a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑍", "name": "NEWA COMMA", "hex": "0x1144d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸷", "name": "DAGGER WITH RIGHT GUARD", "hex": "0x2e37", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ",", "name": "COMMA", "hex": "0x2c", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "᭞", "name": "BALINESE CARIK SIKI", "hex": "0x1b5e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿑", "name": "TIBETAN MARK MNYAM YIG GI MGO RGYAN", "hex": "0xfd1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙬", "name": "MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT", "hex": "0x1166c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༊", "name": "TIBETAN MARK BKA- SHOG YIG MGO", "hex": "0xf0a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༐", "name": "TIBETAN MARK NYIS TSHEG SHAD", "hex": "0xf10", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܋", "name": "SYRIAC HARKLEAN OBELUS", "hex": "0x70b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑓆", "name": "TIRHUTA ABBREVIATION SIGN", "hex": "0x114c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈼", "name": "KHOJKI DOUBLE SECTION MARK", "hex": "0x1123c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑝", "name": "NEWA INSERTION SIGN", "hex": "0x1145d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "߷", "name": "NKO SYMBOL GBAKURUNEN", "hex": "0x7f7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑏", "name": "NEWA ABBREVIATION SIGN", "hex": "0x1144f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꩞", "name": "CHAM PUNCTUATION DOUBLE DANDA", "hex": "0xaa5e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁊", "name": "BRAHMI PUNCTUATION DOUBLE DOT", "hex": "0x1104a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳹", "name": "COPTIC OLD NUBIAN FULL STOP", "hex": "0x2cf9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗓", "name": "SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS", "hex": "0x115d3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑋", "name": "NEWA DANDA", "hex": "0x1144b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙢", "name": "MONGOLIAN DOUBLE BIRGA WITH ORNAMENT", "hex": "0x11662", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸇", "name": "RAISED DOTTED INTERPOLATION MARKER", "hex": "0x2e07", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖭄", "name": "PAHAWH HMONG SIGN XAUS", "hex": "0x16b44", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁝", "name": "TRICOLON", "hex": "0x205d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹄", "name": "DOUBLE SUSPENSION MARK", "hex": "0x2e44", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪫", "name": "TAI THAM SIGN SATKAANKUU", "hex": "0x1aab", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՝", "name": "ARMENIAN COMMA", "hex": "0x55d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪩", "name": "TAI THAM SIGN KAANKUU", "hex": "0x1aa9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬹", "name": "AVESTAN ABBREVIATION MARK", "hex": "0x10b39", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸘", "name": "INVERTED INTERROBANG", "hex": "0x2e18", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸛", "name": "TILDE WITH RING ABOVE", "hex": "0x2e1b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܍", "name": "SYRIAC HARKLEAN ASTERISCUS", "hex": "0x70d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠳", "name": "SAMARITAN PUNCTUATION BAU", "hex": "0x833", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹍", "name": "PARAGRAPHUS MARK", "hex": "0x2e4d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐏐", "name": "OLD PERSIAN WORD DIVIDER", "hex": "0x103d0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬺", "name": "TINY TWO DOTS OVER ONE DOT PUNCTUATION", "hex": "0x10b3a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՟", "name": "ARMENIAN ABBREVIATION MARK", "hex": "0x55f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "¡", "name": "INVERTED EXCLAMATION MARK", "hex": "0xa1", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪡", "name": "TAI THAM SIGN WIANGWAAK", "hex": "0x1aa1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈹", "name": "KHOJKI DOUBLE DANDA", "hex": "0x11239", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪡", "name": "SOYOMBO TERMINAL MARK-1", "hex": "0x11aa1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠼", "name": "SAMARITAN PUNCTUATION ARKAANU", "hex": "0x83c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‱", "name": "PER TEN THOUSAND SIGN", "hex": "0x2031", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛴", "name": "BAMUM COLON", "hex": "0xa6f4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖬺", "name": "PAHAWH HMONG SIGN VOS THIAB", "hex": "0x16b3a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸙", "name": "PALM BRANCH", "hex": "0x2e19", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛶", "name": "BAMUM SEMICOLON", "hex": "0xa6f6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "\"", "name": "QUOTATION MARK", "hex": "0x22", "common_en": true, "common_zh": true, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "᭽", "name": "BALINESE PANTI LANTANG", "hex": "0x1b7d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛲", "name": "BAMUM NJAEMLI", "hex": "0xa6f2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠾", "name": "SAMARITAN PUNCTUATION ANNAAU", "hex": "0x83e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‼", "name": "DOUBLE EXCLAMATION MARK", "hex": "0x203c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑠻", "name": "DOGRA ABBREVIATION SIGN", "hex": "0x1183b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙠", "name": "MONGOLIAN BIRGA WITH ORNAMENT", "hex": "0x11660", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑜽", "name": "AHOM SIGN SECTION", "hex": "0x1173d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗋", "name": "SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS", "hex": "0x115cb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣏", "name": "SAURASHTRA DOUBLE DANDA", "hex": "0xa8cf", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠸", "name": "SAMARITAN PUNCTUATION ZIQAA", "hex": "0x838", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁖", "name": "THREE DOT PUNCTUATION", "hex": "0x2056", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "\", "name": "FULLWIDTH REVERSE SOLIDUS", "hex": "0xff3c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬽", "name": "LARGE ONE DOT OVER TWO DOTS PUNCTUATION", "hex": "0x10b3d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇅", "name": "SHARADA DANDA", "hex": "0x111c5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹪", "name": "SMALL PERCENT SIGN", "hex": "0xfe6a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖬷", "name": "PAHAWH HMONG SIGN VOS THOM", "hex": "0x16b37", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹋", "name": "TRIPLE DAGGER", "hex": "0x2e4b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫶", "name": "MANICHAEAN PUNCTUATION LINE FILLER", "hex": "0x10af6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩂", "name": "ZANABAZAR SQUARE MARK SHAD", "hex": "0x11a42", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꡶", "name": "PHAGS-PA MARK SHAD", "hex": "0xa876", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭚", "name": "BALINESE PANTI", "hex": "0x1b5a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖺙", "name": "MEDEFAIDRIN SYMBOL AIVA", "hex": "0x16e99", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‽", "name": "INTERROBANG", "hex": "0x203d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸫", "name": "ONE DOT OVER TWO DOTS PUNCTUATION", "hex": "0x2e2b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "?", "name": "QUESTION MARK", "hex": "0x3f", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𖫵", "name": "BASSA VAH FULL STOP", "hex": "0x16af5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙧", "name": "MONGOLIAN INVERTED BIRGA", "hex": "0x11667", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠁", "name": "MONGOLIAN ELLIPSIS", "hex": "0x1801", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐽕", "name": "SOGDIAN PUNCTUATION TWO VERTICAL BARS", "hex": "0x10f55", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸳", "name": "RAISED DOT", "hex": "0x2e33", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒑰", "name": "CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER", "hex": "0x12470", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣹", "name": "DEVANAGARI GAP FILLER", "hex": "0xa8f9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹌", "name": "DOUBLE WAVY OVERLINE", "hex": "0xfe4c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗔", "name": "SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS", "hex": "0x115d4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳺", "name": "COPTIC OLD NUBIAN DIRECT QUESTION MARK", "hex": "0x2cfa", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗇", "name": "SIDDHAM REPETITION MARK-2", "hex": "0x115c7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "/", "name": "SOLIDUS", "hex": "0x2f", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𒿲", "name": "CYPRO-MINOAN SIGN CM302", "hex": "0x12ff2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⵰", "name": "TIFINAGH SEPARATOR MARK", "hex": "0x2d70", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸪", "name": "TWO DOTS OVER ONE DOT PUNCTUATION", "hex": "0x2e2a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": """, "name": "FULLWIDTH QUOTATION MARK", "hex": "0xff02", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿐", "name": "TIBETAN MARK BSKA- SHOG GI MGO RGYAN", "hex": "0xfd0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᥅", "name": "LIMBU QUESTION MARK", "hex": "0x1945", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧉", "name": "JAVANESE PADA LUNGSI", "hex": "0xa9c9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༒", "name": "TIBETAN MARK RGYA GRAM SHAD", "hex": "0xf12", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "@", "name": "COMMERCIAL AT", "hex": "0x40", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱅", "name": "BHAIKSUKI GAP FILLER-2", "hex": "0x11c45", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "!", "name": "EXCLAMATION MARK", "hex": "0x21", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "꫱", "name": "MEETEI MAYEK AHANG KHUDAM", "hex": "0xaaf1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︐", "name": "PRESENTATION FORM FOR VERTICAL COMMA", "hex": "0xfe10", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "\\", "name": "REVERSE SOLIDUS", "hex": "0x5c", "common_en": true, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‷", "name": "REVERSED TRIPLE PRIME", "hex": "0x2037", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "٬", "name": "ARABIC THOUSANDS SEPARATOR", "hex": "0x66c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹔", "name": "MEDIEVAL QUESTION MARK", "hex": "0x2e54", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꡴", "name": "PHAGS-PA SINGLE HEAD MARK", "hex": "0xa874", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༆", "name": "TIBETAN MARK CARET YIG MGO PHUR SHAD MA", "hex": "0xf06", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧍", "name": "JAVANESE TURNED PADA PISELEH", "hex": "0xa9cd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁋", "name": "BRAHMI PUNCTUATION LINE", "hex": "0x1104b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁗", "name": "QUADRUPLE PRIME", "hex": "0x2057", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗐", "name": "SIDDHAM SECTION MARK DOUBLE RING WITH RAYS", "hex": "0x115d0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇛", "name": "SHARADA SIGN SIDDHAM", "hex": "0x111db", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠲", "name": "SAMARITAN PUNCTUATION ANGED", "hex": "0x832", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧄", "name": "JAVANESE PADA MADYA", "hex": "0xa9c4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑃀", "name": "KAITHI DANDA", "hex": "0x110c0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸒", "name": "HYPODIASTOLE", "hex": "0x2e12", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "•", "name": "BULLET", "hex": "0x2022", "common_en": true, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁜", "name": "DOTTED CROSS", "hex": "0x205c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "、", "name": "IDEOGRAPHIC COMMA", "hex": "0x3001", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "⁁", "name": "CARET INSERTION POINT", "hex": "0x2041", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑚", "name": "NEWA DOUBLE COMMA", "hex": "0x1145a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༔", "name": "TIBETAN MARK GTER TSHEG", "hex": "0xf14", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ":", "name": "COLON", "hex": "0x3a", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𑪢", "name": "SOYOMBO TERMINAL MARK-2", "hex": "0x11aa2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠵", "name": "SAMARITAN PUNCTUATION SHIYYAALAA", "hex": "0x835", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭟", "name": "BALINESE CARIK PAREREN", "hex": "0x1b5f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐮚", "name": "PSALTER PAHLAVI TURNED SECTION MARK", "hex": "0x10b9a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸴", "name": "RAISED COMMA", "hex": "0x2e34", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹒", "name": "SMALL FULL STOP", "hex": "0xfe52", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳂", "name": "SUNDANESE PUNCTUATION BINDU PURNAMA", "hex": "0x1cc2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᥄", "name": "LIMBU EXCLAMATION MARK", "hex": "0x1944", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹅", "name": "INVERTED LOW KAVYKA", "hex": "0x2e45", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ";", "name": "SEMICOLON", "hex": "0x3b", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "᜶", "name": "PHILIPPINE DOUBLE PUNCTUATION", "hex": "0x1736", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫲", "name": "MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT", "hex": "0x10af2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹊", "name": "CENTRELINE OVERLINE", "hex": "0xfe4a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‧", "name": "HYPHENATION POINT", "hex": "0x2027", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "·", "name": "MIDDLE DOT", "hex": "0xb7", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "᠃", "name": "MONGOLIAN FULL STOP", "hex": "0x1803", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳻", "name": "COPTIC OLD NUBIAN INDIRECT QUESTION MARK", "hex": "0x2cfb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᱾", "name": "OL CHIKI PUNCTUATION MUCAAD", "hex": "0x1c7e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹑", "name": "SMALL IDEOGRAPHIC COMMA", "hex": "0xfe51", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፥", "name": "ETHIOPIC COLON", "hex": "0x1365", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "૰", "name": "GUJARATI ABBREVIATION SIGN", "hex": "0xaf0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬻", "name": "SMALL TWO DOTS OVER ONE DOT PUNCTUATION", "hex": "0x10b3b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪛", "name": "SOYOMBO MARK SHAD", "hex": "0x11a9b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹆", "name": "INVERTED LOW KAVYKA WITH KAVYKA ABOVE", "hex": "0x2e46", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧟", "name": "JAVANESE PADA ISEN-ISEN", "hex": "0xa9df", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙥", "name": "MONGOLIAN ROTATED BIRGA WITH ORNAMENT", "hex": "0x11665", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༑", "name": "TIBETAN MARK RIN CHEN SPUNGS SHAD", "hex": "0xf11", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙃", "name": "MODI ABBREVIATION SIGN", "hex": "0x11643", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‗", "name": "DOUBLE LOW LINE", "hex": "0x2017", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꘏", "name": "VAI QUESTION MARK", "hex": "0xa60f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗌", "name": "SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS", "hex": "0x115cc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁇", "name": "BRAHMI DANDA", "hex": "0x11047", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "჻", "name": "GEORGIAN PARAGRAPH SEPARATOR", "hex": "0x10fb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꫟", "name": "TAI VIET SYMBOL KOI KOI", "hex": "0xaadf", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᯼", "name": "BATAK SYMBOL BINDU NA METEK", "hex": "0x1bfc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‥", "name": "TWO DOT LEADER", "hex": "0x2025", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︕", "name": "PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK", "hex": "0xfe15", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐮙", "name": "PSALTER PAHLAVI SECTION MARK", "hex": "0x10b99", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "&", "name": "FULLWIDTH AMPERSAND", "hex": "0xff06", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩃", "name": "ZANABAZAR SQUARE MARK DOUBLE SHAD", "hex": "0x11a43", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑃁", "name": "KAITHI DOUBLE DANDA", "hex": "0x110c1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗆", "name": "SIDDHAM REPETITION MARK-1", "hex": "0x115c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅃", "name": "CHAKMA QUESTION MARK", "hex": "0x11143", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፣", "name": "ETHIOPIC COMMA", "hex": "0x1363", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "៙", "name": "KHMER SIGN PHNAEK MUAN", "hex": "0x17d9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "․", "name": "ONE DOT LEADER", "hex": "0x2024", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐤟", "name": "PHOENICIAN WORD SEPARATOR", "hex": "0x1091f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅵", "name": "MAHAJANI SECTION MARK", "hex": "0x11175", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꘎", "name": "VAI FULL STOP", "hex": "0xa60e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩑", "name": "KHAROSHTHI PUNCTUATION SMALL CIRCLE", "hex": "0x10a51", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܅", "name": "SYRIAC HORIZONTAL COLON", "hex": "0x705", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𞥞", "name": "ADLAM INITIAL EXCLAMATION MARK", "hex": "0x1e95e", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᛬", "name": "RUNIC MULTIPLE PUNCTUATION", "hex": "0x16ec", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༇", "name": "TIBETAN MARK YIG MGO TSHEG SHAD MA", "hex": "0xf07", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸖", "name": "DOTTED RIGHT-POINTING ANGLE", "hex": "0x2e16", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳿", "name": "COPTIC MORPHOLOGICAL DIVIDER", "hex": "0x2cff", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙣", "name": "MONGOLIAN TRIPLE BIRGA WITH ORNAMENT", "hex": "0x11663", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "።", "name": "ETHIOPIC FULL STOP", "hex": "0x1362", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁈", "name": "QUESTION EXCLAMATION MARK", "hex": "0x2048", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁘", "name": "FOUR DOT PUNCTUATION", "hex": "0x2058", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "*", "name": "FULLWIDTH ASTERISK", "hex": "0xff0a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁏", "name": "REVERSED SEMICOLON", "hex": "0x204f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꥟", "name": "REJANG SECTION MARK", "hex": "0xa95f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᰾", "name": "LEPCHA PUNCTUATION TSHOOK CER-WA", "hex": "0x1c3e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣼", "name": "DEVANAGARI SIGN SIDDHAM", "hex": "0xa8fc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩒", "name": "KHAROSHTHI PUNCTUATION CIRCLE", "hex": "0x10a52", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁉", "name": "EXCLAMATION QUESTION MARK", "hex": "0x2049", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "၎", "name": "MYANMAR SYMBOL AFOREMENTIONED", "hex": "0x104e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖺚", "name": "MEDEFAIDRIN EXCLAMATION OH", "hex": "0x16e9a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፨", "name": "ETHIOPIC PARAGRAPH SEPARATOR", "hex": "0x1368", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪥", "name": "TAI THAM SIGN DOKMAI", "hex": "0x1aa5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪚", "name": "SOYOMBO MARK TSHEG", "hex": "0x11a9a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹁", "name": "REVERSED COMMA", "hex": "0x2e41", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩘", "name": "KHAROSHTHI PUNCTUATION LINES", "hex": "0x10a58", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𝪊", "name": "SIGNWRITING COLON", "hex": "0x1da8a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑿿", "name": "TAMIL PUNCTUATION END OF TEXT", "hex": "0x11fff", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿚", "name": "TIBETAN MARK TRAILING MCHAN RTAGS", "hex": "0xfda", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐽙", "name": "SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT", "hex": "0x10f59", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖩮", "name": "MRO DANDA", "hex": "0x16a6e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "،", "name": "ARABIC COMMA", "hex": "0x60c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳾", "name": "COPTIC FULL STOP", "hex": "0x2cfe", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ".", "name": "FULLWIDTH FULL STOP", "hex": "0xff0e", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑛", "name": "NEWA PLACEHOLDER MARK", "hex": "0x1145b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "྅", "name": "TIBETAN MARK PALUTA", "hex": "0xf85", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑻷", "name": "MAKASAR PASSIMBANG", "hex": "0x11ef7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐽗", "name": "SOGDIAN PUNCTUATION CIRCLE WITH DOT", "hex": "0x10f57", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸽", "name": "VERTICAL SIX DOTS", "hex": "0x2e3d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꓾", "name": "LISU PUNCTUATION COMMA", "hex": "0xa4fe", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᰽", "name": "LEPCHA PUNCTUATION CER-WA", "hex": "0x1c3d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭠", "name": "BALINESE PAMENENG", "hex": "0x1b60", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣸", "name": "DEVANAGARI SIGN PUSHPIKA", "hex": "0xa8f8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐾆", "name": "OLD UYGHUR PUNCTUATION BAR", "hex": "0x10f86", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐾉", "name": "OLD UYGHUR PUNCTUATION FOUR DOTS", "hex": "0x10f89", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "៕", "name": "KHMER SIGN BARIYOOSAN", "hex": "0x17d5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "៘", "name": "KHMER SIGN BEYYAL", "hex": "0x17d8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܀", "name": "SYRIAC END OF PARAGRAPH", "hex": "0x700", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꓿", "name": "LISU PUNCTUATION FULL STOP", "hex": "0xa4ff", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹟", "name": "SMALL NUMBER SIGN", "hex": "0xfe5f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹠", "name": "SMALL AMPERSAND", "hex": "0xfe60", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "/", "name": "FULLWIDTH SOLIDUS", "hex": "0xff0f", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "৽", "name": "BENGALI ABBREVIATION SIGN", "hex": "0x9fd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "&", "name": "AMPERSAND", "hex": "0x26", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱱", "name": "MARCHEN MARK SHAD", "hex": "0x11c71", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁍", "name": "BRAHMI PUNCTUATION LOTUS", "hex": "0x1104d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱃", "name": "BHAIKSUKI WORD SEPARATOR", "hex": "0x11c43", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᛫", "name": "RUNIC SINGLE PUNCTUATION", "hex": "0x16eb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꩟", "name": "CHAM PUNCTUATION TRIPLE DANDA", "hex": "0xaa5f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︔", "name": "PRESENTATION FORM FOR VERTICAL SEMICOLON", "hex": "0xfe14", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "٪", "name": "ARABIC PERCENT SIGN", "hex": "0x66a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸭", "name": "FIVE DOT MARK", "hex": "0x2e2d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪣", "name": "TAI THAM SIGN KEOW", "hex": "0x1aa3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧌", "name": "JAVANESE PADA PISELEH", "hex": "0xa9cc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪨", "name": "TAI THAM SIGN KAAN", "hex": "0x1aa8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛳", "name": "BAMUM FULL STOP", "hex": "0xa6f3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "౷", "name": "TELUGU SIGN SIDDHAM", "hex": "0xc77", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗉", "name": "SIDDHAM END OF TEXT MARK", "hex": "0x115c9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐽘", "name": "SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS", "hex": "0x10f58", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꡷", "name": "PHAGS-PA MARK DOUBLE SHAD", "hex": "0xa877", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "'", "name": "APOSTROPHE", "hex": "0x27", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︒", "name": "PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP", "hex": "0xfe12", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸹", "name": "TOP HALF SECTION SIGN", "hex": "0x2e39", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؟", "name": "ARABIC QUESTION MARK", "hex": "0x61f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗈", "name": "SIDDHAM REPETITION MARK-3", "hex": "0x115c8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༎", "name": "TIBETAN MARK NYIS SHAD", "hex": "0xf0e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇇", "name": "SHARADA ABBREVIATION SIGN", "hex": "0x111c7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "।", "name": "DEVANAGARI DANDA", "hex": "0x964", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꤯", "name": "KAYAH LI SIGN SHYA", "hex": "0xa92f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗃", "name": "SIDDHAM DOUBLE DANDA", "hex": "0x115c3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸁", "name": "RIGHT ANGLE DOTTED SUBSTITUTION MARKER", "hex": "0x2e01", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸀", "name": "RIGHT ANGLE SUBSTITUTION MARKER", "hex": "0x2e00", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᯾", "name": "BATAK SYMBOL BINDU JUDUL", "hex": "0x1bfe", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹊", "name": "DOTTED SOLIDUS", "hex": "0x2e4a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༅", "name": "TIBETAN MARK CLOSING YIG MGO SGAB MA", "hex": "0xf05", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭾", "name": "BALINESE PAMADA LANTANG", "hex": "0x1b7e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳃", "name": "SUNDANESE PUNCTUATION BINDU CAKRA", "hex": "0x1cc3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "॥", "name": "DEVANAGARI DOUBLE DANDA", "hex": "0x965", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙦", "name": "MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT", "hex": "0x11666", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁞", "name": "VERTICAL FOUR DOTS", "hex": "0x205e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑂾", "name": "KAITHI SECTION MARK", "hex": "0x110be", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑚹", "name": "TAKRI ABBREVIATION SIGN", "hex": "0x116b9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁊", "name": "TIRONIAN SIGN ET", "hex": "0x204a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "಄", "name": "KANNADA SIGN SIDDHAM", "hex": "0xc84", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗄", "name": "SIDDHAM SEPARATOR DOT", "hex": "0x115c4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "๏", "name": "THAI CHARACTER FONGMAN", "hex": "0xe4f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "៖", "name": "KHMER SIGN CAMNUC PII KUUH", "hex": "0x17d6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𝪇", "name": "SIGNWRITING COMMA", "hex": "0x1da87", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖩯", "name": "MRO DOUBLE DANDA", "hex": "0x16a6f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹏", "name": "CORNISH VERSE DIVIDER", "hex": "0x2e4f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗖", "name": "SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES", "hex": "0x115d6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅀", "name": "CHAKMA SECTION MARK", "hex": "0x11140", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܈", "name": "SYRIAC SUPRALINEAR COLON SKEWED LEFT", "hex": "0x708", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "¿", "name": "INVERTED QUESTION MARK", "hex": "0xbf", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠽", "name": "SAMARITAN PUNCTUATION SOF MASHFAAT", "hex": "0x83d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹉", "name": "DOUBLE STACKED COMMA", "hex": "0x2e49", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩔", "name": "KHAROSHTHI PUNCTUATION MANGALAM", "hex": "0x10a54", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹈", "name": "LOW KAVYKA WITH DOT", "hex": "0x2e48", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩗", "name": "KHAROSHTHI PUNCTUATION DOUBLE DANDA", "hex": "0x10a57", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "·", "name": "GREEK ANO TELEIA", "hex": "0x387", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬿", "name": "LARGE ONE RING OVER TWO RINGS PUNCTUATION", "hex": "0x10b3f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇞", "name": "SHARADA SECTION MARK-1", "hex": "0x111de", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "※", "name": "REFERENCE MARK", "hex": "0x203b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸰", "name": "RING POINT", "hex": "0x2e30", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸲", "name": "TURNED COMMA", "hex": "0x2e32", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸏", "name": "PARAGRAPHOS", "hex": "0x2e0f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؝", "name": "ARABIC END OF TEXT MARK", "hex": "0x61d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "߹", "name": "NKO EXCLAMATION MARK", "hex": "0x7f9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳄", "name": "SUNDANESE PUNCTUATION BINDU LEU SATANGA", "hex": "0x1cc4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸑", "name": "REVERSED FORKED PARAGRAPHOS", "hex": "0x2e11", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠅", "name": "MONGOLIAN FOUR DOTS", "hex": "0x1805", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣺", "name": "DEVANAGARI CARET", "hex": "0xa8fa", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩅", "name": "ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK", "hex": "0x11a45", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧇", "name": "JAVANESE PADA PANGKAT", "hex": "0xa9c7", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑂼", "name": "KAITHI ENUMERATION SIGN", "hex": "0x110bc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇍", "name": "SHARADA SUTRA MARK", "hex": "0x111cd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꛷", "name": "BAMUM QUESTION MARK", "hex": "0xa6f7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꡵", "name": "PHAGS-PA DOUBLE HEAD MARK", "hex": "0xa875", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፡", "name": "ETHIOPIC WORDSPACE", "hex": "0x1361", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫴", "name": "MANICHAEAN PUNCTUATION DOT", "hex": "0x10af4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪟", "name": "SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME", "hex": "0x11a9f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‰", "name": "PER MILLE SIGN", "hex": "0x2030", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‾", "name": "OVERLINE", "hex": "0x203e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙫", "name": "MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT", "hex": "0x1166b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈻", "name": "KHOJKI SECTION MARK", "hex": "0x1123b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "†", "name": "DAGGER", "hex": "0x2020", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፤", "name": "ETHIOPIC SEMICOLON", "hex": "0x1364", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "၌", "name": "MYANMAR SYMBOL LOCATIVE", "hex": "0x104c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᰻", "name": "LEPCHA PUNCTUATION TA-ROL", "hex": "0x1c3b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؍", "name": "ARABIC DATE SEPARATOR", "hex": "0x60d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "׳", "name": "HEBREW PUNCTUATION GERESH", "hex": "0x5f3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹫", "name": "SMALL COMMERCIAL AT", "hex": "0xfe6b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "་", "name": "TIBETAN MARK INTERSYLLABIC TSHEG", "hex": "0xf0b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹆", "name": "WHITE SESAME DOT", "hex": "0xfe46", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩖", "name": "KHAROSHTHI PUNCTUATION DANDA", "hex": "0x10a56", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭝", "name": "BALINESE CARIK PAMUNGKAH", "hex": "0x1b5d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹨", "name": "SMALL REVERSE SOLIDUS", "hex": "0xfe68", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹃", "name": "DASH WITH LEFT UPTURN", "hex": "0x2e43", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒑳", "name": "CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON", "hex": "0x12473", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸎", "name": "EDITORIAL CORONIS", "hex": "0x2e0e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "׀", "name": "HEBREW PUNCTUATION PASEQ", "hex": "0x5c0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠇", "name": "MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER", "hex": "0x1807", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՛", "name": "ARMENIAN EMPHASIS MARK", "hex": "0x55b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖿢", "name": "OLD CHINESE HOOK MARK", "hex": "0x16fe2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꩝", "name": "CHAM PUNCTUATION DANDA", "hex": "0xaa5d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠱", "name": "SAMARITAN PUNCTUATION AFSAAQ", "hex": "0x831", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒑴", "name": "CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON", "hex": "0x12474", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᰼", "name": "LEPCHA PUNCTUATION NYET THYOOM TA-ROL", "hex": "0x1c3c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑂿", "name": "KAITHI DOUBLE SECTION MARK", "hex": "0x110bf", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܇", "name": "SYRIAC COLON SKEWED RIGHT", "hex": "0x707", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "。", "name": "IDEOGRAPHIC FULL STOP", "hex": "0x3002", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "⁃", "name": "HYPHEN BULLET", "hex": "0x2043", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗏", "name": "SIDDHAM SECTION MARK DOUBLE RING", "hex": "0x115cf", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "߸", "name": "NKO COMMA", "hex": "0x7f8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁉", "name": "BRAHMI PUNCTUATION DOT", "hex": "0x11049", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙪", "name": "MONGOLIAN SWIRL BIRGA WITH ORNAMENT", "hex": "0x1166a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪠", "name": "TAI THAM SIGN WIANG", "hex": "0x1aa0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "၊", "name": "MYANMAR SIGN LITTLE SECTION", "hex": "0x104a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠂", "name": "MONGOLIAN COMMA", "hex": "0x1802", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "〃", "name": "DITTO MARK", "hex": "0x3003", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐮛", "name": "PSALTER PAHLAVI FOUR DOTS WITH CROSS", "hex": "0x10b9b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸸", "name": "TURNED DAGGER", "hex": "0x2e38", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗑", "name": "SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS", "hex": "0x115d1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "״", "name": "HEBREW PUNCTUATION GERSHAYIM", "hex": "0x5f4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧃", "name": "JAVANESE PADA ANDAP", "hex": "0xa9c3", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅁", "name": "CHAKMA DANDA", "hex": "0x11141", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗅", "name": "SIDDHAM SEPARATOR BAR", "hex": "0x115c5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑥅", "name": "DIVES AKURU GAP FILLER", "hex": "0x11945", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐡗", "name": "IMPERIAL ARAMAIC SECTION SIGN", "hex": "0x10857", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑁌", "name": "BRAHMI PUNCTUATION CRESCENT BAR", "hex": "0x1104c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧅", "name": "JAVANESE PADA LUHUR", "hex": "0xa9c5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇆", "name": "SHARADA DOUBLE DANDA", "hex": "0x111c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙨", "name": "MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT", "hex": "0x11668", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐄀", "name": "AEGEAN WORD SEPARATOR LINE", "hex": "0x10100", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༄", "name": "TIBETAN MARK INITIAL YIG MGO MDUN MA", "hex": "0xf04", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑊩", "name": "MULTANI SECTION MARK", "hex": "0x112a9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܆", "name": "SYRIAC COLON SKEWED LEFT", "hex": "0x706", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "#", "name": "NUMBER SIGN", "hex": "0x23", "common_en": true, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؉", "name": "ARABIC-INDIC PER MILLE SIGN", "hex": "0x609", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁋", "name": "REVERSED PILCROW SIGN", "hex": "0x204b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹖", "name": "SMALL QUESTION MARK", "hex": "0xfe56", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿔", "name": "TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA", "hex": "0xfd4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‴", "name": "TRIPLE PRIME", "hex": "0x2034", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︙", "name": "PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS", "hex": "0xfe19", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "@", "name": "FULLWIDTH COMMERCIAL AT", "hex": "0xff20", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗒", "name": "SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS", "hex": "0x115d2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "・", "name": "KATAKANA MIDDLE DOT", "hex": "0x30fb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "§", "name": "SECTION SIGN", "hex": "0xa7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑌", "name": "NEWA DOUBLE DANDA", "hex": "0x1144c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗁", "name": "SIDDHAM SIGN SIDDHAM", "hex": "0x115c1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︑", "name": "PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA", "hex": "0xfe11", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑑎", "name": "NEWA GAP FILLER", "hex": "0x1144e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "៚", "name": "KHMER SIGN KOOMUUT", "hex": "0x17da", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܂", "name": "SYRIAC SUBLINEAR FULL STOP", "hex": "0x702", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁛", "name": "FOUR DOT MARK", "hex": "0x205b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫰", "name": "MANICHAEAN PUNCTUATION STAR", "hex": "0x10af0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑂻", "name": "KAITHI ABBREVIATION SIGN", "hex": "0x110bb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "。", "name": "HALFWIDTH IDEOGRAPHIC FULL STOP", "hex": "0xff61", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪬", "name": "TAI THAM SIGN HANG", "hex": "0x1aac", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠈", "name": "MONGOLIAN MANCHU COMMA", "hex": "0x1808", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𝪋", "name": "SIGNWRITING PARENTHESIS", "hex": "0x1da8b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "〽", "name": "PART ALTERNATION MARK", "hex": "0x303d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬼", "name": "LARGE TWO DOTS OVER ONE DOT PUNCTUATION", "hex": "0x10b3c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪤", "name": "TAI THAM SIGN HOY", "hex": "0x1aa4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "੶", "name": "GURMUKHI ABBREVIATION SIGN", "hex": "0xa76", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗎", "name": "SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS", "hex": "0x115ce", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳁", "name": "SUNDANESE PUNCTUATION BINDU PANGLONG", "hex": "0x1cc1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒑱", "name": "CUNEIFORM PUNCTUATION SIGN VERTICAL COLON", "hex": "0x12471", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒑲", "name": "CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON", "hex": "0x12472", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫵", "name": "MANICHAEAN PUNCTUATION TWO DOTS", "hex": "0x10af5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧆", "name": "JAVANESE PADA WINDU", "hex": "0xa9c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁇", "name": "DOUBLE QUESTION MARK", "hex": "0x2047", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖺘", "name": "MEDEFAIDRIN FULL STOP", "hex": "0x16e98", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑥆", "name": "DIVES AKURU END OF TEXT MARK", "hex": "0x11946", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠹", "name": "SAMARITAN PUNCTUATION QITSA", "hex": "0x839", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭛", "name": "BALINESE PAMADA", "hex": "0x1b5b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՜", "name": "ARMENIAN EXCLAMATION MARK", "hex": "0x55c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "།", "name": "TIBETAN MARK SHAD", "hex": "0xf0d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐤿", "name": "LYDIAN TRIANGULAR MARK", "hex": "0x1093f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︰", "name": "PRESENTATION FORM FOR VERTICAL TWO DOT LEADER", "hex": "0xfe30", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᭜", "name": "BALINESE WINDU", "hex": "0x1b5c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁍", "name": "BLACK RIGHTWARDS BULLET", "hex": "0x204d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꙳", "name": "SLAVONIC ASTERISK", "hex": "0xa673", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܉", "name": "SYRIAC SUBLINEAR COLON SKEWED RIGHT", "hex": "0x709", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹡", "name": "SMALL ASTERISK", "hex": "0xfe61", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐽖", "name": "SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS", "hex": "0x10f56", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗗", "name": "SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES", "hex": "0x115d7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᰿", "name": "LEPCHA PUNCTUATION TSHOOK", "hex": "0x1c3f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "?", "name": "FULLWIDTH QUESTION MARK", "hex": "0xff1f", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "၏", "name": "MYANMAR SYMBOL GENITIVE", "hex": "0x104f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸱", "name": "WORD SEPARATOR MIDDLE DOT", "hex": "0x2e31", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪭", "name": "TAI THAM SIGN CAANG", "hex": "0x1aad", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꯫", "name": "MEETEI MAYEK CHEIKHEI", "hex": "0xabeb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "、", "name": "HALFWIDTH IDEOGRAPHIC COMMA", "hex": "0xff64", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪜", "name": "SOYOMBO MARK DOUBLE SHAD", "hex": "0x11a9c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱰", "name": "MARCHEN HEAD MARK", "hex": "0x11c70", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꤮", "name": "KAYAH LI SIGN CWI", "hex": "0xa92e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠻", "name": "SAMARITAN PUNCTUATION TURU", "hex": "0x83b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹐", "name": "SMALL COMMA", "hex": "0xfe50", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՚", "name": "ARMENIAN APOSTROPHE", "hex": "0x55a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "…", "name": "HORIZONTAL ELLIPSIS", "hex": "0x2026", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "⹒", "name": "TIRONIAN SIGN CAPITAL ET", "hex": "0x2e52", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹉", "name": "DASHED OVERLINE", "hex": "0xfe49", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩐", "name": "KHAROSHTHI PUNCTUATION DOT", "hex": "0x10a50", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "︓", "name": "PRESENTATION FORM FOR VERTICAL COLON", "hex": "0xfe13", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꫞", "name": "TAI VIET SYMBOL HO HOI", "hex": "0xaade", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ";", "name": "FULLWIDTH SEMICOLON", "hex": "0xff1b", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "։", "name": "ARMENIAN FULL STOP", "hex": "0x589", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹎", "name": "PUNCTUS ELEVATUS MARK", "hex": "0x2e4e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐾈", "name": "OLD UYGHUR PUNCTUATION TWO DOTS", "hex": "0x10f88", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩄", "name": "ZANABAZAR SQUARE MARK LONG TSHEG", "hex": "0x11a44", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳅", "name": "SUNDANESE PUNCTUATION BINDU KA SATANGA", "hex": "0x1cc5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꙾", "name": "CYRILLIC KAVYKA", "hex": "0xa67e", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ",", "name": "FULLWIDTH COMMA", "hex": "0xff0c", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𑱂", "name": "BHAIKSUKI DOUBLE DANDA", "hex": "0x11c42", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪢", "name": "TAI THAM SIGN SAWAN", "hex": "0x1aa2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "٭", "name": "ARABIC FIVE POINTED STAR", "hex": "0x66d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪠", "name": "SOYOMBO HEAD MARK WITH MOON AND SUN", "hex": "0x11aa0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𞥟", "name": "ADLAM INITIAL QUESTION MARK", "hex": "0x1e95f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑥄", "name": "DIVES AKURU DOUBLE DANDA", "hex": "0x11944", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐬾", "name": "LARGE TWO RINGS OVER ONE RING PUNCTUATION", "hex": "0x10b3e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "፠", "name": "ETHIOPIC SECTION MARK", "hex": "0x1360", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇟", "name": "SHARADA SECTION MARK-2", "hex": "0x111df", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁕", "name": "FLOWER PUNCTUATION MARK", "hex": "0x2055", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸈", "name": "DOTTED TRANSPOSITION MARKER", "hex": "0x2e08", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖬻", "name": "PAHAWH HMONG SIGN VOS FEEM", "hex": "0x16b3b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࡞", "name": "MANDAIC PUNCTUATION", "hex": "0x85e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𖬹", "name": "PAHAWH HMONG SIGN CIM CHEEM", "hex": "0x16b39", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗂", "name": "SIDDHAM DANDA", "hex": "0x115c2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "″", "name": "DOUBLE PRIME", "hex": "0x2033", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁂", "name": "ASTERISM", "hex": "0x2042", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "'", "name": "FULLWIDTH APOSTROPHE", "hex": "0xff07", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "٫", "name": "ARABIC DECIMAL SEPARATOR", "hex": "0x66b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩕", "name": "KHAROSHTHI PUNCTUATION LOTUS", "hex": "0x10a55", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅴", "name": "MAHAJANI ABBREVIATION SIGN", "hex": "0x11174", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈸", "name": "KHOJKI DANDA", "hex": "0x11238", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "・", "name": "HALFWIDTH KATAKANA MIDDLE DOT", "hex": "0xff65", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᯿", "name": "BATAK SYMBOL BINDU PANGOLAT", "hex": "0x1bff", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "՞", "name": "ARMENIAN QUESTION MARK", "hex": "0x55e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧊", "name": "JAVANESE PADA ADEG", "hex": "0xa9ca", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑧢", "name": "NANDINAGARI SIGN SIDDHAM", "hex": "0x119e2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܌", "name": "SYRIAC HARKLEAN METOBELUS", "hex": "0x70c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑗕", "name": "SIDDHAM SECTION MARK WITH CIRCLES AND RAYS", "hex": "0x115d5", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᪦", "name": "TAI THAM SIGN REVERSED ROTATED RANA", "hex": "0x1aa6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁎", "name": "LOW ASTERISK", "hex": "0x204e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧞", "name": "JAVANESE PADA TIRTA TUMETES", "hex": "0xa9de", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳓", "name": "VEDIC SIGN NIHSHVASA", "hex": "0x1cd3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⳼", "name": "COPTIC OLD NUBIAN VERSE DIVIDER", "hex": "0x2cfc", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧈", "name": "JAVANESE PADA LINGSA", "hex": "0xa9c8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐾇", "name": "OLD UYGHUR PUNCTUATION TWO BARS", "hex": "0x10f87", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᨟", "name": "BUGINESE END OF SECTION", "hex": "0x1a1f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࿓", "name": "TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA", "hex": "0xfd3", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙁", "name": "MODI DANDA", "hex": "0x11641", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‸", "name": "CARET", "hex": "0x2038", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑱁", "name": "BHAIKSUKI DANDA", "hex": "0x11c41", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹋", "name": "WAVY OVERLINE", "hex": "0xfe4b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑨿", "name": "ZANABAZAR SQUARE INITIAL HEAD MARK", "hex": "0x11a3f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𒿱", "name": "CYPRO-MINOAN SIGN CM301", "hex": "0x12ff1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠊", "name": "MONGOLIAN NIRUGU", "hex": "0x180a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "܁", "name": "SYRIAC SUPRALINEAR FULL STOP", "hex": "0x701", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؛", "name": "ARABIC SEMICOLON", "hex": "0x61b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹅", "name": "SESAME DOT", "hex": "0xfe45", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᛭", "name": "RUNIC CROSS PUNCTUATION", "hex": "0x16ed", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؞", "name": "ARABIC TRIPLE DOT PUNCTUATION MARK", "hex": "0x61e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐎟", "name": "UGARITIC WORD DIVIDER", "hex": "0x1039f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸓", "name": "DOTTED OBELOS", "hex": "0x2e13", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩀", "name": "ZANABAZAR SQUARE CLOSING HEAD MARK", "hex": "0x11a40", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫱", "name": "MANICHAEAN PUNCTUATION FLEURON", "hex": "0x10af1", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᯽", "name": "BATAK SYMBOL BINDU PINARBORAS", "hex": "0x1bfd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐩓", "name": "KHAROSHTHI PUNCTUATION CRESCENT BAR", "hex": "0x10a53", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": ".", "name": "FULL STOP", "hex": "0x2e", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "﹔", "name": "SMALL SEMICOLON", "hex": "0xfe54", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𐫳", "name": "MANICHAEAN PUNCTUATION DOT WITHIN DOT", "hex": "0x10af3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑇝", "name": "SHARADA CONTINUATION SIGN", "hex": "0x111dd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙡", "name": "MONGOLIAN ROTATED BIRGA", "hex": "0x11661", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳇", "name": "SUNDANESE PUNCTUATION BINDU BA SATANGA", "hex": "0x1cc7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᜵", "name": "PHILIPPINE SINGLE PUNCTUATION", "hex": "0x1735", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᨞", "name": "BUGINESE PALLAWA", "hex": "0x1a1e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸕", "name": "UPWARDS ANCORA", "hex": "0x2e15", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "۔", "name": "ARABIC FULL STOP", "hex": "0x6d4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸿", "name": "CAPITULUM", "hex": "0x2e3f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "‵", "name": "REVERSED PRIME", "hex": "0x2035", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁓", "name": "SWUNG DASH", "hex": "0x2053", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸔", "name": "DOWNWARDS ANCORA", "hex": "0x2e14", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᳀", "name": "SUNDANESE PUNCTUATION BINDU SURYA", "hex": "0x1cc0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "%", "name": "PERCENT SIGN", "hex": "0x25", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𑗍", "name": "SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS", "hex": "0x115cd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑪞", "name": "SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME", "hex": "0x11a9e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧂", "name": "JAVANESE RIGHT RERENGGAN", "hex": "0xa9c2", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꣎", "name": "SAURASHTRA DANDA", "hex": "0xa8ce", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𝪈", "name": "SIGNWRITING FULL STOP", "hex": "0x1da88", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꧁", "name": "JAVANESE LEFT RERENGGAN", "hex": "0xa9c1", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩆", "name": "ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK", "hex": "0x11a46", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "။", "name": "MYANMAR SIGN SECTION", "hex": "0x104b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑩁", "name": "ZANABAZAR SQUARE MARK TSHEG", "hex": "0x11a41", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꩜", "name": "CHAM PUNCTUATION SPIRAL", "hex": "0xaa5c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⁐", "name": "CLOSE UP", "hex": "0x2050", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "﹗", "name": "SMALL EXCLAMATION MARK", "hex": "0xfe57", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "។", "name": "KHMER SIGN KHAN", "hex": "0x17d4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "׆", "name": "HEBREW PUNCTUATION NUN HAFUKHA", "hex": "0x5c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "๛", "name": "THAI CHARACTER KHOMUT", "hex": "0xe5b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠴", "name": "SAMARITAN PUNCTUATION ATMAAU", "hex": "0x834", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "!", "name": "FULLWIDTH EXCLAMATION MARK", "hex": "0xff01", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Po", "punc": "𑜼", "name": "AHOM SIGN SMALL SECTION", "hex": "0x1173c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙩", "name": "MONGOLIAN SWIRL BIRGA", "hex": "0x11669", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸼", "name": "STENOGRAPHIC FULL STOP", "hex": "0x2e3c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "′", "name": "PRIME", "hex": "0x2032", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "࠺", "name": "SAMARITAN PUNCTUATION ZAEF", "hex": "0x83a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠄", "name": "MONGOLIAN COLON", "hex": "0x1804", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈺", "name": "KHOJKI WORD SEPARATOR", "hex": "0x1123a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⹇", "name": "LOW KAVYKA", "hex": "0x2e47", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "׃", "name": "HEBREW PUNCTUATION SOF PASUQ", "hex": "0x5c3", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "෴", "name": "SINHALA PUNCTUATION KUNDDALIYA", "hex": "0xdf4", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑙤", "name": "MONGOLIAN BIRGA WITH DOUBLE ORNAMENT", "hex": "0x11664", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑈽", "name": "KHOJKI ABBREVIATION SIGN", "hex": "0x1123d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "%", "name": "FULLWIDTH PERCENT SIGN", "hex": "0xff05", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑻸", "name": "MAKASAR END OF SECTION", "hex": "0x11ef8", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "؊", "name": "ARABIC-INDIC PER TEN THOUSAND SIGN", "hex": "0x60a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑅂", "name": "CHAKMA DOUBLE DANDA", "hex": "0x11142", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𛲟", "name": "DUPLOYAN PUNCTUATION CHINOOK FULL STOP", "hex": "0x1bc9f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "༉", "name": "TIBETAN MARK BSKUR YIG MGO", "hex": "0xf09", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "꘍", "name": "VAI COMMA", "hex": "0xa60d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "᠉", "name": "MONGOLIAN MANCHU FULL STOP", "hex": "0x1809", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "⸟", "name": "TILDE WITH DOT BELOW", "hex": "0x2e1f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Po", "punc": "𑜾", "name": "AHOM SIGN RULAI", "hex": "0x1173e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⟩", "name": "MATHEMATICAL RIGHT ANGLE BRACKET", "hex": "0x27e9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〗", "name": "RIGHT WHITE LENTICULAR BRACKET", "hex": "0x3017", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦒", "name": "RIGHT ANGLE BRACKET WITH DOT", "hex": "0x2992", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⸧", "name": "RIGHT SIDEWAYS U BRACKET", "hex": "0x2e27", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "}", "name": "RIGHT CURLY BRACKET", "hex": "0x7d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⹚", "name": "TOP HALF RIGHT PARENTHESIS", "hex": "0x2e5a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "᚜", "name": "OGHAM REVERSED FEATHER MARK", "hex": "0x169c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⁆", "name": "RIGHT SQUARE BRACKET WITH QUILL", "hex": "0x2046", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❱", "name": "HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT", "hex": "0x2771", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⟯", "name": "MATHEMATICAL RIGHT FLATTENED PARENTHESIS", "hex": "0x27ef", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦄", "name": "RIGHT WHITE CURLY BRACKET", "hex": "0x2984", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹈", "name": "PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET", "hex": "0xfe48", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〉", "name": "RIGHT-POINTING ANGLE BRACKET", "hex": "0x232a", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⹖", "name": "RIGHT SQUARE BRACKET WITH STROKE", "hex": "0x2e56", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹀", "name": "PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET", "hex": "0xfe40", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❯", "name": "HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT", "hex": "0x276f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⧛", "name": "RIGHT DOUBLE WIGGLY FENCE", "hex": "0x29db", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⸣", "name": "TOP RIGHT HALF BRACKET", "hex": "0x2e23", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❵", "name": "MEDIUM RIGHT CURLY BRACKET ORNAMENT", "hex": "0x2775", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❫", "name": "MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT", "hex": "0x276b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹂", "name": "PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET", "hex": "0xfe42", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "」", "name": "HALFWIDTH RIGHT CORNER BRACKET", "hex": "0xff63", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⌉", "name": "RIGHT CEILING", "hex": "0x2309", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⧙", "name": "RIGHT WIGGLY FENCE", "hex": "0x29d9", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⟧", "name": "MATHEMATICAL RIGHT WHITE SQUARE BRACKET", "hex": "0x27e7", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❩", "name": "MEDIUM RIGHT PARENTHESIS ORNAMENT", "hex": "0x2769", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "༻", "name": "TIBETAN MARK GUG RTAGS GYAS", "hex": "0xf3b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "︺", "name": "PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET", "hex": "0xfe3a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⟆", "name": "RIGHT S-SHAPED BAG DELIMITER", "hex": "0x27c6", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⧽", "name": "RIGHT-POINTING CURVED ANGLE BRACKET", "hex": "0x29fd", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⁾", "name": "SUPERSCRIPT RIGHT PARENTHESIS", "hex": "0x207e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "』", "name": "RIGHT WHITE CORNER BRACKET", "hex": "0x300f", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〉", "name": "RIGHT ANGLE BRACKET", "hex": "0x3009", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": ")", "name": "RIGHT PARENTHESIS", "hex": "0x29", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "⌋", "name": "RIGHT FLOOR", "hex": "0x230b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹞", "name": "SMALL RIGHT TORTOISE SHELL BRACKET", "hex": "0xfe5e", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦆", "name": "RIGHT WHITE PARENTHESIS", "hex": "0x2986", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⹜", "name": "BOTTOM HALF RIGHT PARENTHESIS", "hex": "0x2e5c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹚", "name": "SMALL RIGHT PARENTHESIS", "hex": "0xfe5a", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⸩", "name": "RIGHT DOUBLE PARENTHESIS", "hex": "0x2e29", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦔", "name": "RIGHT ARC GREATER-THAN BRACKET", "hex": "0x2994", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "︶", "name": "PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS", "hex": "0xfe36", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹄", "name": "PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET", "hex": "0xfe44", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❳", "name": "LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT", "hex": "0x2773", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "」", "name": "RIGHT CORNER BRACKET", "hex": "0x300d", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "︾", "name": "PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET", "hex": "0xfe3e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦐", "name": "RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER", "hex": "0x2990", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "₎", "name": "SUBSCRIPT RIGHT PARENTHESIS", "hex": "0x208e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⹘", "name": "RIGHT SQUARE BRACKET WITH DOUBLE STROKE", "hex": "0x2e58", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "]", "name": "RIGHT SQUARE BRACKET", "hex": "0x5d", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "⦘", "name": "RIGHT BLACK TORTOISE SHELL BRACKET", "hex": "0x2998", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⟫", "name": "MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET", "hex": "0x27eb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﹜", "name": "SMALL RIGHT CURLY BRACKET", "hex": "0xfe5c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦖", "name": "DOUBLE RIGHT ARC LESS-THAN BRACKET", "hex": "0x2996", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "︸", "name": "PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET", "hex": "0xfe38", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": ")", "name": "FULLWIDTH RIGHT PARENTHESIS", "hex": "0xff09", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "⟭", "name": "MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET", "hex": "0x27ed", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〕", "name": "RIGHT TORTOISE SHELL BRACKET", "hex": "0x3015", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "︼", "name": "PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET", "hex": "0xfe3c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "]", "name": "FULLWIDTH RIGHT SQUARE BRACKET", "hex": "0xff3d", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "》", "name": "RIGHT DOUBLE ANGLE BRACKET", "hex": "0x300b", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "⦌", "name": "RIGHT SQUARE BRACKET WITH UNDERBAR", "hex": "0x298c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "﴾", "name": "ORNATE LEFT PARENTHESIS", "hex": "0xfd3e", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "}", "name": "FULLWIDTH RIGHT CURLY BRACKET", "hex": "0xff5d", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⸥", "name": "BOTTOM RIGHT HALF BRACKET", "hex": "0x2e25", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〛", "name": "RIGHT WHITE SQUARE BRACKET", "hex": "0x301b", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〙", "name": "RIGHT WHITE TORTOISE SHELL BRACKET", "hex": "0x3019", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦆", "name": "FULLWIDTH RIGHT WHITE PARENTHESIS", "hex": "0xff60", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〞", "name": "DOUBLE PRIME QUOTATION MARK", "hex": "0x301e", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦈", "name": "Z NOTATION RIGHT IMAGE BRACKET", "hex": "0x2988", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "〟", "name": "LOW DOUBLE PRIME QUOTATION MARK", "hex": "0x301f", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦊", "name": "Z NOTATION RIGHT BINDING BRACKET", "hex": "0x298a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "】", "name": "RIGHT BLACK LENTICULAR BRACKET", "hex": "0x3011", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true} +{"category": "Pe", "punc": "༽", "name": "TIBETAN MARK ANG KHANG GYAS", "hex": "0xf3d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "︘", "name": "PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET", "hex": "0xfe18", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "⦎", "name": "RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER", "hex": "0x298e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pe", "punc": "❭", "name": "MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT", "hex": "0x276d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⟪", "name": "MATHEMATICAL LEFT DOUBLE ANGLE BRACKET", "hex": "0x27ea", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⸢", "name": "TOP LEFT HALF BRACKET", "hex": "0x2e22", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⟨", "name": "MATHEMATICAL LEFT ANGLE BRACKET", "hex": "0x27e8", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⸦", "name": "LEFT SIDEWAYS U BRACKET", "hex": "0x2e26", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❰", "name": "HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT", "hex": "0x2770", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⧘", "name": "LEFT WIGGLY FENCE", "hex": "0x29d8", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❨", "name": "MEDIUM LEFT PARENTHESIS ORNAMENT", "hex": "0x2768", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹁", "name": "PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET", "hex": "0xfe41", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹃", "name": "PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET", "hex": "0xfe43", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〘", "name": "LEFT WHITE TORTOISE SHELL BRACKET", "hex": "0x3018", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦍", "name": "LEFT SQUARE BRACKET WITH TICK IN TOP CORNER", "hex": "0x298d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︗", "name": "PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET", "hex": "0xfe17", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦅", "name": "FULLWIDTH LEFT WHITE PARENTHESIS", "hex": "0xff5f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⹂", "name": "DOUBLE LOW-REVERSED-9 QUOTATION MARK", "hex": "0x2e42", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⟅", "name": "LEFT S-SHAPED BAG DELIMITER", "hex": "0x27c5", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︿", "name": "PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET", "hex": "0xfe3f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⌈", "name": "LEFT CEILING", "hex": "0x2308", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⁽", "name": "SUPERSCRIPT LEFT PARENTHESIS", "hex": "0x207d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⸤", "name": "BOTTOM LEFT HALF BRACKET", "hex": "0x2e24", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "「", "name": "LEFT CORNER BRACKET", "hex": "0x300c", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〈", "name": "LEFT-POINTING ANGLE BRACKET", "hex": "0x2329", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︽", "name": "PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET", "hex": "0xfe3d", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "「", "name": "HALFWIDTH LEFT CORNER BRACKET", "hex": "0xff62", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "{", "name": "FULLWIDTH LEFT CURLY BRACKET", "hex": "0xff5b", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦏", "name": "LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER", "hex": "0x298f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❲", "name": "LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT", "hex": "0x2772", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︹", "name": "PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET", "hex": "0xfe39", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "(", "name": "FULLWIDTH LEFT PARENTHESIS", "hex": "0xff08", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦅", "name": "LEFT WHITE PARENTHESIS", "hex": "0x2985", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⹛", "name": "BOTTOM HALF LEFT PARENTHESIS", "hex": "0x2e5b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❪", "name": "MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT", "hex": "0x276a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦗", "name": "LEFT BLACK TORTOISE SHELL BRACKET", "hex": "0x2997", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦕", "name": "DOUBLE LEFT ARC GREATER-THAN BRACKET", "hex": "0x2995", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "{", "name": "LEFT CURLY BRACKET", "hex": "0x7b", "common_en": true, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "„", "name": "DOUBLE LOW-9 QUOTATION MARK", "hex": "0x201e", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "‚", "name": "SINGLE LOW-9 QUOTATION MARK", "hex": "0x201a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "༺", "name": "TIBETAN MARK GUG RTAGS GYON", "hex": "0xf3a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❬", "name": "MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT", "hex": "0x276c", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦃", "name": "LEFT WHITE CURLY BRACKET", "hex": "0x2983", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "᚛", "name": "OGHAM FEATHER MARK", "hex": "0x169b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❴", "name": "MEDIUM LEFT CURLY BRACKET ORNAMENT", "hex": "0x2774", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〔", "name": "LEFT TORTOISE SHELL BRACKET", "hex": "0x3014", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⧚", "name": "LEFT DOUBLE WIGGLY FENCE", "hex": "0x29da", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "【", "name": "LEFT BLACK LENTICULAR BRACKET", "hex": "0x3010", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹝", "name": "SMALL LEFT TORTOISE SHELL BRACKET", "hex": "0xfe5d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦉", "name": "Z NOTATION LEFT BINDING BRACKET", "hex": "0x2989", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦇", "name": "Z NOTATION LEFT IMAGE BRACKET", "hex": "0x2987", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "[", "name": "FULLWIDTH LEFT SQUARE BRACKET", "hex": "0xff3b", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⧼", "name": "LEFT-POINTING CURVED ANGLE BRACKET", "hex": "0x29fc", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⸨", "name": "LEFT DOUBLE PARENTHESIS", "hex": "0x2e28", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⹙", "name": "TOP HALF LEFT PARENTHESIS", "hex": "0x2e59", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "『", "name": "LEFT WHITE CORNER BRACKET", "hex": "0x300e", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "(", "name": "LEFT PARENTHESIS", "hex": "0x28", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〝", "name": "REVERSED DOUBLE PRIME QUOTATION MARK", "hex": "0x301d", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹙", "name": "SMALL LEFT PARENTHESIS", "hex": "0xfe59", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⌊", "name": "LEFT FLOOR", "hex": "0x230a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︵", "name": "PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS", "hex": "0xfe35", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦓", "name": "LEFT ARC LESS-THAN BRACKET", "hex": "0x2993", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "[", "name": "LEFT SQUARE BRACKET", "hex": "0x5b", "common_en": true, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Ps", "punc": "⟦", "name": "MATHEMATICAL LEFT WHITE SQUARE BRACKET", "hex": "0x27e6", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⟬", "name": "MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET", "hex": "0x27ec", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "❮", "name": "HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT", "hex": "0x276e", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹛", "name": "SMALL LEFT CURLY BRACKET", "hex": "0xfe5b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⹗", "name": "LEFT SQUARE BRACKET WITH DOUBLE STROKE", "hex": "0x2e57", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "₍", "name": "SUBSCRIPT LEFT PARENTHESIS", "hex": "0x208d", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〈", "name": "LEFT ANGLE BRACKET", "hex": "0x3008", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⹕", "name": "LEFT SQUARE BRACKET WITH STROKE", "hex": "0x2e55", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〖", "name": "LEFT WHITE LENTICULAR BRACKET", "hex": "0x3016", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦋", "name": "LEFT SQUARE BRACKET WITH UNDERBAR", "hex": "0x298b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⟮", "name": "MATHEMATICAL LEFT FLATTENED PARENTHESIS", "hex": "0x27ee", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︷", "name": "PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET", "hex": "0xfe37", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "︻", "name": "PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET", "hex": "0xfe3b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⦑", "name": "LEFT ANGLE BRACKET WITH DOT", "hex": "0x2991", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﴿", "name": "ORNATE RIGHT PARENTHESIS", "hex": "0xfd3f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "﹇", "name": "PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET", "hex": "0xfe47", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "〚", "name": "LEFT WHITE SQUARE BRACKET", "hex": "0x301a", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "༼", "name": "TIBETAN MARK ANG KHANG GYON", "hex": "0xf3c", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "⁅", "name": "LEFT SQUARE BRACKET WITH QUILL", "hex": "0x2045", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Ps", "punc": "《", "name": "LEFT DOUBLE ANGLE BRACKET", "hex": "0x300a", "common_en": false, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "〜", "name": "WAVE DASH", "hex": "0x301c", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⹝", "name": "OBLIQUE HYPHEN", "hex": "0x2e5d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "﹘", "name": "SMALL EM DASH", "hex": "0xfe58", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⸻", "name": "THREE-EM DASH", "hex": "0x2e3b", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⸚", "name": "HYPHEN WITH DIAERESIS", "hex": "0x2e1a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "︱", "name": "PRESENTATION FORM FOR VERTICAL EM DASH", "hex": "0xfe31", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "᐀", "name": "CANADIAN SYLLABICS HYPHEN", "hex": "0x1400", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "֊", "name": "ARMENIAN HYPHEN", "hex": "0x58a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⹀", "name": "DOUBLE HYPHEN", "hex": "0x2e40", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "﹣", "name": "SMALL HYPHEN-MINUS", "hex": "0xfe63", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "᠆", "name": "MONGOLIAN TODO SOFT HYPHEN", "hex": "0x1806", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⸗", "name": "DOUBLE OBLIQUE HYPHEN", "hex": "0x2e17", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "—", "name": "EM DASH", "hex": "0x2014", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pd", "punc": "‐", "name": "HYPHEN", "hex": "0x2010", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "𐺭", "name": "YEZIDI HYPHENATION MARK", "hex": "0x10ead", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "־", "name": "HEBREW PUNCTUATION MAQAF", "hex": "0x5be", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "⸺", "name": "TWO-EM DASH", "hex": "0x2e3a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "〰", "name": "WAVY DASH", "hex": "0x3030", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "‑", "name": "NON-BREAKING HYPHEN", "hex": "0x2011", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "︲", "name": "PRESENTATION FORM FOR VERTICAL EN DASH", "hex": "0xfe32", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "–", "name": "EN DASH", "hex": "0x2013", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "―", "name": "HORIZONTAL BAR", "hex": "0x2015", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "-", "name": "FULLWIDTH HYPHEN-MINUS", "hex": "0xff0d", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "゠", "name": "KATAKANA-HIRAGANA DOUBLE HYPHEN", "hex": "0x30a0", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pd", "punc": "-", "name": "HYPHEN-MINUS", "hex": "0x2d", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pd", "punc": "‒", "name": "FIGURE DASH", "hex": "0x2012", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸠", "name": "LEFT VERTICAL BAR WITH QUILL", "hex": "0x2e20", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸜", "name": "LEFT LOW PARAPHRASE BRACKET", "hex": "0x2e1c", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "‹", "name": "SINGLE LEFT-POINTING ANGLE QUOTATION MARK", "hex": "0x2039", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸂", "name": "LEFT SUBSTITUTION BRACKET", "hex": "0x2e02", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸄", "name": "LEFT DOTTED SUBSTITUTION BRACKET", "hex": "0x2e04", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸉", "name": "LEFT TRANSPOSITION BRACKET", "hex": "0x2e09", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "«", "name": "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK", "hex": "0xab", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "“", "name": "LEFT DOUBLE QUOTATION MARK", "hex": "0x201c", "common_en": true, "common_zh": true, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "⸌", "name": "LEFT RAISED OMISSION BRACKET", "hex": "0x2e0c", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "‛", "name": "SINGLE HIGH-REVERSED-9 QUOTATION MARK", "hex": "0x201b", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "‘", "name": "LEFT SINGLE QUOTATION MARK", "hex": "0x2018", "common_en": true, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pi", "punc": "‟", "name": "DOUBLE HIGH-REVERSED-9 QUOTATION MARK", "hex": "0x201f", "common_en": false, "common_zh": false, "can_be_begin": true, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸃", "name": "RIGHT SUBSTITUTION BRACKET", "hex": "0x2e03", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "’", "name": "RIGHT SINGLE QUOTATION MARK", "hex": "0x2019", "common_en": true, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸡", "name": "RIGHT VERTICAL BAR WITH QUILL", "hex": "0x2e21", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸅", "name": "RIGHT DOTTED SUBSTITUTION BRACKET", "hex": "0x2e05", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "»", "name": "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK", "hex": "0xbb", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸍", "name": "RIGHT RAISED OMISSION BRACKET", "hex": "0x2e0d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸊", "name": "RIGHT TRANSPOSITION BRACKET", "hex": "0x2e0a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "⸝", "name": "RIGHT LOW PARAPHRASE BRACKET", "hex": "0x2e1d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pf", "punc": "”", "name": "RIGHT DOUBLE QUOTATION MARK", "hex": "0x201d", "common_en": true, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pf", "punc": "›", "name": "SINGLE RIGHT-POINTING ANGLE QUOTATION MARK", "hex": "0x203a", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "⁀", "name": "CHARACTER TIE", "hex": "0x2040", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "‿", "name": "UNDERTIE", "hex": "0x203f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "_", "name": "LOW LINE", "hex": "0x5f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": true, "zh_cc_top_30": true, "en_cc_end_top_30": true, "zh_cc_end_top_30": true} +{"category": "Pc", "punc": "︴", "name": "PRESENTATION FORM FOR VERTICAL WAVY LOW LINE", "hex": "0xfe34", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "﹍", "name": "DASHED LOW LINE", "hex": "0xfe4d", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "﹏", "name": "WAVY LOW LINE", "hex": "0xfe4f", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "⁔", "name": "INVERTED UNDERTIE", "hex": "0x2054", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "﹎", "name": "CENTRELINE LOW LINE", "hex": "0xfe4e", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "︳", "name": "PRESENTATION FORM FOR VERTICAL LOW LINE", "hex": "0xfe33", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} +{"category": "Pc", "punc": "_", "name": "FULLWIDTH LOW LINE", "hex": "0xff3f", "common_en": false, "common_zh": false, "can_be_begin": false, "can_be_end": false, "en_cc_top_30": false, "zh_cc_top_30": false, "en_cc_end_top_30": false, "zh_cc_end_top_30": false} diff --git a/llm_web_kit/model/assets/stop_word.txt b/llm_web_kit/model/assets/stop_word.txt new file mode 100644 index 00000000..15dea1c3 --- /dev/null +++ b/llm_web_kit/model/assets/stop_word.txt @@ -0,0 +1,794 @@ +、 +。 +〈 +〉 +《 +》 +一 +一个 +一些 +一何 +一切 +一则 +一方面 +一旦 +一来 +一样 +一种 +一般 +一转眼 +七 +万一 +三 +上 +上下 +下 +不 +不仅 +不但 +不光 +不单 +不只 +不外乎 +不如 +不妨 +不尽 +不尽然 +不得 +不怕 +不惟 +不成 +不拘 +不料 +不是 +不比 +不然 +不特 +不独 +不管 +不至于 +不若 +不论 +不过 +不问 +与 +与其 +与其说 +与否 +与此同时 +且 +且不说 +且说 +两者 +个 +个别 +中 +临 +为 +为了 +为什么 +为何 +为止 +为此 +为着 +乃 +乃至 +乃至于 +么 +之 +之一 +之所以 +之类 +乌乎 +乎 +乘 +九 +也 +也好 +也罢 +了 +二 +二来 +于 +于是 +于是乎 +云云 +云尔 +五 +些 +亦 +人 +人们 +人家 +什 +什么 +什么样 +今 +介于 +仍 +仍旧 +从 +从此 +从而 +他 +他人 +他们 +他们们 +以 +以上 +以为 +以便 +以免 +以及 +以故 +以期 +以来 +以至 +以至于 +以致 +们 +任 +任何 +任凭 +会 +似的 +但 +但凡 +但是 +何 +何以 +何况 +何处 +何时 +余外 +作为 +你 +你们 +使 +使得 +例如 +依 +依据 +依照 +便于 +俺 +俺们 +倘 +倘使 +倘或 +倘然 +倘若 +借 +借傥然 +假使 +假如 +假若 +做 +像 +儿 +先不先 +光 +光是 +全体 +全部 +八 +六 +兮 +共 +关于 +关于具体地说 +其 +其一 +其中 +其二 +其他 +其余 +其它 +其次 +具体地说 +具体说来 +兼之 +内 +再 +再其次 +再则 +再有 +再者 +再者说 +再说 +冒 +冲 +况且 +几 +几时 +凡 +凡是 +凭 +凭借 +出于 +出来 +分 +分别 +则 +则甚 +别 +别人 +别处 +别是 +别的 +别管 +别说 +到 +前后 +前此 +前者 +加之 +加以 +区 +即 +即令 +即使 +即便 +即如 +即或 +即若 +却 +去 +又 +又及 +及 +及其 +及至 +反之 +反而 +反过来 +反过来说 +受到 +另 +另一方面 +另外 +另悉 +只 +只当 +只怕 +只是 +只有 +只消 +只要 +只限 +叫 +叮咚 +可 +可以 +可是 +可见 +各 +各个 +各位 +各种 +各自 +同 +同时 +后 +后者 +向 +向使 +向着 +吓 +吗 +否则 +吧 +吧哒 +含 +吱 +呀 +呃 +呕 +呗 +呜 +呜呼 +呢 +呵 +呵呵 +呸 +呼哧 +咋 +和 +咚 +咦 +咧 +咱 +咱们 +咳 +哇 +哈 +哈哈 +哉 +哎 +哎呀 +哎哟 +哗 +哟 +哦 +哩 +哪 +哪个 +哪些 +哪儿 +哪天 +哪年 +哪怕 +哪样 +哪边 +哪里 +哼 +哼唷 +唉 +唯有 +啊 +啐 +啥 +啦 +啪达 +啷当 +喂 +喏 +喔唷 +喽 +嗡 +嗡嗡 +嗬 +嗯 +嗳 +嘎 +嘎登 +嘘 +嘛 +嘻 +嘿 +嘿嘿 +四 +因 +因为 +因了 +因此 +因着 +因而 +固然 +在 +在下 +在于 +地 +基于 +处在 +多 +多么 +多少 +大 +大家 +她 +她们 +好 +如 +如上 +如上所述 +如下 +如何 +如其 +如同 +如是 +如果 +如此 +如若 +始而 +孰料 +孰知 +宁 +宁可 +宁愿 +宁肯 +它 +它们 +对 +对于 +对待 +对方 +对比 +将 +小 +尔 +尔后 +尔尔 +尚且 +就 +就是 +就是了 +就是说 +就算 +就要 +尽 +尽管 +尽管如此 +岂但 +己 +已 +已矣 +巴 +巴巴 +年 +并 +并且 +庶乎 +庶几 +开外 +开始 +归 +归齐 +当 +当地 +当然 +当着 +彼 +彼时 +彼此 +往 +待 +很 +得 +得了 +怎 +怎么 +怎么办 +怎么样 +怎奈 +怎样 +总之 +总的来看 +总的来说 +总的说来 +总而言之 +恰恰相反 +您 +惟其 +慢说 +我 +我们 +或 +或则 +或是 +或曰 +或者 +截至 +所 +所以 +所在 +所幸 +所有 +才 +才能 +打 +打从 +把 +抑或 +拿 +按 +按照 +换句话说 +换言之 +据 +据此 +接着 +故 +故此 +故而 +旁人 +无 +无宁 +无论 +既 +既往 +既是 +既然 +日 +时 +时候 +是 +是以 +是的 +更 +曾 +替 +替代 +最 +月 +有 +有些 +有关 +有及 +有时 +有的 +望 +朝 +朝着 +本 +本人 +本地 +本着 +本身 +来 +来着 +来自 +来说 +极了 +果然 +果真 +某 +某个 +某些 +某某 +根据 +欤 +正值 +正如 +正巧 +正是 +此 +此地 +此处 +此外 +此时 +此次 +此间 +毋宁 +每 +每当 +比 +比及 +比如 +比方 +没奈何 +沿 +沿着 +漫说 +点 +焉 +然则 +然后 +然而 +照 +照着 +犹且 +犹自 +甚且 +甚么 +甚或 +甚而 +甚至 +甚至于 +用 +用来 +由 +由于 +由是 +由此 +由此可见 +的 +的确 +的话 +直到 +相对而言 +省得 +看 +眨眼 +着 +着呢 +矣 +矣乎 +矣哉 +离 +秒 +称 +竟而 +第 +等 +等到 +等等 +简言之 +管 +类如 +紧接着 +纵 +纵令 +纵使 +纵然 +经 +经过 +结果 +给 +继之 +继后 +继而 +综上所述 +罢了 +者 +而 +而且 +而况 +而后 +而外 +而已 +而是 +而言 +能 +能否 +腾 +自 +自个儿 +自从 +自各儿 +自后 +自家 +自己 +自打 +自身 +至 +至于 +至今 +至若 +致 +般的 +若 +若夫 +若是 +若果 +若非 +莫不然 +莫如 +莫若 +虽 +虽则 +虽然 +虽说 +被 +要 +要不 +要不是 +要不然 +要么 +要是 +譬喻 +譬如 +让 +许多 +论 +设使 +设或 +设若 +诚如 +诚然 +该 +说 +说来 +请 +诸 +诸位 +诸如 +谁 +谁人 +谁料 +谁知 +贼死 +赖以 +赶 +起 +起见 +趁 +趁着 +越是 +距 +跟 +较 +较之 +边 +过 +还 +还是 +还有 +还要 +这 +这一来 +这个 +这么 +这么些 +这么样 +这么点儿 +这些 +这会儿 +这儿 +这就是说 +这时 +这样 +这次 +这般 +这边 +这里 +进而 +连 +连同 +逐步 +通过 +遵循 +遵照 +那 +那个 +那么 +那么些 +那么样 +那些 +那会儿 +那儿 +那时 +那样 +那般 +那边 +那里 +都 +鄙人 +鉴于 +针对 +阿 +除 +除了 +除外 +除开 +除此之外 +除非 +随 +随后 +随时 +随着 +难道说 +零 +非 +非但 +非徒 +非特 +非独 +靠 +顺 +顺着 +首先 +︿ +! +# +$ +% +& +( +) +* ++ +, +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +: +; +< +> +? +@ +[ +] +{ +| +} +~ +¥ diff --git a/llm_web_kit/model/assets/stop_word_en.txt b/llm_web_kit/model/assets/stop_word_en.txt new file mode 100644 index 00000000..15273833 --- /dev/null +++ b/llm_web_kit/model/assets/stop_word_en.txt @@ -0,0 +1,198 @@ +a +about +above +after +again +against +ain +all +am +an +and +any +are +aren +aren't +as +at +be +because +been +before +being +below +between +both +but +by +can +couldn +couldn't +d +did +didn +didn't +do +does +doesn +doesn't +doing +don +don't +down +during +each +few +for +from +further +had +hadn +hadn't +has +hasn +hasn't +have +haven +haven't +having +he +he'd +he'll +her +here +hers +herself +he's +him +himself +his +how +i +i'd +if +i'll +i'm +in +into +is +isn +isn't +it +it'd +it'll +it's +its +itself +i've +just +ll +m +ma +me +mightn +mightn't +more +most +mustn +mustn't +my +myself +needn +needn't +no +nor +not +now +o +of +off +on +once +only +or +other +our +ours +ourselves +out +over +own +re +s +same +shan +shan't +she +she'd +she'll +she's +should +shouldn +shouldn't +should've +so +some +such +t +than +that +that'll +the +their +theirs +them +themselves +then +there +these +they +they'd +they'll +they're +they've +this +those +through +to +too +under +until +up +ve +very +was +wasn +wasn't +we +we'd +we'll +we're +were +weren +weren't +we've +what +when +where +which +while +who +whom +why +will +with +won +won't +wouldn +wouldn't +y +you +you'd +you'll +your +you're +yours +yourself +yourselves +you've diff --git a/llm_web_kit/model/basic_functions/__init__.py b/llm_web_kit/model/basic_functions/__init__.py new file mode 100644 index 00000000..f3477a6c --- /dev/null +++ b/llm_web_kit/model/basic_functions/__init__.py @@ -0,0 +1,7 @@ +from . import char_norm, character, word + +__all__ = [ + 'char_norm', + 'character', + 'word' +] diff --git a/llm_web_kit/model/basic_functions/char_norm.py b/llm_web_kit/model/basic_functions/char_norm.py new file mode 100644 index 00000000..4a1db3f2 --- /dev/null +++ b/llm_web_kit/model/basic_functions/char_norm.py @@ -0,0 +1,135 @@ +import re + +# tab is not handled +line_breaks_re = r'[\n\v\f\r\x85\u2028\u2029]' +visible_spaces_re = r'[\x20\xa0\u2000-\u200a\u202f\u205f\u3000]' +invisible_spaces_re = r'[\u200b-\u200d\u2060\ufeff]' +invisible_chars_re = r'[\xad\ufffc\u2061-\u2063]' +other_controls_re = r'[\x00-\x08\x0e-\x1f\x7f-\x84\x86-\x9f]' +direction_controls_re = r'[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]' +head_view_invisible_spaces_re = r'^[\x20\xa0\u2000-\u200a\u202f\u205f\u3000 ]' + +ar_invisible_spaces_re = r'[\u2060\ufeff]' +ar_direction_controls_re = r'[\u061c\u202c\u2066-\u2069]' + +private_use_area_pattern = ( + r'[\uE000-\uF8FF]' # BMP 私有使用区 + r'|[\U000F0000-\U000FFFFD]' # 辅助平面 A 私有使用区 + r'|[\U00100000-\U0010FFFD]' # 辅助平面 B 私有使用区 +) + +# 汉字区块(一部分) +chinese_pattern = ( + r'[\u4E00-\u9FFF\u3400-\u4DBF\u2F00-\u2FDF\u2E80-\u2EFF\uF900-\uFAFF\u31c0-\u31ef]' +) + +# 部分补充汉字区块 +supp_chinese_pattern = re.compile( + r'[' + '\U00020000-\U0002a6df' + '\U0002a700-\U0002b73f' + '\U0002b740-\U0002b81f' + '\U0002b820-\U0002ceaf' + '\U0002ceb0-\U0002ebef' + '\U00030000-\U0003134f' + '\U0002f800-\U0002fa1f' + ']', + flags=re.UNICODE, +) + +# 汉字基本区块 +chinese_base_pattern = r'[\u4E00-\u9FFF]' + +# 全角符号 +full_width_punc_pattern = r'[\uFF01-\uFF0F\u3000\uFF1A-\uFF1F\uFF3B-\uFF3D\uFF5B-\uFF5D\u3002\u3001【】《》“”‘’]' + +# 英文常见符号 +en_common_punc_pattern = r"[\s\\\、.,-:#\*()\'/!?\"&;|$>–%\[\]+—@…<_=~`{}·£€^″′−]" + +# 其他西欧语言元音字符 +other_vowel_letter_pattern = ( + r'[äöüßéèêëáàâæçœìíîïùúûüýÿñéáüíöóèäñâçàúêôÂÉãåïßëšæāčÃÖβÜə]' +) + +# 斯拉夫语言 +slavic_pattern = r'[\u0400-\u04FF]' + +# 日韩字符 +jap_ko_pattern = r'[\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF\u1100-\u11FF]' + +# 希腊字符 +greek_pattern = r'[\u0370-\u03FF]' + +# emoji +emoji_pattern = re.compile( + r'[' + '\U0001f600-\U0001f64f' # emoticons + '\U0001f300-\U0001f5ff' # symbols & pictographs + '\U0001f680-\U0001f6ff' # transport & map symbols + '\U0001f700-\U0001f77f' + '\U0001f780-\U0001f7ff' + '\U0001f800-\U0001f8ff' + '\U0001f900-\U0001f9ff' + '\U0001fa00-\U0001fa6f' + '\U0001fa70-\U0001faff' + '\U0001f1e0-\U0001f1ff' # flags (iOS) + '\U00002702-\U000027b0' + # u"\U000024C2-\U0001F251" + '\U00002300-\U000023ff' ']', + flags=re.UNICODE, +) + +# character_normalize # + + +ESCAPED_CHARS = r'\`*_{}[]()>#.!+-' + +_ZH_END_MARKS = ('。', '?', '!', '”', ':', ';') +_ZH_FINISH_END_MARKS = ('。', '?', '!', '”') + +_EN_END_MARKS = ('.', '?', '!', '"', ',', ':') +_EN_FINISH_END_MARKS = ('.', '?', '!', '"') + +ALL_END_MARKS = _ZH_END_MARKS + _EN_END_MARKS +ALL_FINISH_END_MARKS = _ZH_FINISH_END_MARKS + _EN_FINISH_END_MARKS + +ALL_MD_END_MARKS = tuple([f'\\{c}' if c in ESCAPED_CHARS else c for c in ALL_END_MARKS]) +ALL_MD_FINISH_END_MARKS = tuple( + [f'\\{c}' if c in ESCAPED_CHARS else c for c in ALL_FINISH_END_MARKS] +) + + +# def character_normalize(s: str): +# s = re.sub(r"\r\n", "\n", s) +# s = re.sub(line_breaks_re, "\n", s) +# s = re.sub(visible_spaces_re, " ", s) +# s = re.sub(invisible_spaces_re, "", s) +# s = re.sub(other_controls_re, "", s) +# return s + + +def character_normalize(s: str) -> str: + """对字符串进行字符级标准化.""" + s = re.sub(r'\r\n', '\n', s) + s = re.sub(line_breaks_re, '\n', s) + s = re.sub(visible_spaces_re, ' ', s) + s = re.sub(head_view_invisible_spaces_re, '', s) + s = re.sub(invisible_spaces_re, '', s) + s = re.sub(invisible_chars_re, '', s) + s = re.sub(other_controls_re, '', s) + s = re.sub(private_use_area_pattern, '', s) + + return s + + +def ar_character_normalize(s: str) -> str: + """对阿拉伯语字符串进行字符级标准化.""" + s = re.sub(r'\r\n', '\n', s) + s = re.sub(line_breaks_re, '\n', s) + s = re.sub(visible_spaces_re, ' ', s) + s = re.sub(head_view_invisible_spaces_re, '', s) + s = re.sub(ar_invisible_spaces_re, '', s) + s = re.sub(other_controls_re, '', s) + s = re.sub(private_use_area_pattern, '', s) + + return s diff --git a/llm_web_kit/model/basic_functions/character.py b/llm_web_kit/model/basic_functions/character.py new file mode 100644 index 00000000..509b15e7 --- /dev/null +++ b/llm_web_kit/model/basic_functions/character.py @@ -0,0 +1,89 @@ +import json +import os +import re + +RES_MAP = {} + + +def build_all_punc_list(): + """ + 从文件中获取所有的标点符号 + Returns: + punc_list: list 所有的标点符号信息 + """ + # {"category": "Po", "punc": "。", "name": "IDEOGRAPHIC FULL STOP", "hex": "0x3002", "common_en": false, "common_zh": true, "can_be_begin": false, "can_be_end": true} + + with open(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'assets/punc_list.jsonl'), 'r') as f: + lines = f.readlines() + punc_list = [] + for line in lines: + punc_list.append(json.loads(line.strip())) + return punc_list + + +def get_all_punc_list(): + if 'ALL_PUNC_LIST' not in RES_MAP: + RES_MAP['ALL_PUNC_LIST'] = build_all_punc_list() + return RES_MAP['ALL_PUNC_LIST'] + + +def get_punc_set(include_keys: list = None, exclude_keys: list = None) -> set: + """ + 从ALL_PUNC_LIST中获取特定类型的标点符号 + include_keys and exclude_keys 表示需要具有的属性和不需要具有的属性(取与逻辑) + 属性仅为 en_cc_top_30, zh_cc_top_30, en_cc_end_top_30, zh_cc_end_top_30 + Args: + include_keys: list 需要具有的属性 + exclude_keys: list 不需要具有的属性 + Returns: + result_set: list 符合条件的标点符号列表 + """ + valid_keys = [ + 'en_cc_top_30', + 'zh_cc_top_30', + 'en_cc_end_top_30', + 'zh_cc_end_top_30', + ] + if include_keys is None: + include_keys = [] + if exclude_keys is None: + exclude_keys = [] + assert all([key in valid_keys for key in include_keys]) + assert all([key in valid_keys for key in exclude_keys]) + result_set = set() + for punc in get_all_punc_list(): + include_flag = all([punc[key] for key in include_keys]) + exclude_flag = not any([punc[key] for key in exclude_keys]) + if include_flag and exclude_flag: + result_set.add(punc['punc']) + return result_set + + +def get_common_punc_list(): + if 'COMMON_PUNCTUATION_LIST' not in RES_MAP: + RES_MAP['COMMON_PUNCTUATION_LIST'] = list( + get_punc_set(include_keys=['en_cc_top_30']).union( + get_punc_set(include_keys=['zh_cc_top_30']) + ) + ) + return RES_MAP['COMMON_PUNCTUATION_LIST'] + + +def get_common_punc_end_list(): + if 'COMMON_PUNCTUATION_END_LIST' not in RES_MAP: + RES_MAP['COMMON_PUNCTUATION_END_LIST'] = list( + get_punc_set(include_keys=['en_cc_end_top_30']).union(get_punc_set(include_keys=['zh_cc_end_top_30'])) + ) + return RES_MAP['COMMON_PUNCTUATION_END_LIST'] + + +def has_chinese_char_closure(): + pattern = re.compile(r'[\u4e00-\u9fa5]') + + def has_chinese_char(text: str) -> bool: + return pattern.search(text) is not None + + return has_chinese_char + + +has_chinese_char = has_chinese_char_closure() diff --git a/llm_web_kit/model/basic_functions/features.py b/llm_web_kit/model/basic_functions/features.py new file mode 100644 index 00000000..97bb5754 --- /dev/null +++ b/llm_web_kit/model/basic_functions/features.py @@ -0,0 +1,460 @@ +import math +import re +from collections import Counter, defaultdict +from itertools import islice +from typing import List, Union + +import numpy as np + +import llm_web_kit.model.basic_functions as bfuncs +from llm_web_kit.model.basic_functions.utils import (dict_wrapper, div_zero, + jieba_lcut) + +""" +文本长度 +""" + + +# 文本总字符数 +def get_content_len(content: str) -> int: + return len(content) + + +# 文本非空格字符数(因为正则化之后的文本,只考虑去除空格) +def get_content_len_without_space(content: str) -> int: + return len(re.sub(r'\s', '', content)) + + +""" +文本行数 +""" + + +# 文本正则之后只考虑\n +def content2lines(content: str) -> List[str]: + return [line.strip() for line in content.split('\n') if len(line.strip()) > 0] + + +def get_lines_num(content: str) -> int: + return len(content2lines(content)) + + +""" +文本分词数 +""" + + +# 转换成词列表 +# alpha表示去除数字、标点空格等 +def content2words(content: str, alpha: bool = False) -> List[str]: + seg_list = jieba_lcut(content) + word_list = [w for w in seg_list if w.strip()] + if alpha: + return [w for w in word_list if w.isalpha()] + else: + return word_list + + +""" +最长连续空格数 +""" + + +@dict_wrapper(['max_continue_space_num']) +def stats_continue_space(content: str) -> int: + """ + 统计文本中连续空格的数量 + Args: + content_str: str 输入文本 + Returns: + continue_space_num: int 连续空格的数量 + """ + pattern = re.compile(r'\s+') + matches = pattern.findall(content) + max_continue_space_num = 0 + for match in matches: + length = len(match) + max_continue_space_num = max(max_continue_space_num, length) + return max_continue_space_num + + +""" +信息熵 +""" + + +@dict_wrapper(['entropy']) +def stats_entropy(content: str) -> float: + """计算文本的熵值(信息熵)""" + + # 计算每个字符的频数 + freq = Counter(content) + total_chars = len(content) + + # 计算熵 + entropy = 0.0 + for count in freq.values(): + p_x = div_zero(count, total_chars) + entropy -= p_x * math.log2(p_x) + + return entropy + + +""" +标点结尾的行数和占比 +""" + + +@dict_wrapper( + ['punc_end_sentence_num', 'punc_end_sentence_mean_len', 'longest_punc_sentence_len'] +) +def stats_punctuation_end_sentence(content: str): + """ + 统计以终止标点符号结尾的句子数量、比例、长度比例、总行数、总字符数 + 定义: 'punc_end_sentence_ratio'为平均每行以终止标点符号结尾的句子数量. + """ + lines = content2lines(content) + punc_sentences = [] + + for line in lines: + while len(line) > 0: + # find the first punctuation in punctuation_set + for i in range(len(line)): + if line[i] in bfuncs.character.get_common_punc_end_list(): + break + punc_sentences.append(line[: i + 1]) + line = line[i + 1 :] + + # 去除空字符串 + punc_sentences = [sentence for sentence in punc_sentences if sentence != ''] + # print(punc_sentences) + + punc_end_sentence_num = 0 + punc_end_sentence_length = 0 + longest_punc_sentence_len = 0 + + for sentence in punc_sentences: + sentence = sentence.strip() + longest_punc_sentence_len = max( + len(sentence.encode('utf-8')), longest_punc_sentence_len + ) + if sentence[-1] in bfuncs.character.get_common_punc_end_list(): + punc_end_sentence_num += 1 + punc_end_sentence_length += len(re.sub(r'\s', '', sentence)) + + punc_end_sentence_mean_len = div_zero( + punc_end_sentence_length, punc_end_sentence_num + ) + + return punc_end_sentence_num, punc_end_sentence_mean_len, longest_punc_sentence_len + + +""" +停用词数和停用词占比 +""" + + +@dict_wrapper(['stop_word_num', 'stop_word_frac']) +def stats_stop_words( + content: str, stop_word_list: set = bfuncs.word.get_stop_word_en_zh_set() +): + """给定文本中停用词的数量及其在文本中的比例,停用词长度占比,总单词数量,停用词总长度,总字符数。""" + # 注释:这里的总长度只包含内容文本(即不包含数字、标点等等) + word_list = content2words(content, alpha=True) + word_list = [word.lower() for word in word_list] + words_in_stop_word_list = [word for word in word_list if word in stop_word_list] + # print(words_in_stop_word_list) + + stop_word_num = len(words_in_stop_word_list) + word_num = len(word_list) + + # stop_word_length = sum([len(word) for word in words_in_stop_word_list]) + # total_word_length = sum([len(word) for word in word_list]) + + stop_word_frac = div_zero(stop_word_num, word_num) + # stop_word_length_ratio = div_zero(stop_word_length, total_word_length) + + return stop_word_num, stop_word_frac + + +""" +项目符号开头行占比 +""" + + +BULLET_POINT_SYMBOLS = ( + '\u2022', # bullet point + '\u2023', # triangular bullet point + '\u25b6', # black right pointing triangle + '\u25c0', # black left pointing triangle + '\u25e6', # white bullet point + '\u25a0', # black square + '\u25a1', # white square + '\u25aa', # black small square + '\u25ab', # white small square + '\u2013', # en dash +) + + +""" +html entity +""" + + +HTML_ENTITY_LIST = [ + 'nbsp', + 'lt', + 'gt', + 'amp', + 'quot', + 'apos', + 'hellip', + 'ndash', + 'mdash', + 'lsquo', + 'rsquo', + 'ldquo', + 'rdquo', +] + + +@dict_wrapper(['html_semi_entity_count', 'html_semi_entity_frac']) +def stats_html_entity(content: str): + """ + 统计文本中的html entity数量 + Args: + input_text: str 输入文本 + Returns: + html_entity_count: int 完整匹配html entity数量 + html_semi_entity_count: int 部分匹配html entity数量(不包含分号或不包含前后字符) + html_bare_entity_count: int 纯html entity数量(不包含前后字符) + """ + content_len = get_content_len_without_space(content) + + html_semi_entity_count = 0 + html_semi_entity_len = 0 + + # pattern = re.compile(r"([&&])(" + "|".join(HTML_ENTITY_LIST + HTML_NORMAL_ENTITY_LIST) + r")(;|;)") + # html_entity_count = len(pattern.findall(clean_text)) + + pattern = re.compile(r'([&&])(' + '|'.join(HTML_ENTITY_LIST) + r')(?![a-zA-Z0-9])') + match_list = pattern.findall(content) + html_semi_entity_count += len(match_list) + html_semi_entity_len += sum([len(x) for x in match_list]) + + pattern = re.compile(r'(? List[str]: + # "abc1我的ni 1,bd2 一个短语在这里" + # -> ['abc1', '我的', 'ni', '1', 'bd2', '一个', '短语', '在', '这里'] + # 先把用单词的边界匹配把中英文数字的连续片段分开 + words_and_numbers = re.findall(r'\b\w+\b', text) + splited_words = [] + for word in words_and_numbers: + # 使用jieba分词 + if not bfuncs.character.has_chinese_char(word): + splited_words.append(word) + continue + splited_words.extend(jieba_lcut(word)) + return splited_words + + +""" +unicode 码值相关 +""" + + +@dict_wrapper(['std_dev_unicode_value', 'mean_diff_unicode_value']) +def stats_unicode(content): + # 转换每个字符为其 UTF-8 编码值 + unicode_values = [ord(c) for c in content] + + # 计算标准差 + std_dev_unicode_value = np.std(unicode_values) + + # 计算相邻两个字符的 UTF-8 编码值之差 + diff_values = [ + unicode_values[i + 1] - unicode_values[i] + for i in range(len(unicode_values) - 1) + ] + + # 计算差值的平均值 + mean_diff_unicode_value = div_zero(sum(diff_values), len(diff_values)) + + return std_dev_unicode_value, mean_diff_unicode_value + + +""" +ngram 重复度 +""" + + +def window(seq, n=2): + """Returns a sliding window (of width n) over data from the iterable.""" + ' s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... ' + it = iter(seq) + result = tuple(islice(it, n)) + if len(result) == n: + yield result + for elem in it: + result = result[1:] + (elem,) + yield result + + +def max_ngram_dup_fraction(n: int): + def calc(tokens: Union[str, list]) -> float: + d = defaultdict(list) + + for i, ngram in enumerate(window(tokens, n)): + d[ngram].append(range(i, i + n)) + + max_dup_len = 0 + for ngram, pos_list in d.items(): + if len(pos_list) <= 1: + continue + dup_idx = set() + for ngram_pos in pos_list: + for i in ngram_pos: + dup_idx.add(i) + + dup_lens = map(lambda i: len(tokens[i]), dup_idx) + max_dup_len = max(max_dup_len, sum(dup_lens)) + + total_len = sum(map(lambda t: len(t), tokens)) + if total_len <= 0: + return 0 + return div_zero(max_dup_len, total_len) + + return calc + + +def sum_ngram_dup_fraction(n: int): + def calc(tokens: Union[str, list]) -> float: + d = defaultdict(list) + + for i, ngram in enumerate(window(tokens, n)): + d[ngram].append(range(i, i + n)) + + dup_idx = set() + for ngram, pos_list in d.items(): + if len(pos_list) <= 1: + continue + for ngram_pos in pos_list: + for i in ngram_pos: + dup_idx.add(i) + + dup_lens = map(lambda i: len(tokens[i]), dup_idx) + total_dup_len = sum(dup_lens) + total_len = sum(map(lambda t: len(t), tokens)) + if total_len <= 0: + return 0 + return div_zero(total_dup_len, total_len) + + return calc + + +@dict_wrapper(['dup_top_2gram', 'dup_top_4gram', 'dup_10gram']) +def stats_ngram_mini(content: str): + tokens = bfuncs.word.filter_stop_word(split_zh_en_mixed_text(content)) + res_list = [] + + for i in [2, 4]: + value = max_ngram_dup_fraction(i)(tokens) + res_list.append(value) + + for i in [10]: + value = sum_ngram_dup_fraction(i)(tokens) + res_list.append(value) + + return tuple(res_list) + + +""" +公式相关 +""" + + +def extract_formulas(text): + # 提取行内公式(用$...$包围) + inline_formulas = re.findall(r'\$(.*?)\$', text) + # 提取块级公式(用$$...$$包围) + block_formulas = re.findall(r'\$\$(.*?)\$\$', text) + res_inline = [formula for formula in inline_formulas if formula.strip()] + res_block = [formula for formula in block_formulas if formula.strip()] + return res_inline, res_block + + +def formula_count_features(inline_formulas, block_formulas): + # inline_formulas, block_formulas = extract_formulas(text) + + inline_count = len(inline_formulas) + block_count = len(block_formulas) + total_formulas = inline_count + block_count + + return { + 'inline_formula_count': inline_count, + 'block_formula_count': block_count, + 'total_formula_count': total_formulas + } + + +def formula_complexity_features(inline_formulas, block_formulas): + # inline_formulas, block_formulas = extract_formulas(text) + all_formulas = inline_formulas + block_formulas + + # 计算公式的长度 + formula_lengths = [len(formula) for formula in all_formulas] + average_formula_length = sum(formula_lengths) / len(formula_lengths) if formula_lengths else 0 + + # 统计操作符数量 + operator_pattern = r'[+\-*/=]|\\(sum|int|frac|sqrt|sin|cos|log|times|gamma|alpha)' + operator_counts = [len(re.findall(operator_pattern, formula)) for formula in all_formulas] + average_operator_count = sum(operator_counts) / len(operator_counts) if operator_counts else 0 + + return { + 'average_formula_length': average_formula_length, + 'average_operator_count': average_operator_count + } + + +def formula_distribution_var(content_lines): + # 查找所有公式的位置(行号) + # lines = text.splitlines() + formula_lines = [] + for i, line in enumerate(content_lines): + if re.search(r'\$.*\$', line): + formula_lines.append(i) + + if not formula_lines: + return 0 + + variance = np.var(formula_lines) + return variance + + +def formula_type_ratios(inline_formulas, block_formulas): + # inline_formulas, block_formulas = extract_formulas(text) + all_formulas = inline_formulas + block_formulas + + integral_count = sum(1 for formula in all_formulas if r'\int' in formula) + derivative_count = sum(1 for formula in all_formulas if r'\frac{\partial' in formula or r'\dot{' in formula) + matrix_count = sum(1 for formula in all_formulas if r'\mathbf{' in formula or r'\det' in formula) + + total_formulas = len(all_formulas) + + return { + 'integral_formula_ratio': integral_count / total_formulas if total_formulas else 0, + 'derivative_formula_ratio': derivative_count / total_formulas if total_formulas else 0, + 'matrix_formula_ratio': matrix_count / total_formulas if total_formulas else 0 + } diff --git a/llm_web_kit/model/basic_functions/format_check.py b/llm_web_kit/model/basic_functions/format_check.py new file mode 100644 index 00000000..1ad8d1dd --- /dev/null +++ b/llm_web_kit/model/basic_functions/format_check.py @@ -0,0 +1,15 @@ + +def is_en_letter(c: str): + return ('a' <= c <= 'z') or ('A' <= c <= 'Z') + + +def is_space(c: str): + return c in [' ', '\t'] + + +def is_pure_en_word(s: str): + for c in s: + if is_en_letter(c) or is_space(c): + continue + return False + return True diff --git a/llm_web_kit/model/basic_functions/utils.py b/llm_web_kit/model/basic_functions/utils.py new file mode 100644 index 00000000..69279aa8 --- /dev/null +++ b/llm_web_kit/model/basic_functions/utils.py @@ -0,0 +1,66 @@ +import functools +from typing import List + +import jieba_fast + + +def div_zero(a, b): + """ + 避免除零错误 + Args: + a: float 分子 + b: float 分母 + Returns: + result: float 除法结果 + """ + if b == 0 and a == 0: + result = float('nan') + elif b == 0: + result = float('inf') + else: + result = a / b + return result + + +def dict_wrapper(key_list): + """装饰器,将函数返回值转换为字典.""" + + def decorator(func): + def wrapper(*args, **kwargs): + as_dict = kwargs.get('as_dict', True) + kwargs.pop('as_dict', None) + results = func(*args, **kwargs) + if as_dict: + if not isinstance(results, tuple): + results = (results,) + return {key: value for key, value in zip(key_list, results)} + else: + return results + + wrapper.__name__ = func.__name__ + wrapper.__doc__ = func.__doc__ + return wrapper + + return decorator + + +@functools.lru_cache(maxsize=128) +def jieba_lcut(*args, **kwargs): + """ + input: text: str 输入文本 + output: words: list 分词后的词语列表 + description: 使用jieba分词对文本进行分词 + """ + words = jieba_fast.lcut(*args, **kwargs) + return words + + +# 转换成词列表 +# alpha表示去除数字、标点空格等 +def content2words(content: str, alpha: bool = False) -> List[str]: + seg_list = jieba_lcut(content) + word_list = [w for w in seg_list if w.strip()] + if alpha: + return [w for w in word_list if w.isalpha()] + else: + return word_list diff --git a/llm_web_kit/model/basic_functions/word.py b/llm_web_kit/model/basic_functions/word.py new file mode 100644 index 00000000..7f3094ce --- /dev/null +++ b/llm_web_kit/model/basic_functions/word.py @@ -0,0 +1,33 @@ +import os + +RES_MAP = {} + + +def build_stop_word_set(include_zh: bool = True, include_en: bool = True) -> set: + stop_word_list = [] + if include_zh: + with open(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'assets/stop_word.txt'), 'r') as f: + for line in f: + stop_word_list.append(line.strip()) + if include_en: + # stop_word_en.txt通过执行nltk.download('stopwords')下载得到,这里的nltk==3.8.1 + with open(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'assets/stop_word_en.txt'), 'r') as f: + for line in f: + if line.strip(): + stop_word_list.append(line.strip()) + stop_word_set = set(stop_word_list) + return stop_word_set + + +def get_stop_word_en_zh_set(): + if 'STOP_WORD_EN_ZH_SET' not in RES_MAP: + RES_MAP['STOP_WORD_EN_ZH_SET'] = build_stop_word_set( + include_zh=True, include_en=True + ) + return RES_MAP['STOP_WORD_EN_ZH_SET'] + + +def filter_stop_word(token_str_list: list, stop_word_set: set = None): + if stop_word_set is None: + stop_word_set = get_stop_word_en_zh_set() + return [word for word in token_str_list if word not in stop_word_set] diff --git a/llm_web_kit/model/clean_module.py b/llm_web_kit/model/clean_module.py new file mode 100644 index 00000000..80e705e7 --- /dev/null +++ b/llm_web_kit/model/clean_module.py @@ -0,0 +1,113 @@ +from enum import Enum +from typing import Any, Type + +from llm_web_kit.model.quality_model import QualityFilter + + +# 定义枚举类型 ContentStyle +class ContentStyle(Enum): + ARTICLE = 'article' + BOOK = 'book' + PAPER = 'paper' + + +def check_type(arg_name: str, arg_value: Any, arg_type: Type): + """check the type of the argument and raise TypeError if the type is not + matched.""" + if not isinstance(arg_value, arg_type): + # TODO change TypeError to custom exception + raise TypeError( + 'The type of {} should be {}, but got {}'.format( + arg_name, arg_type, type(arg_value) + ) + ) + + +class CleanModuleDataPack: + """The data pack for the clean module.""" + + def __init__( + self, + content_str: str, + language: str, + language_details: str, + content_style: ContentStyle, + ): + + # the content of the dataset + check_type('content_str', content_str, str) + self.content_str = content_str + + # the language of the content + check_type('language', language, str) + self.language = language + + # the details of the language + check_type('language_details', language_details, str) + self.language_details = language_details + + # the content style of the content + check_type('content_style', content_style, ContentStyle) + + self.content_style = content_style.value + + # the flag of the processed data should be remained or not + self.clean_remained = True + # the details of the clean process + self.clean_infos = {} + + def set_process_result(self, clean_remained: bool, clean_infos: dict) -> None: + """set the process result of the clean module.""" + check_type('clean_remained', clean_remained, bool) + check_type('clean_infos', clean_infos, dict) + if clean_remained is False: + self.clean_remained = False + self.clean_infos.update(clean_infos) + + def get_output(self) -> dict: + """get the output of the data pack.""" + return { + 'clean_remained': self.clean_remained, + 'clean_infos': self.clean_infos, + } + + +class CleanModule: + def __init__(self, prod: bool): + # when in production mode + # the process will return immediately when the data is not clean + self.prod = prod + self.quality_filter = QualityFilter() + + def process( + self, + content_str: str, + language: str, + language_details: str, + content_style: str, + ) -> dict: + """The process of the rule based safety.""" + data_pack = CleanModuleDataPack( + content_str=content_str, + language=language, + language_details=language_details, + content_style=content_style, + ) + data_pack = self.process_core(data_pack) + return data_pack.get_output() + + def process_core(self, data_pack: CleanModuleDataPack) -> CleanModuleDataPack: + """The core process of the rule based safety.""" + content_str = data_pack.content_str + language = data_pack.language + language_details = data_pack.language_details + content_style = data_pack.content_style + remained, process_info = self.quality_filter.filter( + content_str, language, language_details, content_style + ) + data_pack.set_process_result(remained, process_info) + return data_pack + + def get_version(self): + version_str = '1.0.0' + return version_str diff --git a/llm_web_kit/model/code_detector.py b/llm_web_kit/model/code_detector.py index dac7dd4c..c419d1c4 100644 --- a/llm_web_kit/model/code_detector.py +++ b/llm_web_kit/model/code_detector.py @@ -7,12 +7,10 @@ from llm_web_kit.config.cfg_reader import load_config from llm_web_kit.libs.logger import mylogger as logger -from llm_web_kit.model.resource_utils.download_assets import ( - CACHE_DIR, download_auto_file) -from llm_web_kit.model.resource_utils.singleton_resource_manager import \ - singleton_resource_manager -from llm_web_kit.model.resource_utils.unzip_ext import (get_unzip_dir, - unzip_local_file) +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + get_unzip_dir, + singleton_resource_manager, + unzip_local_file) class CodeClassification: @@ -139,13 +137,17 @@ def decide_code_func(content_str: str, code_detect: CodeClassification) -> float if str_len > 10000: logger.warning('Content string is too long, truncate to 10000 characters') start_idx = (str_len - 10000) // 2 - content_str = content_str[start_idx:start_idx + 10000] + content_str = content_str[start_idx : start_idx + 10000] # check if the content string contains latex environment if detect_latex_env(content_str): - logger.warning('Content string contains latex environment, may be misclassified') + logger.warning( + 'Content string contains latex environment, may be misclassified' + ) - def decide_code_by_prob_v3(predictions: Tuple[str], probabilities: Tuple[float]) -> float: + def decide_code_by_prob_v3( + predictions: Tuple[str], probabilities: Tuple[float] + ) -> float: idx = predictions.index('__label__1') true_prob = probabilities[idx] return true_prob @@ -154,7 +156,9 @@ def decide_code_by_prob_v3(predictions: Tuple[str], probabilities: Tuple[float]) predictions, probabilities = code_detect.predict(content_str) result = decide_code_by_prob_v3(predictions, probabilities) else: - raise ValueError(f'Unsupported version: {code_detect.version}. Supported versions: {[CODE_CL_SUPPORTED_VERSIONS]}') + raise ValueError( + f'Unsupported version: {code_detect.version}. Supported versions: {[CODE_CL_SUPPORTED_VERSIONS]}' + ) return result diff --git a/llm_web_kit/model/domain_safety_detector.py b/llm_web_kit/model/domain_safety_detector.py new file mode 100644 index 00000000..15ce2799 --- /dev/null +++ b/llm_web_kit/model/domain_safety_detector.py @@ -0,0 +1,13 @@ +class DomainFilter: + def __init__(self): + pass + + def filter( + self, + content_str: str, + language: str, + url: str, + language_details: str, + content_style: str, + ) -> dict: + return True, {} diff --git a/llm_web_kit/model/html_classify/model.py b/llm_web_kit/model/html_classify/model.py index 76ac4724..cdb1d637 100644 --- a/llm_web_kit/model/html_classify/model.py +++ b/llm_web_kit/model/html_classify/model.py @@ -1,5 +1,7 @@ import torch +from llm_web_kit.model.resource_utils import import_transformer + class Markuplm(): def __init__(self, path, device): @@ -16,13 +18,13 @@ def __init__(self, path, device): self.tokenizer = self.load_tokenizer() def load_tokenizer(self): - from transformers import MarkupLMProcessor + transformers = import_transformer() - return MarkupLMProcessor.from_pretrained(self.model_path) + return transformers.MarkupLMProcessor.from_pretrained(self.model_path) def load_model(self): - from transformers import MarkupLMForSequenceClassification - model = MarkupLMForSequenceClassification.from_pretrained(self.model_path, num_labels=self.num_labels) + transformers = import_transformer() + model = transformers.MarkupLMForSequenceClassification.from_pretrained(self.model_path, num_labels=self.num_labels) # load checkpoint model.load_state_dict(torch.load(self.checkpoint_path, map_location=self.device)) model.to(self.device) diff --git a/llm_web_kit/model/html_layout_cls.py b/llm_web_kit/model/html_layout_cls.py index 8f566709..e4c86694 100644 --- a/llm_web_kit/model/html_layout_cls.py +++ b/llm_web_kit/model/html_layout_cls.py @@ -4,10 +4,8 @@ from llm_web_kit.config.cfg_reader import load_config from llm_web_kit.libs.logger import mylogger as logger from llm_web_kit.model.html_classify.model import Markuplm -from llm_web_kit.model.resource_utils.download_assets import ( - CACHE_DIR, download_auto_file) -from llm_web_kit.model.resource_utils.unzip_ext import (get_unzip_dir, - unzip_local_file) +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + get_unzip_dir, unzip_local_file) class HTMLLayoutClassifier: diff --git a/llm_web_kit/model/html_lib/remove_tags.py b/llm_web_kit/model/html_lib/remove_tags.py index 889bd901..b978ff4f 100644 --- a/llm_web_kit/model/html_lib/remove_tags.py +++ b/llm_web_kit/model/html_lib/remove_tags.py @@ -19,7 +19,7 @@ def build_tags_to_remove_map() -> dict[str, list[str]]: 'portal', 'source', ], - 'script': ['canvas', 'noscript', 'script'], + 'script': ['canvas', 'script'], 'form': [ 'button', 'datalist', diff --git a/llm_web_kit/model/lang_id.py b/llm_web_kit/model/lang_id.py index 2f8c4d9f..03945638 100644 --- a/llm_web_kit/model/lang_id.py +++ b/llm_web_kit/model/lang_id.py @@ -1,15 +1,13 @@ import os import re -from typing import Tuple +from typing import Dict, Tuple import fasttext from llm_web_kit.config.cfg_reader import load_config from llm_web_kit.libs.logger import mylogger as logger -from llm_web_kit.model.resource_utils.download_assets import ( - CACHE_DIR, download_auto_file) -from llm_web_kit.model.resource_utils.singleton_resource_manager import \ - singleton_resource_manager +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + singleton_resource_manager) language_dict = { 'srp': 'sr', 'swe': 'sv', 'dan': 'da', 'ita': 'it', 'spa': 'es', 'pes': 'fa', 'slk': 'sk', 'hun': 'hu', 'bul': 'bg', 'cat': 'ca', @@ -196,7 +194,7 @@ def detect_latex_env(content_str: str) -> bool: return latex_env_pattern.search(content_str) is not None -def decide_language_func(content_str: str, lang_detect: LanguageIdentification) -> str: +def decide_language_func(content_str: str, lang_detect: LanguageIdentification) -> Dict[str, str]: """Decide language based on the content string. This function will truncate the content string if it is too long. This function will return "empty" if the content string is empty. @@ -216,7 +214,7 @@ def decide_language_func(content_str: str, lang_detect: LanguageIdentification) lang_detect (LanguageIdentification): The language identification model Returns: - str: The final language label + dict: Dictionary containing 'language' and 'language_details' keys """ # truncate the content string if it is too long @@ -236,42 +234,35 @@ def decide_language_func(content_str: str, lang_detect: LanguageIdentification) # return "empty" if the content string is empty if len(content_str.strip()) == 0: - return 'empty' + return {'language': 'empty', 'language_details': 'empty'} - if lang_detect.version in ['176.bin', '218.bin']: - predictions, probabilities = lang_detect.predict(content_str) - result = decide_language_by_prob_v176(predictions, probabilities) - else: + if lang_detect.version not in LANG_ID_SUPPORTED_VERSIONS: raise ValueError(f'Unsupported version: {lang_detect.version}. Supported versions: {LANG_ID_SUPPORTED_VERSIONS}') - return result - - -def decide_lang_by_str(content_str: str, model_path: str = None) -> str: - """Decide language based on the content string, based on - decide_language_func.""" - lang_detect = get_singleton_lang_detect(model_path) - - return decide_language_func(content_str, lang_detect) + predictions, probabilities = lang_detect.predict(content_str) + language = decide_language_by_prob_v176(predictions, probabilities) -def decide_lang_by_str_v218(content_str: str, model_path: str = None) -> str: - """Decide language based on the content string, displayed in the format of - the fasttext218 model.""" - lang_detect = get_singleton_lang_detect(model_path) - if lang_detect.version == '176.bin': - return None + if lang_detect.version == '218.bin': + first_pred = predictions[0] + # Extract the full label (e.g., __label__eng_Latn -> eng_Latn) + if first_pred.startswith('__label__'): + language_details = first_pred.replace('__label__', '') else: - return lang_detect.predict(content_str)[0][0].replace('__label__', '') - + language_details = 'not_defined' -def update_language_by_str(content_str: str, model_path: str = None) -> str: - """Decide language based on the content string.""" return { - 'language': decide_lang_by_str(content_str, model_path), - 'language_details': decide_lang_by_str_v218(content_str, model_path) + 'language': language, + 'language_details': language_details } +def update_language_by_str(content_str: str, model_path: str = None) -> Dict[str, str]: + """Decide language based on the content string and return a dictionary with + language and details.""" + lang_detect = get_singleton_lang_detect(model_path) + return decide_language_func(content_str, lang_detect) + + if __name__ == '__main__': li = LanguageIdentification() print(li.version) diff --git a/llm_web_kit/model/libgomp.so.1 b/llm_web_kit/model/libgomp.so.1 new file mode 100644 index 00000000..91f39643 Binary files /dev/null and b/llm_web_kit/model/libgomp.so.1 differ diff --git a/llm_web_kit/model/model_impl.py b/llm_web_kit/model/model_impl.py new file mode 100644 index 00000000..d2d44112 --- /dev/null +++ b/llm_web_kit/model/model_impl.py @@ -0,0 +1,289 @@ +from abc import abstractmethod +from enum import Enum +from typing import Dict, List, Type + +from llm_web_kit.exception.exception import (ModelInitException, + ModelInputException, + ModelRuntimeException) +from llm_web_kit.model.model_interface import (BatchProcessConfig, + ModelPredictor, ModelResource, + ModelResponse, PoliticalRequest, + PoliticalResponse, PornRequest, + PornResponse, + ResourceRequirement) +from llm_web_kit.model.policical import (get_singleton_political_detect, + update_political_by_str) + + +class ModelType(Enum): + """模型类型枚举.""" + + POLITICAL = 'political' # 涉政模型 + PORN = 'porn' # 色情模型 + + +class DeviceType(Enum): + """设备类型枚举.""" + + CPU = 'cpu' + GPU = 'gpu' + + +class BaseModelResource(ModelResource): + """基础模型资源类.""" + + def __init__(self): + self.model = None + + def initialize(self) -> None: + self.model = self._load_model() + + @abstractmethod + def _load_model(self): + pass + + @abstractmethod + def convert_result_to_response(self, result: dict) -> ModelResponse: + pass + + def cleanup(self) -> None: + if self.model: + self._cleanup_model() + self.model = None + + def _cleanup_model(self): + pass + + +class BasePredictor(ModelPredictor): + """基础预测器类.""" + + def __init__(self, language: str): + self.language = language + self.model = self._create_model(language) + + # 初始化模型 + self.model.initialize() + + @abstractmethod + def _create_model(self, language) -> ModelResource: + pass + + def get_resource_requirement(self): + return self.model.get_resource_requirement() + + +# 涉政模型实现 +class PoliticalCPUModel(BaseModelResource): + """涉政检测CPU模型.""" + + def _load_model(self): + try: + model = get_singleton_political_detect() + if model is None: + raise RuntimeError('Failed to load political model') + return model + except Exception as e: + raise RuntimeError(f'Failed to load political CPU model: {e}') + + def get_resource_requirement(self): + return ResourceRequirement(num_cpus=1, memory_GB=4, num_gpus=0) + + def get_batch_config(self) -> BatchProcessConfig: + return BatchProcessConfig( + max_batch_size=1000, optimal_batch_size=512, min_batch_size=8 + ) + + def predict_batch(self, contents: List[str]) -> List[dict]: + if not self.model: + raise RuntimeError('Model not initialized') + try: + # 批量处理 + results = [] + for content in contents: + result = update_political_by_str(content) + results.append(result) + + return results + except Exception as e: + raise RuntimeError(f'Prediction failed: {e}') + + def convert_result_to_response(self, result: dict) -> ModelResponse: + # raise NotImplementedError + # TODO convert result to response ensure the threshold + return PoliticalResponse( + is_remained=result['political_prob'] > 0.99, details=result + ) + + +class PoliticalPredictorImpl(BasePredictor): + """涉政检测预测器实现.""" + + def _create_model(self, language: str) -> ModelResource: + + if language in ['zh', 'en']: + return PoliticalCPUModel() + raise ModelInitException( + f'Poltical model does not support language: {language}' + ) + + def predict_batch( + self, requests: List[PoliticalRequest] + ) -> List[PoliticalResponse]: + """批量预测接口.""" + + try: + # 收集所有请求内容 + batch_contents = [] + + for req in requests: + # 验证语言支持 + if req.language != self.language: + raise ModelInputException( + f'Language mismatch: {req.language} vs {self.language}' + ) + batch_contents.append(req.content) + + if batch_contents: + # 批量处理 + probs = self.model.predict_batch(batch_contents) + responses = [self.model.convert_result_to_response(prob) for prob in probs] + except Exception as e: + raise ModelRuntimeException(f'Political prediction failed: {e}') + + return responses + + +# 色情模型实现 +class PornEnGPUModel(BaseModelResource): + """英文色情检测GPU模型.""" + + def _load_model(self): + try: + from llm_web_kit.model.porn_detector import \ + BertModel as PornEnModel + + return PornEnModel() + except Exception as e: + raise ModelInitException(f'Failed to init the en porn model: {e}') + + def get_resource_requirement(self): + # S2 cluster has 96 CPUs, 1TB memory, 8 GPUs + # so we can use 12 CPUs, 64GB memory, 1 GPU for this model + return ResourceRequirement(num_cpus=12, memory_GB=64, num_gpus=1) + + def get_batch_config(self) -> BatchProcessConfig: + return BatchProcessConfig( + max_batch_size=1000, optimal_batch_size=512, min_batch_size=8 + ) + + def predict_batch(self, contents: List[str]) -> List[dict]: + if not self.model: + raise RuntimeError('Model not initialized') + try: + # 色情模型本身支持批处理 + results = self.model.predict(contents) + return [ + {'porn_prob': result[self.model.get_output_key('prob')]} + for result in results + ] + except Exception as e: + raise RuntimeError(f'Prediction failed: {e}') + + def convert_result_to_response(self, result: dict) -> ModelResponse: + # raise NotImplementedError + # TODO convert result to response ensure the threshold + return PornResponse(is_remained=result['porn_prob'] < 0.2, details=result) + + +class PornZhGPUModel(BaseModelResource): + """中文色情检测GPU模型.""" + + def _load_model(self): + try: + from llm_web_kit.model.porn_detector import \ + XlmrModel as PornZhModel + + return PornZhModel() + except Exception as e: + raise ModelInitException(f'Failed to init the zh porn model: {e}') + + def get_resource_requirement(self): + # S2 cluster has at least 96 CPUs, 1TB memory, 8 GPUs + # so we can use 12 CPUs, 64GB memory, 1 GPU for this model + return ResourceRequirement(num_cpus=12, memory_GB=64, num_gpus=1) + + def get_batch_config(self) -> BatchProcessConfig: + return BatchProcessConfig( + max_batch_size=300, optimal_batch_size=256, min_batch_size=8 + ) + + def predict_batch(self, contents: List[str]) -> List[dict]: + if not self.model: + raise RuntimeError('Model not initialized') + try: + # 色情模型本身支持批处理 + results = self.model.predict(contents) + return [ + {'porn_prob': result[self.model.get_output_key('prob')]} + for result in results + ] + except Exception as e: + raise RuntimeError(f'Prediction failed: {e}') + + def convert_result_to_response(self, result: dict) -> ModelResponse: + # raise NotImplementedError + # TODO convert result to response ensure the threshold + return PornResponse(is_remained=result['porn_prob'] > 0.95, details=result) + + +class PornPredictorImpl(BasePredictor): + """色情检测预测器实现.""" + + def _create_model(self, language: str) -> ModelResource: + if language == 'en': + return PornEnGPUModel() + elif language == 'zh': + return PornZhGPUModel() + raise ModelInitException(f'Porn model does not support language: {language}') + + def predict_batch(self, requests: List[PornRequest]) -> List[PornResponse]: + """批量预测接口.""" + try: + # 收集所有请求内容 + batch_contents = [] + + for req in requests: + # 验证语言支持 + if req.language != self.language: + raise ModelInputException( + f'Language mismatch: {req.language} vs {self.language}' + ) + batch_contents.append(req.content) + + if batch_contents: + # 批量处理 + probs = self.model.predict_batch(batch_contents) + responses = [self.model.convert_result_to_response(prob) for prob in probs] + except Exception as e: + raise ModelRuntimeException(f'Porn prediction failed: {e}') + return responses + + +# 模型工厂 +class ModelFactory: + """模型工厂类.""" + + _predictor_registry: Dict[ModelType, Type[BasePredictor]] = { + ModelType.POLITICAL: PoliticalPredictorImpl, + ModelType.PORN: PornPredictorImpl, + } + + @classmethod + def create_predictor(cls, model_type: ModelType, language: str) -> BasePredictor: + """创建预测器实例.""" + predictor_class = cls._predictor_registry.get(model_type) + print(predictor_class) + if not predictor_class: + raise ValueError(f'No predictor registered for type: {model_type}') + return predictor_class(language=language) diff --git a/llm_web_kit/model/model_interface.py b/llm_web_kit/model/model_interface.py new file mode 100644 index 00000000..3136cb99 --- /dev/null +++ b/llm_web_kit/model/model_interface.py @@ -0,0 +1,151 @@ +from abc import ABC, abstractmethod +from dataclasses import dataclass +from enum import Enum +from typing import Any, Dict, List + + +@dataclass +class ModelRequest: + """通用模型请求基类.""" + + content: str + language: str + extra_params: Dict[str, Any] = None + + +@dataclass +class ModelResponse: + """通用模型响应基类.""" + + is_remained: bool + details: Dict[str, Any] = None + + +@dataclass +class PoliticalRequest(ModelRequest): + """涉政检测请求.""" + + pass + + +@dataclass +class PoliticalResponse(ModelResponse): + """涉政检测响应.""" + + pass + + +@dataclass +class PornRequest(ModelRequest): + """色情检测请求.""" + + pass + + +@dataclass +class PornResponse(ModelResponse): + """色情检测响应.""" + + pass + + +@dataclass +class BatchProcessConfig: + """批处理配置.""" + + max_batch_size: int + optimal_batch_size: int + min_batch_size: int + + +class ResourceType(Enum): + """资源类型枚举.""" + + CPU = 'cpu_only' + GPU = 'num_gpus' + DEFAULT = 'default' + + +class ResourceRequirement: + def __init__(self, num_cpus: float, memory_GB: float, num_gpus: float = 0.0): + self.num_cpus = num_cpus + self.memory_GB = memory_GB + self.num_gpus = num_gpus + + def to_ray_resources(self) -> Dict: + if self.num_gpus > 0: + resources = { + 'num_cpus': self.num_cpus, + 'memory': self.memory_GB * 2**30, + 'num_gpus': self.num_gpus, + } + else: + # prefer to use CPU on CPU only node + # we set dummy resource "cpu_only" on CPU only node + # so set resources.cpu_only = 1 to ensure the task can be scheduled on CPU only node + resources = { + 'num_cpus': self.num_cpus, + 'memory': self.memory_GB * 2**30, + 'resources': {'cpu_only': 1}, + } + + return resources + + +class ModelResource(ABC): + """模型资源接口.""" + + @abstractmethod + def initialize(self) -> None: + """初始化模型资源.""" + pass + + @abstractmethod + def get_batch_config(self) -> BatchProcessConfig: + """获取模型的批处理配置.""" + pass + + @abstractmethod + def predict_batch(self, contents: List[str]) -> List[dict]: + """批量预测.""" + pass + + @abstractmethod + def cleanup(self) -> None: + """清理资源.""" + pass + + @abstractmethod + def get_resource_requirement(self) -> ResourceRequirement: + """获取资源需求.""" + pass + + +class ModelPredictor(ABC): + """通用预测器接口.""" + + @abstractmethod + def get_resource_requirement(self, language: str) -> ResourceRequirement: + """获取资源需求.""" + pass + + @abstractmethod + def predict_batch(self, requests: List[ModelRequest]) -> List[ModelResponse]: + """批量预测接口 - 同步版本.""" + pass + + +class PoliticalPredictor(ModelPredictor): + """涉政预测器接口.""" + + def predict_batch( + self, requests: List[PoliticalRequest] + ) -> List[PoliticalResponse]: + pass + + +class PornPredictor(ModelPredictor): + """色情预测器接口.""" + + def predict_batch(self, requests: List[PornRequest]) -> List[PornResponse]: + pass diff --git a/llm_web_kit/model/policical.py b/llm_web_kit/model/policical.py index 08281a53..66e7f89b 100644 --- a/llm_web_kit/model/policical.py +++ b/llm_web_kit/model/policical.py @@ -1,29 +1,35 @@ import os -from typing import Dict, Tuple +from typing import Any, Dict, Tuple import fasttext -from transformers import AutoTokenizer from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import ModelInputException +from llm_web_kit.input.datajson import DataJson from llm_web_kit.libs.logger import mylogger as logger -from llm_web_kit.model.resource_utils.download_assets import ( - CACHE_DIR, download_auto_file) -from llm_web_kit.model.resource_utils.singleton_resource_manager import \ - singleton_resource_manager -from llm_web_kit.model.resource_utils.unzip_ext import (get_unzip_dir, - unzip_local_file) +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + get_unzip_dir, + import_transformer, + singleton_resource_manager, + unzip_local_file) class PoliticalDetector: def __init__(self, model_path: str = None): + # import AutoTokenizer here to avoid isort error + # must set the HF_HOME to the CACHE_DIR at this point + transformer = import_transformer() + if not model_path: model_path = self.auto_download() model_bin_path = os.path.join(model_path, 'model.bin') tokenizer_path = os.path.join(model_path, 'internlm2-chat-20b') self.model = fasttext.load_model(model_bin_path) - self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_path, use_fast=False, trust_remote_code=True) + self.tokenizer = transformer.AutoTokenizer.from_pretrained( + tokenizer_path, use_fast=False, trust_remote_code=True + ) def auto_download(self): """Default download the 24m7.zip model.""" @@ -44,7 +50,9 @@ def auto_download(self): if not os.path.exists(zip_path): logger.info(f'zip_path: {zip_path} does not exist') logger.info(f'downloading {political_24m7_s3}') - zip_path = download_auto_file(political_24m7_s3, zip_path, political_24m7_md5) + zip_path = download_auto_file( + political_24m7_s3, zip_path, political_24m7_md5 + ) logger.info(f'unzipping {zip_path}') unzip_path = unzip_local_file(zip_path, unzip_path) return unzip_path @@ -52,7 +60,9 @@ def auto_download(self): def predict(self, text: str) -> Tuple[str, float]: text = text.replace('\n', ' ') input_ids = self.tokenizer(text)['input_ids'] - predictions, probabilities = self.model.predict(' '.join([str(i) for i in input_ids]), k=-1) + predictions, probabilities = self.model.predict( + ' '.join([str(i) for i in input_ids]), k=-1 + ) return predictions, probabilities @@ -75,13 +85,17 @@ def get_singleton_political_detect() -> PoliticalDetector: return singleton_resource_manager.get_resource('political_detect') -def decide_political_by_prob(predictions: Tuple[str], probabilities: Tuple[float]) -> float: +def decide_political_by_prob( + predictions: Tuple[str], probabilities: Tuple[float] +) -> float: idx = predictions.index('__label__normal') normal_score = probabilities[idx] - return normal_score + return float(normal_score) -def decide_political_func(content_str: str, political_detect: PoliticalDetector) -> float: +def decide_political_func( + content_str: str, political_detect: PoliticalDetector +) -> float: # Limit the length of the content to 2560000 content_str = content_str[:2560000] predictions, probabilities = political_detect.predict(content_str) @@ -93,7 +107,14 @@ def decide_political_by_str(content_str: str) -> float: def update_political_by_str(content_str: str) -> Dict[str, float]: - return {'politics_prob': decide_political_by_str(content_str)} + return {'political_prob': decide_political_by_str(content_str)} + + +def political_filter_cpu(data_dict: Dict[str, Any], language: str): + if language != 'zh' and language != 'en': + raise ModelInputException(f"Unsupport language '{language}'") + content = DataJson(data_dict).get_content_list().to_txt() + return update_political_by_str(content) if __name__ == '__main__': @@ -102,7 +123,9 @@ def update_political_by_str(content_str: str) -> Dict[str, float]: test_cases.append('hello, nice to meet you!') test_cases.append('你好,唔該幫我一個忙?') test_cases.append('Bawo ni? Mo nife Yoruba. ') - test_cases.append('你好,我很高兴见到你,请多多指教!你今天吃饭了吗?hello, nice to meet you!') + test_cases.append( + '你好,我很高兴见到你,请多多指教!你今天吃饭了吗?hello, nice to meet you!' + ) test_cases.append('איך בין אַ גרויסער פֿאַן פֿון די וויסנשאַפֿט. מיר האָבן פֿיל צו לערנען.') test_cases.append('გამარჯობა, როგორ ხარ? მე ვარ კარგად, მადლობა.') test_cases.append('გამარჯობა, როგორ ხართ? ეს ჩემი ქვეყანაა, საქართველო.') diff --git a/llm_web_kit/model/porn_detector.py b/llm_web_kit/model/porn_detector.py index ae3df185..8475afb3 100644 --- a/llm_web_kit/model/porn_detector.py +++ b/llm_web_kit/model/porn_detector.py @@ -3,28 +3,36 @@ from typing import Dict, List, Union import torch -from transformers import AutoModelForSequenceClassification, AutoTokenizer from llm_web_kit.config.cfg_reader import load_config from llm_web_kit.libs.logger import mylogger as logger -from llm_web_kit.model.resource_utils.download_assets import ( - CACHE_DIR, download_auto_file) -from llm_web_kit.model.resource_utils.unzip_ext import (get_unzip_dir, - unzip_local_file) +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + get_unzip_dir, + import_transformer, + unzip_local_file) +# from transformers import AutoModelForSequenceClassification, AutoTokenizer -class BertModel(): + +class BertModel: def __init__(self, model_path: str = None) -> None: if not model_path: model_path = self.auto_download() - self.model = AutoModelForSequenceClassification.from_pretrained(os.path.join(model_path, 'porn_classifier/classifier_hf')) - with open(os.path.join(model_path, 'porn_classifier/extra_parameters.json')) as reader: + transformers_module = import_transformer() + self.model = transformers_module.AutoModelForSequenceClassification.from_pretrained( + os.path.join(model_path, 'porn_classifier/classifier_hf') + ) + with open( + os.path.join(model_path, 'porn_classifier/extra_parameters.json') + ) as reader: model_config = json.load(reader) self.cls_index = int(model_config.get('cls_index', 1)) self.use_sigmoid = bool(model_config.get('use_sigmoid', False)) self.max_tokens = int(model_config.get('max_tokens', 512)) - self.remain_tail = min(self.max_tokens - 1, int(model_config.get('remain_tail', -1))) + self.remain_tail = min( + self.max_tokens - 1, int(model_config.get('remain_tail', -1)) + ) self.device = model_config.get('device', 'cpu') self.model.eval() @@ -33,7 +41,9 @@ def __init__(self, model_path: str = None) -> None: if hasattr(self.model, 'to_bettertransformer'): self.model = self.model.to_bettertransformer() - self.tokenizer = AutoTokenizer.from_pretrained(os.path.join(model_path, 'porn_classifier/classifier_hf')) + self.tokenizer = transformers_module.AutoTokenizer.from_pretrained( + os.path.join(model_path, 'porn_classifier/classifier_hf') + ) self.tokenizer_config = { 'padding': True, 'truncation': self.remain_tail <= 0, @@ -86,22 +96,36 @@ def pre_process(self, samples: Union[List[str], str]) -> Dict: length = tokens_id.index(self.tokenizer.sep_token_id) + 1 # 如果tokens的长度小于等于max_tokens,则直接在尾部补0,不需要截断 if length <= self.max_tokens: - tokens = tokens_id[:length] + [self.tokenizer.pad_token_id] * (self.max_tokens - length) + tokens = tokens_id[:length] + [self.tokenizer.pad_token_id] * ( + self.max_tokens - length + ) attn = [1] * length + [0] * (self.max_tokens - length) # 如果tokens的长度大于max_tokens,则需要取头部max_tokens-remain_tail个tokens和尾部remain_tail个tokens else: head_length = self.max_tokens - self.remain_tail tail_length = self.remain_tail - tokens = tokens_id[:head_length] + tokens_id[length - tail_length : length] + tokens = ( + tokens_id[:head_length] + + tokens_id[length - tail_length : length] + ) attn = [1] * self.max_tokens # 将处理后的tokens添加到新的inputs列表中 - processed_inputs.append({'input_ids': torch.tensor(tokens), 'attention_mask': torch.tensor(attn)}) + processed_inputs.append( + { + 'input_ids': torch.tensor(tokens), + 'attention_mask': torch.tensor(attn), + } + ) # 将所有inputs整合成一个batch inputs = { - 'input_ids': torch.cat([inp['input_ids'].unsqueeze(0) for inp in processed_inputs]), - 'attention_mask': torch.cat([inp['attention_mask'].unsqueeze(0) for inp in processed_inputs]), + 'input_ids': torch.cat( + [inp['input_ids'].unsqueeze(0) for inp in processed_inputs] + ), + 'attention_mask': torch.cat( + [inp['attention_mask'].unsqueeze(0) for inp in processed_inputs] + ), } inputs = {name: tensor.to(self.device) for name, tensor in inputs.items()} return {'inputs': inputs} @@ -130,3 +154,88 @@ def predict(self, texts: Union[List[str], str]): outputs.append(output) return outputs + + +class XlmrModel(BertModel): + def __init__(self, model_path: str = None) -> None: + if not model_path: + model_path = self.auto_download() + + transformers_module = import_transformer() + + self.model = transformers_module.AutoModelForSequenceClassification.from_pretrained( + os.path.join(model_path, 'porn_classifier/classifier_hf') + ) + with open( + os.path.join(model_path, 'porn_classifier/extra_parameters.json') + ) as reader: + model_config = json.load(reader) + + self.clip = bool(model_config.get('clip', False)) + self.max_tokens = int(model_config.get('max_tokens', 300)) + self.remain_tail = min( + self.max_tokens - 1, int(model_config.get('remain_tail', -1)) + ) + self.device = model_config.get('device', 'cpu') + + self.model.eval() + self.model.to(self.device, dtype=torch.float16) + + self.tokenizer = transformers_module.AutoTokenizer.from_pretrained( + os.path.join(model_path, 'porn_classifier/classifier_hf') + ) + self.tokenizer_config = { + 'padding': True, + 'truncation': self.remain_tail <= 0, + 'max_length': self.max_tokens if self.remain_tail <= 0 else None, + 'return_tensors': 'pt' if self.remain_tail <= 0 else None, + } + + self.output_prefix = str(model_config.get('output_prefix', '')).rstrip('_') + self.output_postfix = str(model_config.get('output_postfix', '')).lstrip('_') + + self.model_name = str(model_config.get('model_name', 'porn-24m5')) + + def auto_download(self) -> str: + """Default download the 23w44.zip model.""" + resource_name = 'porn-24m5' + resource_config = load_config()['resources'] + porn_24m5_config: Dict = resource_config[resource_name] + porn_24m5_s3 = porn_24m5_config['download_path'] + porn_24m5_md5 = porn_24m5_config.get('md5', '') + # get the zip path calculated by the s3 path + zip_path = os.path.join(CACHE_DIR, f'{resource_name}.zip') + # the unzip path is calculated by the zip path + unzip_path = get_unzip_dir(zip_path) + logger.info(f'try to make unzip_path: {unzip_path}') + # if the unzip path does not exist, download the zip file and unzip it + if not os.path.exists(unzip_path): + logger.info(f'unzip_path: {unzip_path} does not exist') + logger.info(f'try to unzip from zip_path: {zip_path}') + if not os.path.exists(zip_path): + logger.info(f'zip_path: {zip_path} does not exist') + logger.info(f'downloading {porn_24m5_s3}') + zip_path = download_auto_file(porn_24m5_s3, zip_path, porn_24m5_md5) + logger.info(f'unzipping {zip_path}') + unzip_path = unzip_local_file(zip_path, unzip_path) + else: + logger.info(f'unzip_path: {unzip_path} exist') + return unzip_path + + def predict(self, texts: Union[List[str], str]): + inputs_dict = self.pre_process(texts) + with torch.no_grad(): + logits = self.model(**inputs_dict['inputs']).logits + + if self.clip: + probs = logits.detach().cpu().numpy().clip(min=0, max=1) + else: + probs = logits.detach().cpu().numpy() + + outputs = [] + for prob in probs: + prob = round(float(prob[0]), 6) + output = {self.get_output_key('prob'): prob} + outputs.append(output) + + return outputs diff --git a/llm_web_kit/model/quality_model.py b/llm_web_kit/model/quality_model.py new file mode 100644 index 00000000..d0839b84 --- /dev/null +++ b/llm_web_kit/model/quality_model.py @@ -0,0 +1,402 @@ +import ctypes +import os +import pickle +import re +from typing import Any, Dict, Tuple + +import pandas as pd + +import llm_web_kit.model.basic_functions as bfuncs +from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import ( + CleanModelUnsupportedLanguageException, ModelInputException) +from llm_web_kit.input.datajson import DataJson +from llm_web_kit.libs.logger import mylogger as logger +from llm_web_kit.model.basic_functions.features import ( + BULLET_POINT_SYMBOLS, content2lines, content2words, extract_formulas, + formula_complexity_features, formula_count_features, + formula_distribution_var, formula_type_ratios, get_content_len, + get_content_len_without_space, stats_continue_space, stats_entropy, + stats_html_entity, stats_ngram_mini, stats_punctuation_end_sentence, + stats_stop_words, stats_unicode) +from llm_web_kit.model.basic_functions.utils import div_zero +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + get_unzip_dir, unzip_local_file) + +_global_quality_model = {} +_model_resource_map = { + 'zh-article': 'zh_en_article', + 'en-article': 'zh_en_article', + 'zh-book': 'zh_en_long_article', + 'zh-paper': 'zh_en_long_article', + 'en-book': 'zh_en_long_article', + 'en-paper': 'zh_en_long_article', +} +threshold_map = { + 'zh_en_article': 0.59, + 'zh_en_long_article': 0.7, +} + + +class QualityModel: + def __init__( + self, language: str = None, content_style: str = None, model_path: str = None + ) -> None: + if not model_path: + model_path = self.auto_download(language, content_style) + self.quality_model = self._load_model(model_path) + + def auto_download(self, language: str = None, content_style: str = None): + """Download checkpoint file according to language and content_style, + default the zh_en_article.zip.""" + if language and content_style: + resource_name = _model_resource_map[f'{language}-{content_style}'] + else: + resource_name = 'zh_en_article' + resource_config = load_config()['resources'] + zh_en_article_config: Dict = resource_config[resource_name] + zh_en_article_s3 = zh_en_article_config['download_path'] + zh_en_article_md5 = zh_en_article_config.get('md5', '') + # get the zip path calculated by the s3 path + zip_path = os.path.join(CACHE_DIR, f'{resource_name}.zip') + # the unzip path is calculated by the zip path + unzip_path = get_unzip_dir(zip_path) + logger.info(f'try to make unzip_path: {unzip_path}') + # if the unzip path does not exist, download the zip file and unzip it + if not os.path.exists(unzip_path): + logger.info(f'unzip_path: {unzip_path} does not exist') + logger.info(f'try to unzip from zip_path: {zip_path}') + if not os.path.exists(zip_path): + logger.info(f'zip_path: {zip_path} does not exist') + logger.info(f'downloading {zh_en_article_s3}') + zip_path = download_auto_file( + zh_en_article_s3, zip_path, zh_en_article_md5 + ) + logger.info(f'unzipping {zip_path}') + unzip_path = unzip_local_file(zip_path, unzip_path) + else: + logger.info(f'unzip_path: {unzip_path} exist') + + if content_style == 'book' or content_style == 'paper': + res_path = os.path.join(unzip_path, 'lgb_model_1028.pkl') + else: + res_path = os.path.join(unzip_path, 'lgb_model_0925.pkl') + + return res_path + + def _load_model(self, model_path): + ctypes.cdll.LoadLibrary('libgomp.so.1') + with open(model_path, 'rb') as file: + model = pickle.load(file) + return model + + def predict_with_features(self, features_dict: Dict[str, Any]) -> float: + feature_df = pd.json_normalize(features_dict) + pred = self.quality_model.predict(feature_df, num_threads=1)[0] + + return float(pred) + + def predict_with_content(self, content: str, content_style: str = None) -> float: + # 停用词相关 + stop_word_dict = stats_stop_words(content) + stop_word_num = stop_word_dict['stop_word_num'] + stop_word_frac = stop_word_dict['stop_word_frac'] + + if stop_word_num < 1: + return 0.0 + + # 信息熵 + entropy = stats_entropy(content)['entropy'] + + if entropy <= 1: + return 0.0 + + # 文本长度 + content_len = get_content_len(content) + + # 分词 + word_list = content2words(content) + words_num = len(word_list) + + if word_list: + longest_word_length = max([len(w) for w in word_list]) + else: + longest_word_length = 0 + + if longest_word_length > 56: + return 0.0 + + # 内容文本长度和占比 + content_word_list = [x for x in word_list if x.isalpha()] + content_word_len = sum([len(x) for x in content_word_list]) + content_word_frac = div_zero(content_word_len, content_len) + + if content_word_len <= 30: + return 0.0 + + # 标点结尾句子 + punc_sentence_dict = stats_punctuation_end_sentence(content) + punc_end_sentence_num = punc_sentence_dict['punc_end_sentence_num'] + punc_end_sentence_mean_len = punc_sentence_dict['punc_end_sentence_mean_len'] + longest_punc_sentence_len = punc_sentence_dict['longest_punc_sentence_len'] + + if punc_end_sentence_mean_len <= 2: + return 0.0 + + if longest_punc_sentence_len > 480: + return 0.0 + + # 最大连续空格 + max_continue_space_num = stats_continue_space(content)['max_continue_space_num'] + + if max_continue_space_num > 500: + return 0.0 + + # 分行 + content_lines = content2lines(content) + lines_num = len(content_lines) + + # 分词压缩率 + content_len_without_space = get_content_len_without_space(content) + word_compression = div_zero(content_len_without_space, words_num) + + # 特殊字符 + special_char_pattern = re.compile(r'[�□]') + special_char_list = special_char_pattern.findall(content) + special_char_len = sum([len(x) for x in special_char_list]) + special_char_frac = div_zero(special_char_len, content_len_without_space) + + if special_char_frac > 0.01: + return 0.0 + + # 数字长度和占比 + numbers = re.findall(r'\d+', content) + num_len = sum([len(x) for x in numbers]) + num_frac = div_zero(num_len, content_len) + + # 空格长度和占比 + space_list = re.findall(r'\s+', content) + space_len = sum([len(x) for x in space_list]) + space_frac = div_zero(space_len, content_len) + + # 标点长度和占比 + punc_list = bfuncs.character.get_common_punc_list() + punc_pattern_str = re.escape(''.join(punc_list)) + punc_pattern = re.compile(r'[' + punc_pattern_str + ']') + puncs = punc_pattern.findall(content) + punc_len = sum([len(x) for x in puncs]) + punc_frac = div_zero(punc_len, content_len) + + # emoji的长度和占比 + emoji_pattern = bfuncs.char_norm.emoji_pattern + emojis = emoji_pattern.findall(content) + emoji_len = sum([len(x) for x in emojis]) + emoji_frac = div_zero(emoji_len, content_len) + + ellipsis_line_num = 0 + ellipsis_list = ['…', '...', '。。。'] + for line in content_lines: + if any([line.endswith(ell) for ell in ellipsis_list]): + ellipsis_line_num += 1 + ellipsis_line_frac = div_zero(ellipsis_line_num, lines_num) + + enter_num = len(re.findall(r'\n', content)) + enter_frac = div_zero(enter_num, content_len_without_space) + + # html 符号 + html_entity_dict = stats_html_entity(content) + html_semi_entity_count = html_entity_dict['html_semi_entity_count'] + html_semi_entity_frac = html_entity_dict['html_semi_entity_frac'] + + url_pattern = re.compile( + r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+' + ) + url_list = url_pattern.findall(content) + url_len = sum([len(x) for x in url_list]) + url_char_frac = div_zero(url_len, content_len_without_space) + + # 退化度 + unique_words_frac = div_zero(len(set(word_list)), len(word_list)) + + # search_text = 'javascript' + # js_counts = sum([line.lower().count(search_text) > 0 for line in content_lines]) + # js_line_frac = div_zero(js_counts, lines_num) + + average_words_per_line = div_zero(words_num, lines_num) + + bulletpoint_lines = 0 + for line in content_lines: + if line.lstrip().startswith(BULLET_POINT_SYMBOLS): + bulletpoint_lines += 1 + bulletpoint_line_frac = div_zero(bulletpoint_lines, lines_num) + + gram_dict = stats_ngram_mini(content) + dup_top_2gram = gram_dict['dup_top_2gram'] + # dup_top_3gram = gram_dict["dup_top_3gram"] + dup_top_4gram = gram_dict['dup_top_4gram'] + # dup_5gram = gram_dict["dup_5gram"] + # dup_6gram = gram_dict["dup_6gram"] + # dup_7gram = gram_dict["dup_7gram"] + # dup_8gram = gram_dict["dup_8gram"] + # dup_9gram = gram_dict["dup_9gram"] + dup_10gram = gram_dict['dup_10gram'] + + unicode_dict = stats_unicode(content) + std_dev_unicode_value = unicode_dict['std_dev_unicode_value'] + mean_diff_unicode_value = unicode_dict['mean_diff_unicode_value'] + + features_dict = {} + if content_style == 'book' or content_style == 'paper': + # 公式相关特征 + inline_formulas, block_formulas = extract_formulas(content) + + formula_count_dict = formula_count_features(inline_formulas, block_formulas) + inline_formula_count = formula_count_dict['inline_formula_count'] + block_formula_count = formula_count_dict['block_formula_count'] + total_formula_count = formula_count_dict['total_formula_count'] + + formula_density = ( + total_formula_count / content_len if content_len > 0 else 0 + ) + + formula_complexity_dict = formula_complexity_features( + inline_formulas, block_formulas + ) + average_formula_length = formula_complexity_dict['average_formula_length'] + average_operator_count = formula_complexity_dict['average_operator_count'] + + formula_distribution_variance = formula_distribution_var(content_lines) + + formula_type_ratio_dict = formula_type_ratios( + inline_formulas, block_formulas + ) + integral_formula_ratio = formula_type_ratio_dict['integral_formula_ratio'] + derivative_formula_ratio = formula_type_ratio_dict[ + 'derivative_formula_ratio' + ] + matrix_formula_ratio = formula_type_ratio_dict['matrix_formula_ratio'] + + features_dict.update( + { + 'inline_formula_count': inline_formula_count, + 'block_formula_count': block_formula_count, + 'total_formula_count': total_formula_count, + 'formula_density': formula_density, + 'average_formula_length': average_formula_length, + 'average_operator_count': average_operator_count, + 'formula_distribution_variance': formula_distribution_variance, + 'integral_formula_ratio': integral_formula_ratio, + 'derivative_formula_ratio': derivative_formula_ratio, + 'matrix_formula_ratio': matrix_formula_ratio, + } + ) + + features_dict.update( + { + # "content_len": content_len, + 'lines_num': lines_num, + 'words_num': words_num, + 'word_compression': word_compression, + 'content_word_len': content_word_len, + 'content_word_frac': content_word_frac, + 'num_len': num_len, + 'num_frac': num_frac, + 'space_len': space_len, + 'space_frac': space_frac, + 'punc_len': punc_len, + 'punc_frac': punc_frac, + 'emoji_len': emoji_len, + 'emoji_frac': emoji_frac, + 'punc_end_sentence_num': punc_end_sentence_num, + 'punc_end_sentence_mean_len': punc_end_sentence_mean_len, + 'stop_word_num': stop_word_num, + 'stop_word_frac': stop_word_frac, + # "ellipsis_line_num": ellipsis_line_num, + 'ellipsis_line_frac': ellipsis_line_frac, + 'enter_frac': enter_frac, + 'max_continue_space_num': max_continue_space_num, + 'html_semi_entity_count': html_semi_entity_count, + 'html_semi_entity_frac': html_semi_entity_frac, + 'url_char_frac': url_char_frac, + 'special_char_len': special_char_len, + 'special_char_frac': special_char_frac, + 'unique_words_frac': unique_words_frac, + 'entropy': entropy, + # "js_line_frac": js_line_frac, + 'average_words_per_line': average_words_per_line, + 'bulletpoint_line_frac': bulletpoint_line_frac, + 'dup_top_2gram': dup_top_2gram, + # "dup_top_3gram": dup_top_3gram, + 'dup_top_4gram': dup_top_4gram, + # "dup_5gram": dup_5gram, + # "dup_6gram": dup_6gram, + # "dup_7gram": dup_7gram, + # "dup_8gram": dup_8gram, + # "dup_9gram": dup_9gram, + 'dup_10gram': dup_10gram, + 'std_dev_unicode_value': std_dev_unicode_value, + 'mean_diff_unicode_value': mean_diff_unicode_value, + } + ) + + prob = self.predict_with_features(features_dict) + return prob + + +def get_quality_model(language, content_style) -> Tuple[QualityModel, float]: + model_name = _model_resource_map.get(f'{language}-{content_style}', None) + if model_name is None: + return None, None + if model_name not in _global_quality_model: + _global_quality_model[model_name] = QualityModel(language, content_style) + threshold = threshold_map[model_name] + + return _global_quality_model[model_name], threshold + + +def quality_prober(data_dict: Dict[str, Any], language: str, content_style: str): + model, _ = get_quality_model(language, content_style) + if model is None: + raise ModelInputException( + f"Unsupport language '{language}' or content_style '{content_style}'" + ) + content = DataJson(data_dict).get_content_list().to_txt() + return {'quality_prob': model.predict_with_content(content, content_style)} + + +class QualityFilter: + def __init__(self): + pass + + def check_supported(self, language: str, content_style: str): + return f'{language}-{content_style}' in _model_resource_map + + def filter( + self, content_str: str, language: str, language_details: str, content_style: str + ) -> Tuple[bool, Dict[str, Any]]: + """Predict the quality score of the content and filter out score below + the threshold First, check if the language and content_style are + supported Then get the quality model and threshold, and predict the + quality score of the content Finally, return the result of whether the + content should be filtered out. + + Args: + content_str (str): the content string + language (str): the language of the content + language_details (str): the details of the language + content_style (str): the content style of the content + + Raises: + CleanModelUnsupportedLanguageException: raise if the language and content_style are not supported + + Returns: + bool: True if the content should remain, False if the content should be filtered out + """ + if not self.check_supported(language, content_style): + raise CleanModelUnsupportedLanguageException( + f"Unsupport language '{language}' with content_style '{content_style}'" + ) + else: + model, threshold = get_quality_model(language, content_style) + prob = model.predict_with_content(content_str, content_style) + return prob > threshold, {'quality_prob': prob} diff --git a/llm_web_kit/model/resource_utils/__init__.py b/llm_web_kit/model/resource_utils/__init__.py index e69de29b..966c5555 100644 --- a/llm_web_kit/model/resource_utils/__init__.py +++ b/llm_web_kit/model/resource_utils/__init__.py @@ -0,0 +1,14 @@ +from .download_assets import download_auto_file +from .singleton_resource_manager import singleton_resource_manager +from .unzip_ext import get_unzip_dir, unzip_local_file +from .utils import CACHE_DIR, CACHE_TMP_DIR, import_transformer + +__all__ = [ + 'download_auto_file', + 'unzip_local_file', + 'get_unzip_dir', + 'CACHE_DIR', + 'CACHE_TMP_DIR', + 'singleton_resource_manager', + 'import_transformer', +] diff --git a/llm_web_kit/model/resource_utils/boto3_ext.py b/llm_web_kit/model/resource_utils/boto3_ext.py index 11341568..ac75fb8b 100644 --- a/llm_web_kit/model/resource_utils/boto3_ext.py +++ b/llm_web_kit/model/resource_utils/boto3_ext.py @@ -1,20 +1,37 @@ import re -from typing import Dict, List, Union +from typing import Dict, List, Tuple, Union import boto3 from botocore.config import Config from botocore.exceptions import ClientError from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import ModelResourceException __re_s3_path = re.compile('^s3://([^/]+)(?:/(.*))?$') def is_s3_path(path: str) -> bool: + """check a path is s3 path or not. + + Args: + path (str): path + + Returns: + bool: is s3 path or not + """ return path.startswith('s3://') -def is_s3_404_error(e: Exception): +def is_s3_404_error(e: Exception) -> bool: + """check if an exception is 404 error. + + Args: + e (Exception): exception + + Returns: + bool: is 404 error or not + """ if not isinstance(e, ClientError): return False flag_1 = e.response.get('Error', {}).get('Code') in ['404', 'NoSuchKey'] @@ -23,22 +40,35 @@ def is_s3_404_error(e: Exception): return any([flag_1, flag_2, flag_3]) -def split_s3_path(path: str): - """split bucket and key from path.""" +def split_s3_path(path: str) -> Tuple[str, str]: + """split bucket and key from path. + + Args: + path (str): s3 path + + Returns: + Tuple[str, str]: bucket and key + + Raises: + ModelResourceException: if path is not s3 path + """ + if not is_s3_path(path): + raise ModelResourceException(f'{path} is not a s3 path') m = __re_s3_path.match(path) if m is None: return '', '' return m.group(1), (m.group(2) or '') -def get_s3_config(path: str): +def get_s3_config(path: str) -> Dict: """Get s3 config for a given path by its bucket name from the config file. Args: path (str): s3 path Raises: - ValueError: if bucket not found in config + ModelResourceException: if bucket not in config + ModelResourceException: if path is not s3 path Returns: dict: s3 config @@ -48,10 +78,23 @@ def get_s3_config(path: str): if bucket in config_dict['s3']: return config_dict['s3'][bucket] else: - raise ValueError(f'bucket {bucket} not in config') + raise ModelResourceException(f'bucket {bucket} not in config') + + +def get_s3_client(path: Union[str, List[str]]) -> boto3.client: + """Get s3 client for a given path. + + Args: + path (Union[str, List[str]]): s3 path + + Returns: + boto3.client: s3 client + Raises: + ModelResourceException: if bucket not in config + ModelResourceException: if path is not s3 path + """ -def get_s3_client(path: Union[str, List[str]]): s3_config = get_s3_config(path) try: return boto3.client( @@ -61,10 +104,7 @@ def get_s3_client(path: Union[str, List[str]]): endpoint_url=s3_config['endpoint'], config=Config( s3={'addressing_style': s3_config.get('addressing_style', 'path')}, - retries={ - 'max_attempts': 8, - 'mode': 'standard' - }, + retries={'max_attempts': 8, 'mode': 'standard'}, connect_timeout=600, read_timeout=600, ), @@ -84,6 +124,21 @@ def get_s3_client(path: Union[str, List[str]]): def head_s3_object(client, path: str, raise_404=False) -> Union[Dict, None]: + """Get s3 object metadata. + + Args: + client (boto3.client): the s3 client + path (str): the s3 path + raise_404 (bool, optional): raise 404 error or not. Defaults to False. + + Returns: + Union[Dict, None]: s3 object metadata or None if not found + + Raises: + ClientError: if raise_404 is True and object not + ModelResourceException: if path is not s3 path + ModelResourceException: if bucket not in config + """ bucket, key = split_s3_path(path) try: resp = client.head_object(Bucket=bucket, Key=key) diff --git a/llm_web_kit/model/resource_utils/download_assets.py b/llm_web_kit/model/resource_utils/download_assets.py index b4411f7c..a0fe0ca7 100644 --- a/llm_web_kit/model/resource_utils/download_assets.py +++ b/llm_web_kit/model/resource_utils/download_assets.py @@ -1,74 +1,126 @@ +"""本模块提供从 S3 或 HTTP 下载文件的功能,支持校验和验证和并发下载锁机制。 + +主要功能: +1. 计算文件的 MD5 和 SHA256 校验和 +2. 通过 S3 或 HTTP 连接下载文件 +3. 使用文件锁防止并发下载冲突 +4. 自动校验文件完整性 + +类说明: +- Connection: 抽象基类,定义下载连接接口 +- S3Connection: 实现 S3 文件下载连接 +- HttpConnection: 实现 HTTP 文件下载连接 + +函数说明: +- calc_file_md5/sha256: 计算文件哈希值 +- verify_file_checksum: 校验文件哈希 +- download_auto_file_core: 核心下载逻辑 +- download_auto_file: 自动下载入口函数(含锁机制) +""" + import hashlib import os -import shutil import tempfile -from typing import Iterable +from functools import partial +from typing import Iterable, Optional import requests from tqdm import tqdm -from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import ModelResourceException from llm_web_kit.libs.logger import mylogger as logger from llm_web_kit.model.resource_utils.boto3_ext import (get_s3_client, is_s3_path, split_s3_path) +from llm_web_kit.model.resource_utils.process_with_lock import \ + process_and_verify_file_with_lock +from llm_web_kit.model.resource_utils.utils import CACHE_TMP_DIR -def decide_cache_dir(): - """Get the cache directory for the web kit. The. +def calc_file_md5(file_path: str) -> str: + """计算文件的 MD5 校验和. + + Args: + file_path: 文件路径 Returns: - _type_: _description_ + MD5 哈希字符串(32位十六进制) """ - cache_dir = '~/.llm_web_kit_cache' - - if 'WEB_KIT_CACHE_DIR' in os.environ: - cache_dir = os.environ['WEB_KIT_CACHE_DIR'] + with open(file_path, 'rb') as f: + return hashlib.md5(f.read()).hexdigest() - try: - config = load_config() - cache_dir = config['resources']['common']['cache_path'] - print(config) - except Exception: - pass - if cache_dir.startswith('~/'): - cache_dir = os.path.expanduser(cache_dir) +def calc_file_sha256(file_path: str) -> str: + """计算文件的 SHA256 校验和. - return cache_dir + Args: + file_path: 文件路径 + Returns: + SHA256 哈希字符串(64位十六进制) + """ + with open(file_path, 'rb') as f: + return hashlib.sha256(f.read()).hexdigest() -CACHE_DIR = decide_cache_dir() +def verify_file_checksum( + file_path: str, md5_sum: Optional[str] = None, sha256_sum: Optional[str] = None +) -> bool: + """验证文件的 MD5 或 SHA256 校验和. -def calc_file_md5(file_path: str) -> str: - """Calculate the MD5 checksum of a file.""" - with open(file_path, 'rb') as f: - return hashlib.md5(f.read()).hexdigest() + Args: + file_path: 待验证文件路径 + md5_sum: 预期 MD5 值(与 sha256_sum 二选一) + sha256_sum: 预期 SHA256 值(与 md5_sum 二选一) + Returns: + bool: 校验是否通过 -def calc_file_sha256(file_path: str) -> str: - """Calculate the sha256 checksum of a file.""" - with open(file_path, 'rb') as f: - return hashlib.sha256(f.read()).hexdigest() + Raises: + ModelResourceException: 当未提供或同时提供两个校验和时 + """ + if not (bool(md5_sum) ^ bool(sha256_sum)): + raise ModelResourceException( + 'Exactly one of md5_sum or sha256_sum must be provided' + ) + if not os.path.exists(file_path): + return False + if md5_sum: + actual = calc_file_md5(file_path) + if actual != md5_sum: + logger.warning( + f'MD5 mismatch: expect {md5_sum[:8]}..., got {actual[:8]}...' + ) + return False + + if sha256_sum: + actual = calc_file_sha256(file_path) + if actual != sha256_sum: + logger.warning( + f'SHA256 mismatch: expect {sha256_sum[:8]}..., got {actual[:8]}...' + ) + return False + + return True class Connection: - - def __init__(self, *args, **kwargs): - pass + """下载连接的抽象基类.""" def get_size(self) -> int: + """获取文件大小(字节)""" raise NotImplementedError def read_stream(self) -> Iterable[bytes]: + """返回数据流的迭代器.""" raise NotImplementedError class S3Connection(Connection): + """S3 文件下载连接.""" def __init__(self, resource_path: str): - super().__init__(resource_path) + super().__init__() self.client = get_s3_client(resource_path) self.bucket, self.key = split_s3_path(resource_path) self.obj = self.client.get_object(Bucket=self.bucket, Key=self.key) @@ -82,13 +134,15 @@ def read_stream(self) -> Iterable[bytes]: yield chunk def __del__(self): - self.obj['Body'].close() + if hasattr(self, 'obj') and 'Body' in self.obj: + self.obj['Body'].close() class HttpConnection(Connection): + """HTTP 文件下载连接.""" def __init__(self, resource_path: str): - super().__init__(resource_path) + super().__init__() self.response = requests.get(resource_path, stream=True) self.response.raise_for_status() @@ -101,87 +155,99 @@ def read_stream(self) -> Iterable[bytes]: yield chunk def __del__(self): - self.response.close() + if hasattr(self, 'response'): + self.response.close() -def download_auto_file(resource_path: str, target_path: str, md5_sum: str = '', sha256_sum: str = '',exist_ok=True) -> str: - """Download a file from a given resource path (either an S3 path or an HTTP - URL) to a target path on the local file system. +def download_to_temp(conn: Connection, progress_bar: tqdm, download_path: str): + """下载文件到临时目录. - This function will first download the file to a temporary file, then move the temporary file to the target path after - the download is complete. A progress bar will be displayed during the download. + Args: + conn: 下载连接 + progress_bar: 进度条 + download_path: 临时文件路径 + """ + + with open(download_path, 'wb') as f: + for chunk in conn.read_stream(): + if chunk: # 防止空chunk导致进度条卡死 + f.write(chunk) + progress_bar.update(len(chunk)) - If the size of the downloaded file does not match the expected size, an exception will be raised. + +def download_auto_file_core( + resource_path: str, + target_path: str, +) -> str: + """下载文件的核心逻辑(无锁) Args: - resource_path (str): The path of the resource to download. This can be either an S3 path (e.g., "s3://bucket/key") - or an HTTP URL (e.g., "http://example.com/file"). - target_path (str): The path on the local file system where the downloaded file should be saved.\ - exist_ok (bool, optional): If False, raise an exception if the target path already exists. Defaults to True. + resource_path: 源文件路径(S3或HTTP URL) + target_path: 目标保存路径 Returns: - str: The path where the downloaded file was saved. + 下载后的文件路径 Raises: - Exception: If an error occurs during the download, or if the size of the downloaded file does not match the - expected size, or if the temporary file cannot be moved to the target path. + ModelResourceException: 下载失败或文件大小不匹配时 """ - if os.path.exists(target_path): - # if the file already exists, check if it has the correct md5 sum - if md5_sum: - file_md5 = calc_file_md5(target_path) - if file_md5 == md5_sum: - logger.info(f'File {target_path} already exists and has the correct md5 sum') - return target_path - else: - logger.info(f'File {target_path} already exists but has incorrect md5 sum.') - # if the file already exists, and not passed md5_sum - if sha256_sum: - file_sha256 = calc_file_sha256(target_path) - if file_sha256 == sha256_sum: - logger.info(f'File {target_path} already exists and has the correct sha256 sum') - return target_path - else: - logger.info(f'File {target_path} already exists but has incorrect sha256 sum.') - if not exist_ok: - # if not exist_ok, raise exception - raise Exception(f'File {target_path} already exists and exist_ok is False') - else: - os.remove(target_path) - - if is_s3_path(resource_path): - conn = S3Connection(resource_path) - else: - conn = HttpConnection(resource_path) - - total_size_in_bytes = conn.get_size() - - logger.info(f'Downloading {resource_path} to {target_path}, but first to a temporary file') - progress_bar = tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True) - with tempfile.NamedTemporaryFile() as tmp_file: - tmp_file_path = tmp_file.name - logger.info(f'Donwloading {resource_path} to {tmp_file_path}') + # 初始化连接 + conn_cls = S3Connection if is_s3_path(resource_path) else HttpConnection + conn = conn_cls(resource_path) + total_size = conn.get_size() + + # 配置进度条 + logger.info(f'Downloading {resource_path} => {target_path}') + progress = tqdm(total=total_size, unit='iB', unit_scale=True) + + # 使用临时目录确保原子性 + os.makedirs(CACHE_TMP_DIR, exist_ok=True) + with tempfile.TemporaryDirectory(dir=CACHE_TMP_DIR) as temp_dir: + download_path = os.path.join(temp_dir, 'download_file') try: + download_to_temp(conn, progress, download_path) - with open(tmp_file_path, 'wb') as f: - for chunk in conn.read_stream(): - progress_bar.update(len(chunk)) - f.write(chunk) - - local_asset_size = os.path.getsize(tmp_file_path) - if local_asset_size != total_size_in_bytes: - raise Exception(f'Downloaded asset size {local_asset_size} does not match expected size {total_size_in_bytes}') + # 验证文件大小 + actual_size = os.path.getsize(download_path) + if total_size != actual_size: + raise ModelResourceException( + f'Size mismatch: expected {total_size}, got {actual_size}' + ) - logger.info(f'Download complete. Copying {tmp_file_path} to {target_path}') + # 移动到目标路径 os.makedirs(os.path.dirname(target_path), exist_ok=True) - shutil.copy(tmp_file_path, target_path) - - if not os.path.exists(target_path): - raise Exception(f'Failed to move {tmp_file_path} to {target_path}') - except Exception as e: - logger.error(f'Error downloading {resource_path}: {e}') - raise e + os.rename(download_path, target_path) # 替换 os.rename + return target_path finally: - progress_bar.close() + progress.close() + + +def download_auto_file( + resource_path: str, + target_path: str, + md5_sum: str = '', + sha256_sum: str = '', + lock_suffix: str = '.lock', + lock_timeout: float = 60, +) -> str: + """自动下载文件(含锁机制和校验) + + Args: + resource_path: 源文件路径 + target_path: 目标保存路径 + md5_sum: 预期 MD5 值(与 sha256_sum 二选一) + sha256_sum: 预期 SHA256 值(与 md5_sum 二选一) + lock_suffix: 锁文件后缀 + lock_timeout: 锁超时时间(秒) - return target_path + Returns: + 下载后的文件路径 + + Raises: + ModelResourceException: 校验失败或下载错误时 + """ + process_func = partial(download_auto_file_core, resource_path, target_path) + verify_func = partial(verify_file_checksum, target_path, md5_sum, sha256_sum) + return process_and_verify_file_with_lock( + process_func, verify_func, target_path, lock_suffix, lock_timeout + ) diff --git a/llm_web_kit/model/resource_utils/process_with_lock.py b/llm_web_kit/model/resource_utils/process_with_lock.py new file mode 100644 index 00000000..b9c7fef3 --- /dev/null +++ b/llm_web_kit/model/resource_utils/process_with_lock.py @@ -0,0 +1,109 @@ +import os +import time +from typing import Callable + +from filelock import SoftFileLock, Timeout + +from llm_web_kit.model.resource_utils.utils import try_remove + + +def get_path_mtime(target_path: str) -> float: + """获得文件或目录的最新修改时间. 如果是文件,则直接返回 mtime. 如果是目录,则遍历目录获取最新的 mtime. + + Args: + target_path: 文件或目录路径 + + Returns: + float: 最新修改时间 + """ + if os.path.isdir(target_path): + # walk through the directory and get the latest mtime + latest_mtime = None + for root, _, files in os.walk(target_path): + for file in files: + file_path = os.path.join(root, file) + mtime = os.path.getmtime(file_path) + if latest_mtime is None or mtime > latest_mtime: + latest_mtime = mtime + return latest_mtime + else: + return os.path.getmtime(target_path) + + +def process_and_verify_file_with_lock( + process_func: Callable[[], str], # 无参数,返回目标路径 + verify_func: Callable[[], bool], # 无参数,返回验证结果 + target_path: str, + lock_suffix: str = '.lock', + timeout: float = 60, +) -> str: + # """通用处理验证框架. + + # :param process_func: 无参数的处理函数,返回最终目标路径 + # :param verify_func: 无参数的验证函数,返回布尔值 + # :param target_path: 目标路径(文件或目录) + # :param lock_suffix: 锁文件后缀 + # :param timeout: 处理超时时间(秒) + # """ + """ + 通用使用文件锁进行资源处理与资源验证的框架. + 使用文件锁保证处理函数调用时是唯一的。 + 资源校验不在锁保护范围内从而提高效率。 + 当资源校验不通过时,会删除目标文件并重新处理。 + 简易逻辑为: + 1. 检查目标是否存在且有效,如果是则直接返回目标路径 + 2. 如果目标不存在或无效,则尝试获取锁 + 3. 如果锁存在且陈旧,则删除锁和目标文件重新处理 + 4. 如果锁存在且未陈旧,则等待锁释放 + 5. 如果锁不存在,则执行处理函数 + 6. 处理完成后返回目标路径 + + Args: + process_func: 无参数的处理函数,返回最终目标路径 + verify_func: 无参数的验证函数,返回布尔值 + target_path: 目标路径(文件或目录) + lock_suffix: 锁文件后缀 + timeout: 处理超时时间(秒) + Returns: + str: 最终目标路径 + """ + lock_path = target_path + lock_suffix + + while True: + # 检查目标是否存在且有效 + if os.path.exists(target_path): + if verify_func(): + return target_path + else: + # 目标存在但验证失败 + if os.path.exists(lock_path): + now = time.time() + try: + mtime = get_path_mtime(target_path) + if now - mtime < timeout: + time.sleep(1) + continue + else: + try_remove(lock_path) + try_remove(target_path) + except FileNotFoundError: + pass + else: + try_remove(target_path) + else: + + # 尝试获取锁 + file_lock = SoftFileLock(lock_path) + try: + file_lock.acquire(timeout=1) + # 二次验证(可能其他进程已处理完成) + if os.path.exists(target_path) and verify_func(): + return target_path + # 执行处理 + return process_func() + except Timeout: + time.sleep(1) + continue + finally: + if file_lock.is_locked: + file_lock.release() diff --git a/llm_web_kit/model/resource_utils/singleton_resource_manager.py b/llm_web_kit/model/resource_utils/singleton_resource_manager.py index 24849131..84ddcc53 100644 --- a/llm_web_kit/model/resource_utils/singleton_resource_manager.py +++ b/llm_web_kit/model/resource_utils/singleton_resource_manager.py @@ -1,3 +1,6 @@ +from llm_web_kit.exception.exception import ModelResourceException + + class SingletonResourceManager: def __init__(self): @@ -8,9 +11,11 @@ def has_name(self, name): def set_resource(self, name: str, resource): if not isinstance(name, str): - raise TypeError('name should be a string') + raise ModelResourceException( + f'Name should be a string, but got {type(name)}' + ) if name in self.resources: - raise AssertionError(f'Resource {name} already exists') + raise ModelResourceException(f'Resource {name} already exists') self.resources[name] = resource @@ -18,7 +23,7 @@ def get_resource(self, name): if name in self.resources: return self.resources[name] else: - raise Exception(f'Resource {name} does not exist') + raise ModelResourceException(f'Resource {name} does not exist') def release_resource(self, name): if name in self.resources: diff --git a/llm_web_kit/model/resource_utils/unzip_ext.py b/llm_web_kit/model/resource_utils/unzip_ext.py index 36ae1ba4..6a4a8575 100644 --- a/llm_web_kit/model/resource_utils/unzip_ext.py +++ b/llm_web_kit/model/resource_utils/unzip_ext.py @@ -1,9 +1,15 @@ import os -import shutil import tempfile import zipfile +from functools import partial from typing import Optional +from llm_web_kit.exception.exception import ModelResourceException +from llm_web_kit.libs.logger import mylogger as logger +from llm_web_kit.model.resource_utils.download_assets import CACHE_TMP_DIR +from llm_web_kit.model.resource_utils.process_with_lock import \ + process_and_verify_file_with_lock + def get_unzip_dir(zip_path: str) -> str: """Get the directory to unzip the zip file to. If the zip file is. @@ -21,11 +27,40 @@ def get_unzip_dir(zip_path: str) -> str: return os.path.join(zip_dir, base_name + '_unzip') -def unzip_local_file( +def check_zip_path( + zip_path: str, target_dir: str, password: Optional[str] = None +) -> bool: + """Check if the zip file is correctly unzipped to the target directory. + + Args: + zip_path (str): The path to the zip file. + target_dir (str): The target directory. + password (Optional[str], optional): The password to the zip file. Defaults to None. + + Returns: + bool: True if the zip file is correctly unzipped to the target directory, False otherwise. + """ + if not os.path.exists(zip_path): + logger.error(f'zip file {zip_path} does not exist') + return False + with zipfile.ZipFile(zip_path, 'r') as zip_ref: + if password: + zip_ref.setpassword(password.encode()) + + zip_info_list = [info for info in zip_ref.infolist() if not info.is_dir()] + for info in zip_info_list: + file_path = os.path.join(target_dir, info.filename) + if not os.path.exists(file_path): + return False + if os.path.getsize(file_path) != info.file_size: + return False + return True + + +def unzip_local_file_core( zip_path: str, target_dir: str, password: Optional[str] = None, - exist_ok: bool = False, ) -> str: """Unzip a zip file to a target directory. @@ -33,30 +68,55 @@ def unzip_local_file( zip_path (str): The path to the zip file. target_dir (str): The directory to unzip the files to. password (Optional[str], optional): The password to the zip file. Defaults to None. - exist_ok (bool, optional): If True, overwrite the files in the target directory if it already exists. - If False, raise an exception if the target directory already exists. Defaults to False. Raises: - Exception: If the target directory already exists and exist_ok is False. + ModelResourceException: If the zip file does not exist. + ModelResourceException: If the target directory already exists. Returns: str: The path to the target directory. """ + if not os.path.exists(zip_path): + logger.error(f'zip file {zip_path} does not exist') + raise ModelResourceException(f'zip file {zip_path} does not exist') - # ensure target directory not exists if os.path.exists(target_dir): - if exist_ok: - shutil.rmtree(target_dir) - else: - raise Exception(f'Target directory {target_dir} already exists') + raise ModelResourceException(f'Target directory {target_dir} already exists') + + # make sure the parent directory exists + os.makedirs(os.path.dirname(target_dir), exist_ok=True) with zipfile.ZipFile(zip_path, 'r') as zip_ref: if password: zip_ref.setpassword(password.encode()) - with tempfile.TemporaryDirectory() as temp_dir: + with tempfile.TemporaryDirectory(dir=CACHE_TMP_DIR) as temp_dir: extract_dir = os.path.join(temp_dir, 'temp') - os.makedirs(extract_dir) + os.makedirs(extract_dir, exist_ok=True) zip_ref.extractall(extract_dir) - shutil.copytree(extract_dir, target_dir) - + os.rename(extract_dir, target_dir) return target_dir + + +def unzip_local_file( + zip_path: str, + target_dir: str, + password: Optional[str] = None, + lock_suffix: str = '.unzip.lock', + timeout: float = 60, +) -> str: + """Unzip a zip file to a target directory with a lock. + + Args: + zip_path (str): The path to the zip file. + target_dir (str): The directory to unzip the files to. + password (Optional[str], optional): The password to the zip file. Defaults to None. + timeout (float, optional): The timeout for the lock. Defaults to 60. + + Returns: + str: The path to the target directory. + """ + process_func = partial(unzip_local_file_core, zip_path, target_dir, password) + verify_func = partial(check_zip_path, zip_path, target_dir, password) + return process_and_verify_file_with_lock( + process_func, verify_func, target_dir, lock_suffix, timeout + ) diff --git a/llm_web_kit/model/resource_utils/utils.py b/llm_web_kit/model/resource_utils/utils.py new file mode 100644 index 00000000..58947ac0 --- /dev/null +++ b/llm_web_kit/model/resource_utils/utils.py @@ -0,0 +1,51 @@ +import os +import shutil + +from llm_web_kit.config.cfg_reader import load_config + + +def decide_cache_dir(): + """Get the cache directory for the web kit. The. + + Returns: + _type_: _description_ + """ + cache_dir = '~/.llm_web_kit_cache' + + if 'WEB_KIT_CACHE_DIR' in os.environ: + cache_dir = os.environ['WEB_KIT_CACHE_DIR'] + try: + config = load_config() + cache_dir = config['resources']['common']['cache_path'] + except Exception: + pass # ignore this exception + + if cache_dir.startswith('~/'): + cache_dir = os.path.expanduser(cache_dir) + + cache_tmp_dir = os.path.join(cache_dir, 'tmp') + + return cache_dir, cache_tmp_dir + + +CACHE_DIR, CACHE_TMP_DIR = decide_cache_dir() + + +def try_remove(path: str): + """Attempt to remove a file by os.remove or to remove a directory by + shutil.rmtree and ignore exceptions.""" + try: + if os.path.isdir(path): + shutil.rmtree(path) + else: + os.remove(path) + except Exception: + pass + + +def import_transformer(): + os.environ['HF_HOME'] = CACHE_DIR + os.makedirs(CACHE_DIR, exist_ok=True) + import transformers + + return transformers diff --git a/llm_web_kit/model/rule_based_safety_module.py b/llm_web_kit/model/rule_based_safety_module.py new file mode 100644 index 00000000..cb1c695d --- /dev/null +++ b/llm_web_kit/model/rule_based_safety_module.py @@ -0,0 +1,145 @@ +from typing import Any, Type + +from llm_web_kit.model.domain_safety_detector import DomainFilter +from llm_web_kit.model.source_safety_detector import SourceFilter +from llm_web_kit.model.unsafe_words_detector import UnsafeWordsFilter + + +def check_type(arg_name: str, arg_value: Any, arg_type: Type): + """check the type of the argument and raise TypeError if the type is not + matched.""" + if not isinstance(arg_value, arg_type): + # TODO change TypeError to custom exception + raise TypeError( + 'The type of {} should be {}, but got {}'.format( + arg_name, arg_type, type(arg_value) + ) + ) + + +class RuleBasedSafetyModuleDataPack: + """The data pack for the rule-based-safety module.""" + + def __init__( + self, + content_str: str, + language: str, + language_details: str, + content_style: str, + url: str, + dataset_name: str, + ): + + # the content of the dataset + check_type('content_str', content_str, str) + self.content_str = content_str + + # the language of the content + check_type('language', language, str) + self.language = language + + # the details of the language + check_type('language_details', language_details, str) + self.language_details = language_details + + # the content style of the content + check_type('content_style', content_style, str) + self.content_style = content_style + + # the url of the content + check_type('url', url, str) + self.url = url + + # the data source of the content + check_type('dataset_name', dataset_name, str) + self.dataset_name = dataset_name + + # the flag of the processed data should be remained or not + self.safety_remained = True + # the details of the clean process + self.safety_infos = {} + + def set_process_result(self, safety_remained: bool, safety_infos: dict) -> None: + """set the process result of the rule_based_safety module.""" + check_type('safety_remained', safety_remained, bool) + check_type('safety_infos', safety_infos, dict) + if safety_remained is False: + self.safety_remained = False + self.safety_infos.update(safety_infos) + + def get_output(self) -> dict: + """get the output of the data pack.""" + return { + 'safety_remained': self.safety_remained, + 'safety_infos': self.safety_infos, + } + + +class RuleBasedSafetyModule: + def __init__(self, prod: bool): + # when in production mode + # the process will return immediately when the data is not safe + self.prod = prod + self.domain_filter = DomainFilter() + self.source_filter = SourceFilter() + self.unsafe_words_filter = UnsafeWordsFilter() + + def process( + self, + content_str: str, + language: str, + language_details: str, + content_style: str, + url: str, + dataset_name: str, + ) -> dict: + """The process of the rule based safety.""" + data_pack = RuleBasedSafetyModuleDataPack( + content_str=content_str, + language=language, + language_details=language_details, + content_style=content_style, + url=url, + dataset_name=dataset_name, + ) + data_pack = self.process_core(data_pack) + return data_pack.get_output() + + def process_core( + self, data_pack: RuleBasedSafetyModuleDataPack + ) -> RuleBasedSafetyModuleDataPack: + """The core process of the rule based safety.""" + content_str = data_pack.content_str + language = data_pack.language + language_details = data_pack.language_details + content_style = data_pack.content_style + url = data_pack.url + data_source = data_pack.dataset_name + + domain_safe_remained, domain_safe_info = self.domain_filter.filter( + content_str, language, url, language_details, content_style + ) + data_pack.set_process_result(domain_safe_remained, domain_safe_info) + if not domain_safe_remained and self.prod: + return data_pack + + source_type_dict = self.source_filter.filter( + content_str, language, data_source, content_style + ) + + from_safe_source = source_type_dict['from_safe_source'] + from_domestic_source = source_type_dict['from_domestic_source'] + unsafe_words_remained, process_info = self.unsafe_words_filter.filter( + content_str, + language, + language_details, + content_style, + from_safe_source, + from_domestic_source, + ) + data_pack.set_process_result(unsafe_words_remained, process_info) + return data_pack + + def get_version(self): + version_str = '1.0.0' + return version_str diff --git a/llm_web_kit/model/source_safety_detector.py b/llm_web_kit/model/source_safety_detector.py new file mode 100644 index 00000000..7be51f09 --- /dev/null +++ b/llm_web_kit/model/source_safety_detector.py @@ -0,0 +1,13 @@ +class SourceFilter: + def __init__(self): + pass + + def filter( + self, + content_str: str, + language: str, + data_source: str, + language_details: str, + content_style: str, + ) -> dict: + return {'from_safe_source': False, 'from_domestic_source': False} diff --git a/llm_web_kit/model/unsafe_words_detector.py b/llm_web_kit/model/unsafe_words_detector.py new file mode 100644 index 00000000..28556fc5 --- /dev/null +++ b/llm_web_kit/model/unsafe_words_detector.py @@ -0,0 +1,239 @@ +import os +import time +from typing import Any, Dict, Tuple + +import ahocorasick + +from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import SafeModelException +from llm_web_kit.libs.standard_utils import json_loads +from llm_web_kit.model.basic_functions.format_check import (is_en_letter, + is_pure_en_word) +from llm_web_kit.model.resource_utils import (CACHE_DIR, download_auto_file, + singleton_resource_manager) + +xyz_language_lst = [ + 'ar', + 'cs', + 'hu', + 'sr', + 'ru', + 'ko', + 'vi', + 'th', + 'arb', + 'arb_Arab', + 'arb_Latn', + 'ces', + 'ces_Latn', + 'hun', + 'hun_Latn', + 'srp', + 'srp_Cyrl', + 'rus', + 'rus_Cyrl', + 'kor', + 'kor_Hang', + 'vie', + 'vie_Latn', + 'tha', + 'tha_Thai', +] +level_score_map = { + 'L1': 100, + 'L2': 10, + 'L3': 1, + 'L4': 0.1, +} + + +def auto_download(language='zh-en'): + resource_config = load_config()['resources'] + if language == 'zh-en': + resource_name = 'unsafe_words' + elif language == 'xyz': + resource_name = 'xyz_internal_unsafe_words' + else: + raise SafeModelException(f'Unsupported language: {language}') + language_unsafe_words_config: Dict = resource_config[resource_name] + download_path = language_unsafe_words_config['download_path'] + md5 = language_unsafe_words_config['md5'] + local_path = os.path.join(CACHE_DIR, resource_name) + unsafe_words_file_path = download_auto_file(download_path, local_path, md5) + return unsafe_words_file_path + + +def get_ac(language='zh-en'): + t1 = time.time() + unsafe_words_file_path = auto_download(language) + t2 = time.time() + print( + f'-----------------auto_download cost time: {t2-t1} , language: {language}------------------' + ) + with open(unsafe_words_file_path, 'r') as f: + lines = f.readlines() + + # sub_word: [{ + # "word": "席源评", + # "sub_words": ["席源评"], + # "type": "涉政", + # "level": "L3", + # "language": "zh", + # }, { + # ... + # }] + words = {} + for line in lines: + w = json_loads(line) + word = str(w.get('word') or '').lower() + if not word: + continue + if is_pure_en_word(word) and len(word) <= 4: + continue + + sub_words = word.split('&&&') + + w_info = { + 'word': word, + 'sub_words': set(sub_words), + 'type': w.get('type'), + 'level': w.get('level'), + 'language': w.get('language'), + 'applicable': w.get('applicable'), + 'unapplicable': w.get('unapplicable'), + } + + for sub_word in sub_words: + lst = words.get(sub_word, []) + lst.append({'sub_word': sub_word, **w_info}) + words[sub_word] = lst + + ac = ahocorasick.Automaton() + for word, w_info_lst in words.items(): + ac.add_word(word, w_info_lst) + ac.make_automaton() + return ac + + +def get_unsafe_words(ac, content: str) -> list: + content = content.lower() + + def is_word_standalone(sub_word, end_pos): + # 检查子词是否为独立英文单词(前后无其他英文字符) + if is_pure_en_word(sub_word): + prev_pos = end_pos - len(sub_word) + # 检查前一个字符是否为英文字母 + if prev_pos >= 0 and is_en_letter(content[prev_pos]): + return False + # 检查后一个字符是否为英文字母 + post_pos = end_pos + 1 + if post_pos < len(content) and is_en_letter(content[post_pos]): + return False + return True # 子词是独立的 + + all_sub_words = set() # 记录所有独立出现的子词 + all_w_info_lst = [] # 记录所有子词的详细信息 + # 遍历所有匹配的子词及其结束位置pos + for pos, w_info_lst in ac.iter(content): + for w_info in w_info_lst: + sub_word = w_info['sub_word'] + if is_word_standalone(sub_word, pos): + all_sub_words.add(sub_word) + all_w_info_lst.append(w_info) + + unsafe_words = {} + for w_info in all_w_info_lst: + # 检查该词的所有子词是否均被匹配到 + if all_sub_words.issuperset(w_info['sub_words']): + if w_info['word'] not in unsafe_words: + unsafe_words[w_info['word']] = { + 'word': w_info['word'], + 'type': w_info['type'], + 'level': w_info['level'], + 'language': w_info['language'], + 'count': 0.0, + } + unsafe_words[w_info['word']]['count'] += 1.0 / len(w_info['sub_words']) + return list(unsafe_words.values()) + + +class UnsafeWordChecker: + def __init__(self, language='zh-en') -> None: + t1 = time.time() + self.ac = get_ac(language) + t2 = time.time() + print( + f'---------------UnsafeWordChecker init time: {t2-t1} , language: {language}-----------------' + ) + + def check_unsafe_words(self, content_str: str) -> list: + unsafe_words_list = get_unsafe_words(self.ac, content=content_str) + return unsafe_words_list + + +def get_unsafe_words_checker(language='zh-en') -> UnsafeWordChecker: + if not singleton_resource_manager.has_name(language): + singleton_resource_manager.set_resource(language, UnsafeWordChecker(language)) + return singleton_resource_manager.get_resource(language) + + +def decide_content_unsafe_word_by_data_checker( + content_str: str, unsafeWordChecker: UnsafeWordChecker +) -> str: + unsafe_words_list = unsafeWordChecker.check_unsafe_words(content_str=content_str) + unsafe_word_levels = [] + for w in unsafe_words_list: + _, level, _ = w['word'], w['level'], w['count'] + # "涉政|观测|L4|带头人" + unsafe_word_levels.append(level) + + unsafe_word_levels = list(set(unsafe_word_levels)) + unsafe_word_min_level = min(unsafe_word_levels + ['NF']) + + return unsafe_word_min_level + + +class UnsafeWordsFilter: + def __init__(self,raise_not_support_language_exception: bool = False): + self.raise_not_support_language_exception = raise_not_support_language_exception + + def filter( + self, + content_str: str, + language: str, + language_details: str, + content_style: str, + from_safe_source: bool, + from_domestic_source: bool, + ) -> Tuple[bool, Dict[str, Any]]: + if language in xyz_language_lst: + language = 'xyz' + elif language in [ + 'zh', + 'en', + 'yue', + 'zho', + 'eng', + 'zho_Hans', + 'zho_Hant', + 'yue_Hant', + 'eng_Latn', + ]: + language = 'zh-en' + else: + if self.raise_not_support_language_exception: + raise SafeModelException(f'Unsupported language: {language}') + else: + return True, {'hit_unsafe_words': False} + + if from_safe_source: + return True, {'hit_unsafe_words': False} + if from_domestic_source: + unsafe_range = ('L1',) + else: + unsafe_range = ('L1', 'L2') + unsafe_word_min_level = decide_content_unsafe_word_by_data_checker( + content_str, get_unsafe_words_checker(language) + ) + hit = unsafe_word_min_level in unsafe_range + return not hit, {'hit_unsafe_words': hit} diff --git a/llm_web_kit/pipeline/extractor/html/recognizer/table.py b/llm_web_kit/pipeline/extractor/html/recognizer/table.py deleted file mode 100644 index 893f2dc0..00000000 --- a/llm_web_kit/pipeline/extractor/html/recognizer/table.py +++ /dev/null @@ -1,214 +0,0 @@ -from typing import List, Tuple - -from lxml.html import HtmlElement -from overrides import override - -from llm_web_kit.exception.exception import HtmlTableRecognizerExp -from llm_web_kit.libs.doc_element_type import DocElementType -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import ( - BaseHTMLElementRecognizer, CCTag) - - -class TableRecognizer(BaseHTMLElementRecognizer): - """解析table元素.""" - - def __init__(self): - super().__init__() - - @override - def recognize(self, - base_url: str, - main_html_lst: List[Tuple[str, str]], - raw_html: str) -> List[Tuple[str, str]]: - """父类,解析表格元素. - - Args: - base_url: str: 基础url - main_html_lst: main_html在一层一层的识别过程中,被逐步分解成不同的元素 - raw_html: 原始完整的html - - Returns: - """ - final_result = list() - for cc_html, o_html in main_html_lst: - if self.__is_contain_cc_html(cc_html): - final_result.append((cc_html, o_html)) - else: - lst = self.__extract_tables(cc_html) - final_result.extend(lst) - return final_result - - @override - def to_content_list_node(self, base_url: str, parsed_content: str, raw_html_segment: str) -> dict: - if not parsed_content: - raise HtmlTableRecognizerExp(f'table parsed_content{parsed_content}为空') - table_type, table_body = self.__get_attribute(parsed_content) - d = { - 'type': DocElementType.TABLE, - # "bbox": [], - 'raw_content': raw_html_segment, - 'content': { - 'html': table_body, - }, - } - d['content']['is_complex'] = table_type - return d - - def __is_contain_cc_html(self, cc_html: str) -> bool: - """判断html片段是否是cc标签.""" - return BaseHTMLElementRecognizer.is_cc_html(cc_html) - - def __is_table_empty(self, table) -> bool: - """检查表格是否为空(递归检查嵌套元素) - - :param table: lxml.html.HtmlElement 对象,表示一个 元素 - :return: 如果表格为空,返回 True;否则返回 False - """ - def is_element_empty(elem): - # 检查元素本身的文本内容 - if elem.text and elem.text.strip(): - return False - # 检查所有子元素 - for child in elem.iterchildren(): - # 如果是嵌套表格,递归检查表格是否为空 - if child.tag == 'table': - if not self.__is_table_empty(child): - return False - # 其他元素需要递归检查 - elif not is_element_empty(child): - return False - # 检查尾部文本(如 后的文本) - if elem.tail and elem.tail.strip(): - return False - return True - # 检查所有单元格 - for cell in table.xpath('.//td | .//th'): - # 检查单元格内容 - if cell.text and cell.text.strip(): - return False - # 递归检查子元素 - if not is_element_empty(cell): - return False - return True - - def __is_simple_table(self, tree) -> bool: - """处理table元素,判断是是否复杂:是否包含合并单元格.""" - cells = tree.xpath('.//td') + tree.xpath('.//th') - for cell in cells: - colspan_str = cell.get('colspan', '1') - rowspan_str = cell.get('rowspan', '1') - try: - colspan = int(colspan_str) - rowspan = int(rowspan_str) - except ValueError as e: - raise HtmlTableRecognizerExp(f'table的合并单元格属性值colspan:{colspan_str}或rowspan:{rowspan_str}不是有效的整数') from e - if (colspan > 1) or (rowspan > 1): - return False - return True - - def __is_table_contain_img(self, tree) -> bool: - """判断table元素是否包含图片.""" - imgs = tree.xpath('//table//img') - if len(imgs) == 0: - return True - else: - return False - - def __is_table_nested(self, tree) -> bool: - """判断table元素是否嵌套.""" - nested_tables = tree.xpath('//table//table') - if len(nested_tables) == 0: - return True - else: - return False - - def __extract_tables(self, ele: HtmlElement) -> List[str]: - """提取html中的table元素.""" - tree = self._build_html_tree(ele) - self.__do_extract_tables(tree) - new_html = self._element_to_html(tree) - lst = self.html_split_by_tags(new_html, CCTag.CC_TABLE) - return lst - - def __get_table_type(self, child: HtmlElement) -> str: - """获取table的类型.""" - empty_flag = self.__is_table_empty(child) - if empty_flag: - return 'empty' - flag = self.__is_simple_table(child) and self.__is_table_nested(child) - if flag: - table_type = 'simple' - else: - table_type = 'complex' - return table_type - - def __extract_table_element(self, ele: HtmlElement) -> str: - """提取表格的元素.""" - for item in ele.iterchildren(): - return self._element_to_html(item) - - def __simplify_td_th_content(self, elem): - """简化 ", "content": {"html": "
                                                                                  内容,仅保留文本内容.""" - if elem.tag in ['td', 'th'] and len(elem.xpath('.//table')) == 0: - result = '
                                                                                  '.join([text for text in elem.itertext() if text.strip()]) - for child in list(elem): - elem.remove(child) - elem.text = result - elif elem.tag in ['td', 'th'] and len(elem.xpath('.//table')) > 0: - for item in elem.iterchildren(): - self.__simplify_td_th_content(item) - - def __get_table_body(self, table_type, table_root): - """获取并处理table body,返回处理后的HTML字符串。""" - if table_type == 'empty': - return None - allowed_attributes = ['colspan', 'rowspan'] - for child in list(table_root.iterchildren()): - if child.tag is not None: - self.__get_table_body(table_type, child) - for ele in table_root.iter('td', 'th'): - self.__simplify_td_th_content(ele) - if len(table_root.attrib) > 0: - cleaned_attrs = {k: v for k, v in table_root.attrib.items() if k in allowed_attributes} - table_root.attrib.clear() - table_root.attrib.update(cleaned_attrs) - if table_root.text is not None: - table_root.text = table_root.text.strip() - for elem in table_root.iter(): - if elem.tail is not None: - elem.tail = elem.tail.strip() - return self._element_to_html(table_root) - - def __do_extract_tables(self, root: HtmlElement) -> None: - """递归处理所有子标签.""" - if root.tag in ['table']: - table_raw_html = self._element_to_html(root) - table_type = self.__get_table_type(root) - tail_text = root.tail - table_body = self.__get_table_body(table_type, root) - cc_element = self._build_cc_element( - CCTag.CC_TABLE, table_body, tail_text, table_type=table_type, html=table_raw_html) - self._replace_element(root, cc_element) - return - for child in root.iterchildren(): - self.__do_extract_tables(child) - - def __get_attribute(self, html: str) -> Tuple[int, str]: - """获取element的属性.""" - ele = self._build_html_tree(html) - if ele is not None and ele.tag == CCTag.CC_TABLE: - table_type = ele.attrib.get('table_type') - table_flag = self.__get_content_list_table_type(table_type) - table_body = ele.text - return table_flag, table_body - else: - raise HtmlTableRecognizerExp(f'{html}中没有cctable标签') - - def __get_content_list_table_type(self, table_type): - """complex|simple 转为True|False.""" - is_complex = False - if table_type == 'simple': - is_complex = False - elif table_type == 'complex': - is_complex = True - return is_complex diff --git a/llm_web_kit/pipeline/formatter/README.MD b/llm_web_kit/pipeline/formatter/README.MD deleted file mode 100644 index 9518b759..00000000 --- a/llm_web_kit/pipeline/formatter/README.MD +++ /dev/null @@ -1 +0,0 @@ -从不同的数据源来的数据进行一次原始数据的格式化,转化为标准的DataJson结构 diff --git a/llm_web_kit/pipeline/formatter/base.py b/llm_web_kit/pipeline/formatter/base.py deleted file mode 100644 index 6a7e9554..00000000 --- a/llm_web_kit/pipeline/formatter/base.py +++ /dev/null @@ -1,27 +0,0 @@ -from abc import ABC, abstractmethod - -from overrides import override - -from llm_web_kit.input.datajson import DataJson - - -class AbstractFormatter(ABC): - - def __init__(self, *args, **kwargs): - pass - - @abstractmethod - def format(self, data_json: DataJson) -> DataJson: - raise NotImplementedError - - -class NoOpFormatter(AbstractFormatter): - """一个什么也不做的formatter,架构占位符. - - Args: - AbstractFormatter (_type_): _description_ - """ - - @override - def format(self, data_json: DataJson) -> DataJson: - return data_json diff --git a/llm_web_kit/pipeline/formatter/ebook/__init__.py b/llm_web_kit/pipeline/formatter/ebook/__init__.py deleted file mode 100644 index 1e17167c..00000000 --- a/llm_web_kit/pipeline/formatter/ebook/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. diff --git a/llm_web_kit/pipeline/formatter/ebook/formatter.py b/llm_web_kit/pipeline/formatter/ebook/formatter.py deleted file mode 100644 index 13537a5e..00000000 --- a/llm_web_kit/pipeline/formatter/ebook/formatter.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. -"""ebook formatter rule.""" -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class EBOOKFormatter(AbstractFormatter): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @override - def format(self, data_json: DataJson) -> DataJson: - # TODO - return data_json diff --git a/llm_web_kit/pipeline/formatter/html/formatter.py b/llm_web_kit/pipeline/formatter/html/formatter.py deleted file mode 100644 index 19114d05..00000000 --- a/llm_web_kit/pipeline/formatter/html/formatter.py +++ /dev/null @@ -1,14 +0,0 @@ -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class HTMLFormatter(AbstractFormatter): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @override - def format(self, data_json: DataJson) -> DataJson: - return data_json diff --git a/llm_web_kit/pipeline/formatter/md/__init__.py b/llm_web_kit/pipeline/formatter/md/__init__.py deleted file mode 100644 index 1e17167c..00000000 --- a/llm_web_kit/pipeline/formatter/md/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. diff --git a/llm_web_kit/pipeline/formatter/md/formatter.py b/llm_web_kit/pipeline/formatter/md/formatter.py deleted file mode 100644 index 410f2ed6..00000000 --- a/llm_web_kit/pipeline/formatter/md/formatter.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. -"""md formatter rule.""" -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class MDFormatter(AbstractFormatter): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @override - def format(self, data_json: DataJson) -> DataJson: - # TODO - return data_json diff --git a/llm_web_kit/pipeline/formatter/pdf/__init__.py b/llm_web_kit/pipeline/formatter/pdf/__init__.py deleted file mode 100644 index 1e17167c..00000000 --- a/llm_web_kit/pipeline/formatter/pdf/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. diff --git a/llm_web_kit/pipeline/formatter/pdf/formatter.py b/llm_web_kit/pipeline/formatter/pdf/formatter.py deleted file mode 100644 index f22ee354..00000000 --- a/llm_web_kit/pipeline/formatter/pdf/formatter.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. -"""pdf formatter rule.""" -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class PDFFormatter(AbstractFormatter): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @override - def format(self, data_json: DataJson) -> DataJson: - return data_json diff --git a/llm_web_kit/pipeline/formatter/txt/__init__.py b/llm_web_kit/pipeline/formatter/txt/__init__.py deleted file mode 100644 index 1e17167c..00000000 --- a/llm_web_kit/pipeline/formatter/txt/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. diff --git a/llm_web_kit/pipeline/formatter/txt/formatter.py b/llm_web_kit/pipeline/formatter/txt/formatter.py deleted file mode 100644 index c014e6e8..00000000 --- a/llm_web_kit/pipeline/formatter/txt/formatter.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) Opendatalab. All rights reserved. -"""txt formatter rule.""" -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class TXTFormatter(AbstractFormatter): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @override - def format(self, data_json: DataJson) -> DataJson: - # TODO - return data_json diff --git a/llm_web_kit/pipeline/pipe_tpl/README.MD b/llm_web_kit/pipeline/pipe_tpl/README.MD deleted file mode 100644 index 7d63ebc4..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/README.MD +++ /dev/null @@ -1,3 +0,0 @@ -## 目的 - -此目录保存的是针对输入是HTML\\MD\\TXT\\PDF的标准的处理流程的配置模板文件,不参与实际生产和代码中使用,只是个标准。 diff --git a/llm_web_kit/pipeline/pipe_tpl/pipeline_ebook_tpl.jsonc b/llm_web_kit/pipeline/pipe_tpl/pipeline_ebook_tpl.jsonc deleted file mode 100644 index 24811f90..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/pipeline_ebook_tpl.jsonc +++ /dev/null @@ -1,59 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/ebook/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.ebook.formatter.EBOOKFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.pre_extractor.EBOOKFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.extractor.EBOOKFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.post_extractor.EBOOKFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/llm_web_kit/pipeline/pipe_tpl/pipeline_html_tpl.jsonc b/llm_web_kit/pipeline/pipe_tpl/pipeline_html_tpl.jsonc deleted file mode 100644 index e87dce11..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/pipeline_html_tpl.jsonc +++ /dev/null @@ -1,59 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/html/v002/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.html.formatter.HTMLFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.pre_extractor.HTMLFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.extractor.HTMLFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": false, - "python_class": "llm_web_kit.pipeline.extractor.html.post_extractor.HTMLFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/llm_web_kit/pipeline/pipe_tpl/pipeline_md_tpl.jsonc b/llm_web_kit/pipeline/pipe_tpl/pipeline_md_tpl.jsonc deleted file mode 100644 index ed14c165..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/pipeline_md_tpl.jsonc +++ /dev/null @@ -1,59 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/md/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.md.formatter.MDFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.pre_extractor.MDFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.extractor.MDFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.post_extractor.MDFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/llm_web_kit/pipeline/pipe_tpl/pipeline_pdf_tpl.jsonc b/llm_web_kit/pipeline/pipe_tpl/pipeline_pdf_tpl.jsonc deleted file mode 100644 index 77b960d8..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/pipeline_pdf_tpl.jsonc +++ /dev/null @@ -1,59 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/pdf/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": false, - "python_class": "llm_web_kit.pipeline.formatter.pdf.formatter.PDFFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "pre_extractor": [ - { - "enable": false, - "python_class": "llm_web_kit.pipeline.extractor.pdf.pre_extractor.PDFFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.pdf.extractor.PDFFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.pdf.post_extractor.PDFFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/llm_web_kit/pipeline/pipe_tpl/pipeline_txt_tpl.jsonc b/llm_web_kit/pipeline/pipe_tpl/pipeline_txt_tpl.jsonc deleted file mode 100644 index 9affad53..00000000 --- a/llm_web_kit/pipeline/pipe_tpl/pipeline_txt_tpl.jsonc +++ /dev/null @@ -1,59 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/txt/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.txt.formatter.TXTFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.pre_extractor.TXTFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.extractor.TXTFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.post_extractor.TXTFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/llm_web_kit/pipeline/pipeline.py b/llm_web_kit/pipeline/pipeline.py deleted file mode 100644 index d4d2cf32..00000000 --- a/llm_web_kit/pipeline/pipeline.py +++ /dev/null @@ -1,319 +0,0 @@ -from abc import ABC, abstractmethod -from typing import List - -from overrides import override - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.libs.class_loader import load_python_class_by_name -from llm_web_kit.libs.logger import mylogger -from llm_web_kit.pipeline.extractor.extractor import AbstractExtractor -from llm_web_kit.pipeline.extractor.post_extractor import AbstractPostExtractor -from llm_web_kit.pipeline.extractor.pre_extractor import AbstractPreExtractor -from llm_web_kit.pipeline.formatter.base import AbstractFormatter - - -class AbstractPipeline(ABC): - """抽象的pipeline类,定义了pipeline的接口规范. - - Args: - ABC (_type_): _description_ - - Raises: - NotImplementedError: _description_ - NotImplementedError: _description_ - """ - - @abstractmethod - def format(self, data_json: DataJson) -> DataJson: - raise NotImplementedError - - @abstractmethod - def extract(self, data_json: DataJson) -> DataJson: - raise NotImplementedError - - -# ########################################################## -# formatter chain -# ########################################################## -class FormatterChain: - """_summary_ - - Raises: - ValueError: _description_ - ValueError: _description_ - - Returns: - _type_: _description_ - """ - - def __init__(self, config: dict): - """_summary_ - - Args: - config (Dict): 配置文件里的整个配置字典 - """ - self.__formatter_lst: List[AbstractFormatter] = [] - - dataset_name = config.get('dataset_name', None) - is_formatter_enable = config.get('formatter_pipe', {}).get('enable', False) - - if is_formatter_enable: - formatter_config_lst = config.get('formatter_pipe', {}).get('formatter', []) - for formatter_config in formatter_config_lst: - is_enable = formatter_config.get('enable', False) - if is_enable: - formatter_class = formatter_config.get('python_class', None) - class_init_kwargs = formatter_config.get('class_init_kwargs', {}) - # 根据formatter_class指向的类名,动态加载类,然后实例化一个formatter - if formatter_class is None: - raise ValueError(f'formatter_class is None, dataset name : {dataset_name}') - formatter = load_python_class_by_name(formatter_class, config, class_init_kwargs) - self.__formatter_lst.append(formatter) - - def format(self, data: DataJson) -> DataJson: - """_summary_ - - Args: - data (DataJson): _description_ - - Returns: - DataJson: _description_ - """ - for fmt in self.__formatter_lst: - data = fmt.format(data) - - return data - - -# ########################################################## -# extractor chain -# ########################################################## -class ExtractorChain: - """_summary_ - - Raises: - ValueError: _description_ - ValueError: _description_ - - Returns: - _type_: _description_ - """ - - def __init__(self, config: dict): - """_summary_ - - Args: - config (Dict): 配置文件里的整个配置字典 - """ - self.__pre_extractor_lst: List[AbstractPreExtractor] = [] - self.__extractor_lst: List[AbstractExtractor] = [] - self.__post_extractor_lst: List[AbstractPostExtractor] = [] - - dataset_name = config.get('dataset_name', None) - is_extractor_enable = config.get('extractor_pipe', {}).get('enable', True) # 默认校验格式标准 - if not is_extractor_enable: - return - - # ######################################################### - # 记录一些配置值 - # ######################################################### - self.__validate_input_format = config.get('extractor_pipe', {}).get('validate_input_format', False) - - # ######################################################### - # 初始化pre_extractor - # ######################################################### - pre_extractor_config_lst = config.get('extractor_pipe', {}).get('pre_extractor', []) - for pre_extractor_config in pre_extractor_config_lst: - pre_extractor_class = pre_extractor_config.get('python_class', None) - class_init_kwargs = pre_extractor_config.get('class_init_kwargs', {}) - is_extractor_enable = pre_extractor_config.get('enable', False) - if is_extractor_enable: - if pre_extractor_class is None: - raise ValueError(f'pre_extractor_class is None, dataset name : {dataset_name}') - pre_extractor = load_python_class_by_name(pre_extractor_class, config, class_init_kwargs) - self.__pre_extractor_lst.append(pre_extractor) - - # ######################################################### - # 初始化extractor - # ######################################################### - extractor_config_lst = config.get('extractor_pipe', {}).get('extractor', []) - for extractor_config in extractor_config_lst: - extractor_class = extractor_config.get('python_class', None) - class_init_kwargs = extractor_config.get('class_init_kwargs', {}) - is_extractor_enable = extractor_config.get('enable', False) - if is_extractor_enable: - if extractor_class is None: - raise ValueError(f'extractor_class is None, dataset name : {dataset_name}') - extractor = load_python_class_by_name(extractor_class, config, class_init_kwargs) - self.__extractor_lst.append(extractor) - - # ######################################################### - # 初始化post_extractor - # ######################################################### - post_extractor_config_lst = config.get('extractor_pipe', {}).get('post_extractor', []) - for post_extractor_config in post_extractor_config_lst: - post_extractor_class = post_extractor_config.get('python_class', None) - class_init_kwargs = post_extractor_config.get('class_init_kwargs', {}) - is_post_extractor_enable = post_extractor_config.get('enable', False) - if is_post_extractor_enable: - if post_extractor_class is None: - raise ValueError(f'post_extractor_class is None, dataset name : {dataset_name}') - post_extractor = load_python_class_by_name(post_extractor_class, config, class_init_kwargs) - self.__post_extractor_lst.append(post_extractor) - - def extract(self, data: DataJson) -> DataJson: - """_summary_ - - Args: - data (DataJson): _description_ - - Returns: - DataJson: _description_ - """ - if self.__validate_input_format: - self.__validate_input_data_format(data) - else: - mylogger.debug('skip validate input data format') - - for ext in self.__pre_extractor_lst: - data = ext.pre_extract(data) - - for ext in self.__extractor_lst: - data = ext.extract(data) - - for ext in self.__post_extractor_lst: - data = ext.post_extract(data) - - return data - - def __validate_input_data_format(self, data_json): - """ - 根据输入的数据里的data_source_category, 根据docs/specification/input_format里定义的数据格式标准,对数据格式进行校验,如果不符合则抛出异常。 - Args: - data_json: - - Returns: - - """ - # TODO - pass - - -class Pipeline(AbstractPipeline): - """实现每个数据集一个pipeline的设计模式 所有的pipeline构成一个优先级处理链 format() ---> extract() - - ---> other... - """ - - def __init__(self, config: dict, formatter_chain: FormatterChain, extractor_chain: ExtractorChain): - """从formatter和extractor初始化一个pipeline. - - Args: - formatter_lst (List[AbstractFormatter]): _description_ - extractor_chain (ExtractorChain: _description_ - - Returns: - _type_: _description_ - """ - self.__config = config - self.__formatter_chain: FormatterChain = formatter_chain - self.__extractor_chain: ExtractorChain = extractor_chain - - @override - def format(self, data_json: DataJson) -> DataJson: - """_summary_ - - Args: - data_json (DataJson): _description_ - - Returns: - DataJson: _description_ - """ - self.__validate_format_input(data_json) - data = self.__formatter_chain.format(data_json) - return data - - @override - def extract(self, data_json: DataJson) -> DataJson: - """_summary_ - - Args: - data_json (DataJson): _description_ - Returns: - DataJson: DataJson对象 - """ - self.__validate_extract_input(data_json) - data = self.__extractor_chain.extract(data_json) - return data - - def __validate_format_input(self, data_json: DataJson): - """校验一下配置里必须满足的条件,否则抛出异常. - - Args: - config (dict): _description_ - """ - self.__validate_input_data_format(data_json) - - def __validate_extract_input(self, data_json: DataJson): - """校验一下配置里必须满足的条件,否则抛出异常. - - Args: - config (dict): _description_ - """ - self.__validate_input_data_format(data_json) - - def __validate_input_data_format(self, data_json): - """校验一下输入的data_json对象是否是DataJson对象,否则抛出异常. - - Args: - data_json (DataJson): _description_ - """ - if not isinstance(data_json, DataJson): - raise ValueError(f'input data is not DataJson object, data type is {type(data_json)}') # TODO: 这里应该抛出一个自定义的异常 - - -############################################################ -# -# Pipeline工厂方法,用于根据配置生成各种不同的pipeline -# -############################################################ - - -class PipelineSimpleFactory: - """_summary_""" - - @staticmethod - def create(config: dict) -> AbstractPipeline: - """_summary_ - - Args: - config (dict): 完整的配置文件的json字典 - - Returns: - AbstractPipeline: _description_ - - Raises: - ValueError: _description_ - """ - - # 检查一下pipeline是否启用,如果没有启用,直接返回None,这样上层在派发数据的时候找不到对应的pipeline实例,就会抛出异常,标记这条数据为异常。 - is_pipeline_enable = config.get('enable', False) - # 如果没有启用,直接返回None,为什么不可以返回一个空的pipeline呢?因为如果这个步骤被禁止就应该拒绝所有关于这个dataset的数据处理请求,让他们失败,否则不经处理通过管线是不合理的。 - if not is_pipeline_enable: - return None - # ######################################################### - # 初始化formatter - # ######################################################### - formatter_chain = FormatterChain(config) - - # ######################################################### - # 初始化extractor链 - # ######################################################### - # 根据配置生成不同的formatter和extractor,然后实例化一个pipeline - extractor_chain = ExtractorChain(config) - - # ######################################################### - # 初始化pipeline - # ######################################################### - pipe = Pipeline(config, formatter_chain, extractor_chain) - return pipe diff --git a/llm_web_kit/pipeline/pipeline_suit.py b/llm_web_kit/pipeline/pipeline_suit.py deleted file mode 100644 index e3bdd2a9..00000000 --- a/llm_web_kit/pipeline/pipeline_suit.py +++ /dev/null @@ -1,123 +0,0 @@ -from pathlib import Path - -import commentjson as json - -from llm_web_kit.exception.exception import PipeLineSuitBaseExp -from llm_web_kit.input.datajson import DataJson, DataJsonKey -from llm_web_kit.libs.logger import mylogger -from llm_web_kit.pipeline.pipeline import PipelineSimpleFactory - - -class PipelineSuit(object): - """实现数据集处理pipeline的按需实例化,并调用方法的设计模式 从数据源到数据集的处理链 例如,从文件到contentList的处理链.""" - - def __init__(self, config: str | dict): - """从参数指定的配置文件中读取配置并初始化这个流水线链. - - Args: - config (str|dict): 配置文件的路径,可以指向一个具体的jsonc文件,也可以是一个包含配置的字典对象,或者包含了很多个jsonc文件的目录 - """ - self.__pipelines = {} # "dataset_name" => pipeline - self.__config = {} # "dataset_name" => config - - config_files = [] - if isinstance(config, str): - pth = Path(config) - if not pth.exists(): - raise PipeLineSuitBaseExp(f'Config file {config} does not exist.') - if pth.is_dir(): - config_files = [str(p) for p in Path(config).rglob('*.json')] - else: - config_files.append(config) - - for config_file in config_files: - cfg = self.load_config_file(config_file_path=config_file) - dataset_name = cfg.get(DataJsonKey.DATASET_NAME, None) - if not dataset_name: - raise PipeLineSuitBaseExp(f"JSON config object must be a dictionary containing '{DataJsonKey.DATASET_NAME}'.") - else: - self.__config[dataset_name] = cfg - elif isinstance(config, dict): - dataset_name = config.get(DataJsonKey.DATASET_NAME, None) - if not dataset_name: - raise PipeLineSuitBaseExp(f"JSON config object must be a dictionary containing '{DataJsonKey.DATASET_NAME}'.") - else: - self.__config[dataset_name] = config - else: - raise PipeLineSuitBaseExp('Config must be a path to a jsonc file or a dictionary.') - - @staticmethod - def load_config_file(config_file_path: str): - """从配置文件中加载配置. - - Args: - config_file_path (str): 配置文件的路径 - """ - with open(config_file_path, 'r', encoding='utf-8') as file: - return json.load(file) - - def __getattr__(self, method_name): - """ 动态转发方法到具体和dataset_name绑定的pipeline实例上 - 例如: - pipsuit = PipelineSuit("/path/to/datasource_config.jsonc") - pipsuit.extract({"dataset_name": "zlib"}) # 此时会调用zlib的pipeline实例的extract方法 - - Args: - method_name (_type_): _description_ - - Raises: - ValueError: _description_ - ValueError: _description_ - ValueError: _description_ - AttributeError: _description_ - - Returns: - _type_: _description_ - """ - def validate_datajson(json_obj: DataJson): - """检验DataJson对象是否包含了dataset_name字段 类型是否是DataJson. - - Args: - json_obj: - - Returns: - """ - if not isinstance(json_obj, DataJson): - raise PipeLineSuitBaseExp('first arg must a instance of DataJson.') - if json_obj.get(DataJsonKey.DATASET_NAME) is None: - raise PipeLineSuitBaseExp("DataJson must containing key: 'dataset_name'.") - - # 这个方法会在访问的属性在PipelineSuit中不存在时被调用 - def method(*args, **kwargs): - if not args: - raise PipeLineSuitBaseExp("First argument must be the JSON object containing 'dataset_name'.") - - json_obj = args[0] - validate_datajson(json_obj) - - dataset_name = json_obj[DataJsonKey.DATASET_NAME] - pipeline = self._PipelineSuit__pipelines.get(dataset_name) - - if not pipeline: - try: - pipeline_config = self._PipelineSuit__config[dataset_name] - pipeline = PipelineSimpleFactory.create(pipeline_config) - self._PipelineSuit__pipelines[dataset_name] = pipeline - except KeyError: - raise PipeLineSuitBaseExp(f'Dataset name {dataset_name} is not found in the configuration file.') - except ValueError as e: - mylogger.exception(e) - raise PipeLineSuitBaseExp( - f'Failed to initialize pipeline for dataset: {dataset_name}, check pipeline config file of this dataset.') from e - except Exception as e: - mylogger.exception(e) - raise PipeLineSuitBaseExp(f'Failed to initialize pipeline for dataset: {dataset_name}') from e - - # 检查Pipeline实例是否有这个方法 - if not hasattr(pipeline, method_name): - raise PipeLineSuitBaseExp(f'The method {method_name} is not defined in the pipeline for dataset: {dataset_name}') - - # 调用Pipeline实例的方法 - return getattr(pipeline, method_name)(*args, **kwargs) - - return method diff --git a/llm_web_kit/simple.py b/llm_web_kit/simple.py new file mode 100644 index 00000000..b483b130 --- /dev/null +++ b/llm_web_kit/simple.py @@ -0,0 +1,61 @@ +"""predefined simple user functions.""" + +import uuid +from datetime import datetime + +from llm_web_kit.config.cfg_reader import load_pipe_tpl +from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory +from llm_web_kit.input.datajson import DataJson + + +class ExtractorType: + HTML = 'html' + PDF = 'pdf' + EBOOK = 'ebook' + + +class ExtractorFactory: + """factory class for extractor.""" + html_extractor = None + pdf_extractor = None + ebook_extractor = None + + @staticmethod + def get_extractor(extractor_type: ExtractorType): + if extractor_type == ExtractorType.HTML: + if ExtractorFactory.html_extractor is None: + extractor_cfg = load_pipe_tpl('html') + chain = ExtractSimpleFactory.create(extractor_cfg) + ExtractorFactory.html_extractor = chain + return ExtractorFactory.html_extractor + else: + raise ValueError(f'Invalid extractor type: {extractor_type}') + + +def __extract_html(url:str, html_content: str) -> DataJson: + extractor = ExtractorFactory.get_extractor(ExtractorType.HTML) + input_data_dict = { + 'track_id': str(uuid.uuid4()), + 'url': url, + 'html': html_content, + 'dataset_name': 'llm-web-kit-quickstart', + 'data_source_category': 'HTML', + 'file_bytes': len(html_content), + 'meta_info': {'input_datetime': datetime.now().strftime('%Y-%m-%d %H:%M:%S')} + } + d = DataJson(input_data_dict) + result = extractor.extract(d) + return result + + +def extract_html_to_md(url:str, html_content: str) -> str: + """extract html to markdown without images.""" + result = __extract_html(url, html_content) + return result.get_content_list().to_nlp_md() + + +def extract_html_to_mm_md(url:str, html_content: str) -> str: + """extract html to markdown with images.""" + + result = __extract_html(url, html_content) + return result.get_content_list().to_mm_md() diff --git a/llm_web_kit/tools/cli.py b/llm_web_kit/tools/cli.py index 03f3e686..ca8a41b4 100644 --- a/llm_web_kit/tools/cli.py +++ b/llm_web_kit/tools/cli.py @@ -5,8 +5,8 @@ import click from loguru import logger -from llm_web_kit.pipeline.extractor.html.extractor import \ - HTMLFileFormatExtractor +from llm_web_kit.extractor.html.extractor import HTMLFileFormatExtractor +from llm_web_kit.input.datajson import DataJson @click.command() @@ -56,10 +56,8 @@ def cli(input_path, output_path, debug_mode): raise ValueError('Input JSON must contain either html or path field') extractor = HTMLFileFormatExtractor({}) - data_e = extractor._do_extract(input_data) - data_e['content_list'] = data_e['content_list']._get_data() - output_json = json.dumps(data_e, ensure_ascii=False, indent=2) - + data_e = extractor.extract(DataJson(input_data)) + output_json = data_e.to_json() if output_path: output_path = Path(output_path) output_path.parent.mkdir(parents=True, exist_ok=True) diff --git a/requirements/dev.txt b/requirements/dev.txt index 7440c7b1..19923b09 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,9 @@ +flask==3.0.2 # for html_layout_classify pre-commit==3.8.0 pydantic==2.10.6 pytest==8.3.3 # coverage tools pytest-cov==6.0.0 +pytest-xdist==3.6.1 +requests==2.31.0 # for html_layout_classify +retry==0.9.2 # for html_layout_classify diff --git a/requirements/runtime.txt b/requirements/runtime.txt index 2e5d22e6..6ff7ee03 100644 --- a/requirements/runtime.txt +++ b/requirements/runtime.txt @@ -1,14 +1,20 @@ +beautifulsoup4>=4.12.2 boto3==1.28.43 cairosvg==2.7.1 click==8.1.8 commentjson==0.9.0 -fasttext==0.9.3 +fasttext-wheel==0.9.2 +filelock==3.16.1 +jieba-fast==0.53 +lightgbm==4.5.0 loguru==0.7.2 lxml>=5.3.0 +nltk==3.8.1 numpy==1.26.4 optimum==1.21.3 overrides==7.7.0 py-asciimath==0.3.0 -torch==2.3.0 +pyahocorasick==2.0.0 +torch>=2.3.0 tqdm==4.67.1 transformers==4.40.2 diff --git a/setup.py b/setup.py index f63448e3..483308a7 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import find_packages, setup -from llm_web_kit.libs.version import __version__ +# from llm_web_kit.libs.version import __version__ def parse_requirements(filename): @@ -24,10 +24,10 @@ def parse_requirements(filename): if __name__ == '__main__': setup( name='llm_web_kit', - version=__version__, # 版本号 + version='3.1.0', description='LLM Web Kit for processing web content', packages=find_packages(exclude=['tests*']), - install_requires=parse_requirements('requirements/runtime.txt'), # 项目依赖的第三方库 + install_requires=parse_requirements('requirements/runtime.txt'), extras_require={ 'dev': parse_requirements('requirements/dev.txt'), }, @@ -37,7 +37,10 @@ def parse_requirements(filename): 'console_scripts': [ 'magic-html = llm_web_kit.tools.cli:cli' ], - }, # 项目提供的可执行命令 - include_package_data=True, # 是否包含非代码文件,如数据文件、配置文件等 - zip_safe=False, # 是否使用 zip 文件格式打包,一般设为 False + }, + include_package_data=True, + package_data={ + 'llm_web_kit': ['**/*.*'], + }, + zip_safe=False, ) diff --git a/tests/llm_web_kit/cli_sdk/test_cli_sdk.py b/tests/llm_web_kit/cli_sdk/test_cli_sdk.py index 6aad22ba..f0085a69 100644 --- a/tests/llm_web_kit/cli_sdk/test_cli_sdk.py +++ b/tests/llm_web_kit/cli_sdk/test_cli_sdk.py @@ -73,11 +73,12 @@ def test_process_html_file_path(self, runner, json_with_file_path, tmp_path): def test_stdout_output(self, runner, json_with_html_path): """测试输出到标准输出.""" + print('json_with_html_path', json_with_html_path) result = runner.invoke(cli, ['-i', str(json_with_html_path)]) assert result.exit_code == 0 assert result.output - + print('result.output', result.output) output_data = json.loads(result.output) assert 'content_list' in output_data assert isinstance(output_data['content_list'], list) diff --git a/tests/llm_web_kit/config/test_cfg_reader.py b/tests/llm_web_kit/config/test_cfg_reader.py new file mode 100644 index 00000000..3dba7551 --- /dev/null +++ b/tests/llm_web_kit/config/test_cfg_reader.py @@ -0,0 +1,24 @@ + +import os +import unittest + +from llm_web_kit.config.cfg_reader import load_config +from llm_web_kit.exception.exception import ModelResourceException + + +class TestCfgReader(unittest.TestCase): + """Test cases for the config reader module.""" + def test_get_config_path(self): + """Test the get_config_path function with different scenarios.""" + # Test when environment variable is set + # Test with non-existent file path in environment variable + os.environ['LLM_WEB_KIT_CFG_PATH'] = '/path/to/nonexistent/config.jsonc' + with self.assertRaises(ModelResourceException): + load_config() + + # Test with suppress_error=True + config = load_config(suppress_error=True) + assert config == {} + + # Clean up environment variable + del os.environ['LLM_WEB_KIT_CFG_PATH'] diff --git a/tests/llm_web_kit/dataio/test_filebase.py b/tests/llm_web_kit/dataio/test_filebase.py new file mode 100644 index 00000000..43e11c86 --- /dev/null +++ b/tests/llm_web_kit/dataio/test_filebase.py @@ -0,0 +1,216 @@ +import os +import tempfile +import unittest + +from llm_web_kit.dataio.filebase import (FileBasedDataReader, + FileBasedDataWriter) + + +class TestFileBasedDataReader(unittest.TestCase): + def setUp(self): + """设置测试环境.""" + # 创建临时目录作为测试目录 + self.test_dir = tempfile.mkdtemp() + self.reader = FileBasedDataReader(parent_dir=self.test_dir) + + # 创建测试文件 + self.test_data = b'Hello, World! This is a test file.' + self.test_file = 'test.txt' + with open(os.path.join(self.test_dir, self.test_file), 'wb') as f: + f.write(self.test_data) + + def tearDown(self): + """清理测试环境.""" + # 删除临时目录及其内容 + for root, dirs, files in os.walk(self.test_dir, topdown=False): + for name in files: + os.remove(os.path.join(root, name)) + for name in dirs: + os.rmdir(os.path.join(root, name)) + os.rmdir(self.test_dir) + + def test_read_basic(self): + """测试基本的读取功能.""" + content = self.reader.read_at(self.test_file) + self.assertEqual(content, self.test_data) + + def test_read_with_offset(self): + """测试使用偏移量读取.""" + offset = 7 # 从"World"开始读取 + content = self.reader.read_at(self.test_file, offset=offset) + self.assertEqual(content, self.test_data[offset:]) + + def test_read_with_limit(self): + """测试使用限制长度读取.""" + limit = 5 # 只读取"Hello" + content = self.reader.read_at(self.test_file, limit=limit) + self.assertEqual(content, self.test_data[:limit]) + + def test_read_with_offset_and_limit(self): + """测试同时使用偏移量和限制长度.""" + offset = 7 # 从"World"开始 + limit = 5 # 只读取"World" + content = self.reader.read_at(self.test_file, offset=offset, limit=limit) + self.assertEqual(content, self.test_data[offset:offset + limit]) + + def test_read_absolute_path(self): + """测试使用绝对路径读取.""" + abs_path = os.path.join(self.test_dir, self.test_file) + content = self.reader.read_at(abs_path) + self.assertEqual(content, self.test_data) + + def test_read_empty_parent_dir(self): + """测试空父目录的情况.""" + reader = FileBasedDataReader() + abs_path = os.path.join(self.test_dir, self.test_file) + content = reader.read_at(abs_path) + self.assertEqual(content, self.test_data) + + def test_read_with_subdir(self): + """测试从子目录读取.""" + # 在子目录中创建测试文件 + subdir = 'subdir' + os.makedirs(os.path.join(self.test_dir, subdir)) + subdir_file = os.path.join(subdir, 'test.txt') + with open(os.path.join(self.test_dir, subdir_file), 'wb') as f: + f.write(self.test_data) + + # 读取子目录中的文件 + content = self.reader.read_at(subdir_file) + self.assertEqual(content, self.test_data) + + def test_read_large_file(self): + """测试读取大文件.""" + # 创建一个较大的文件(1MB) + large_data = b'0123456789' * 102400 # 1MB的数据 + large_file = 'large.txt' + with open(os.path.join(self.test_dir, large_file), 'wb') as f: + f.write(large_data) + + # 测试不同的读取方式 + # 1. 读取全部内容 + content = self.reader.read_at(large_file) + self.assertEqual(content, large_data) + + # 2. 读取部分内容 + content = self.reader.read_at(large_file, offset=1024, limit=1024) + self.assertEqual(content, large_data[1024:2048]) + + +class TestFileBasedDataWriter(unittest.TestCase): + def setUp(self): + """设置测试环境.""" + # 创建临时目录作为测试目录 + self.test_dir = tempfile.mkdtemp() + self.writer = FileBasedDataWriter(parent_dir=self.test_dir) + + def tearDown(self): + """清理测试环境.""" + # 删除临时目录及其内容 + for root, dirs, files in os.walk(self.test_dir, topdown=False): + for name in files: + os.remove(os.path.join(root, name)) + for name in dirs: + os.rmdir(os.path.join(root, name)) + os.rmdir(self.test_dir) + + def test_write_basic(self): + """测试基本的写入功能.""" + test_data = b'Hello, World!' + test_file = 'test.txt' + + # 写入数据 + self.writer.write(test_file, test_data) + + # 验证文件内容 + with open(os.path.join(self.test_dir, test_file), 'rb') as f: + content = f.read() + self.assertEqual(content, test_data) + + def test_write_with_subdir(self): + """测试写入到子目录.""" + test_data = b'Test data in subdirectory' + test_file = 'subdir/test.txt' + + # 写入数据 + self.writer.write(test_file, test_data) + + # 验证文件内容 + with open(os.path.join(self.test_dir, test_file), 'rb') as f: + content = f.read() + self.assertEqual(content, test_data) + + def test_append_write(self): + """测试追加写入功能.""" + initial_data = b'Initial content' + append_data = b'Appended content' + test_file = 'append_test.txt' + + # 先写入初始数据 + self.writer.write(test_file, initial_data) + + # 追加数据 + self.writer.append_write(test_file, append_data) + + # 验证文件内容 + with open(os.path.join(self.test_dir, test_file), 'rb') as f: + content = f.read() + self.assertEqual(content, initial_data + append_data) + + def test_append_write_new_file(self): + """测试追加写入到新文件.""" + test_data = b'Append to new file' + test_file = 'new_append.txt' + + # 追加写入到新文件 + self.writer.append_write(test_file, test_data) + + # 验证文件内容 + with open(os.path.join(self.test_dir, test_file), 'rb') as f: + content = f.read() + self.assertEqual(content, test_data) + + def test_absolute_path(self): + """测试使用绝对路径.""" + test_data = b'Absolute path test' + test_file = os.path.join(self.test_dir, 'absolute.txt') + + # 使用绝对路径写入 + self.writer.write(test_file, test_data) + + # 验证文件内容 + with open(test_file, 'rb') as f: + content = f.read() + self.assertEqual(content, test_data) + + def test_empty_parent_dir(self): + """测试空父目录的情况.""" + writer = FileBasedDataWriter() + test_data = b'Empty parent dir test' + test_file = os.path.join(self.test_dir, 'empty_parent.txt') + + # 写入数据 + writer.write(test_file, test_data) + + # 验证文件内容 + with open(test_file, 'rb') as f: + content = f.read() + self.assertEqual(content, test_data) + + def test_multiple_append(self): + """测试多次追加写入.""" + test_file = 'multiple_append.txt' + data_parts = [b'Part 1', b'Part 2', b'Part 3'] + + # 多次追加写入 + for part in data_parts: + self.writer.append_write(test_file, part) + + # 验证文件内容 + with open(os.path.join(self.test_dir, test_file), 'rb') as f: + content = f.read() + self.assertEqual(content, b''.join(data_parts)) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/exception/test_exception_data.py b/tests/llm_web_kit/exception/test_exception_data.py index 1f29dec0..b3ff1aa6 100644 --- a/tests/llm_web_kit/exception/test_exception_data.py +++ b/tests/llm_web_kit/exception/test_exception_data.py @@ -1,33 +1,355 @@ import unittest +from pathlib import Path +from unittest.mock import patch -from llm_web_kit.exception.exception import ErrorMsg, LlmWebKitBaseActException +from llm_web_kit.exception.exception import (CleanModelException, + EbookFileExtractorException, + ErrorMsg, ExtractorBaseException, + ExtractorChainBaseException, + ExtractorChainConfigException, + ExtractorChainInputException, + ExtractorInitException, + ExtractorNotFoundException, + HtmlAudioRecognizerException, + HtmlCodeRecognizerException, + HtmlExtractorException, + HtmlFileExtractorException, + HtmlImageRecognizerException, + HtmlListRecognizerException, + HtmlMathRecognizerException, + HtmlPostExtractorException, + HtmlPreExtractorException, + HtmlRecognizerException, + HtmlTableRecognizerException, + HtmlTextRecognizerException, + HtmlTitleRecognizerException, + HtmlVideoRecognizerException, + LlmWebKitBaseException, + MagicHtmlExtractorException, + ModelBaseException, + ModelInitException, + ModelInputException, + ModelOutputException, + ModelResourceException, + OtherFileExtractorException, + PdfFileExtractorException, + SafeModelException) class TestException(unittest.TestCase): - """test Exception.""" - - def process_positive_number(self, value): - """ - test case for except - Args: - n: - Returns: - """ - if value < 0: - raise LlmWebKitBaseActException('Value cannot be negative') - return value * 2 - - def test_llmwebkitbaseexp(self): - """test llm webkitexp.""" - with self.assertRaises(LlmWebKitBaseActException) as cm: - self.process_positive_number(-1) - self.assertEqual(str(cm.exception.err_code), str(1000)) - - def test_ErrorMsg(self): - """test error msg.""" - res = ErrorMsg.get_error_message(str(1000)) - assert res == 'LlmWebKitBase error' - res = ErrorMsg.get_error_message(str(2000)) - assert res == 'PipeLine input data_json error' - res = ErrorMsg.get_error_message(str(3000)) - assert res == 'pipeline suit init error' + """Test exception system.""" + + def test_error_message_retrieval(self): + """Test getting error messages from error codes.""" + test_cases = { + 10000000: 'LlmWebKit base exception', + 20000000: 'ExtractorChain base exception', + 21000000: 'ExtractorChain initialization exception', + 22000000: 'ExtractorChain configuration exception', + 23000000: 'ExtractorChain input exception', + 24000000: 'Extractor not found exception', + 31000000: 'HTML file extractor exception', + 31020000: 'HTML pre-extractor exception', + 31030000: 'HTML extractor exception', + 31031100: 'HTML math recognizer exception', + 31031200: 'HTML code recognizer exception', + 99999999: 'unknown error code 99999999', + } + + for code, expected_message in test_cases.items(): + with self.subTest(code=code): + self.assertEqual(ErrorMsg.get_error_message(code), expected_message) + + def test_error_code_retrieval(self): + """Test getting error codes from module and error names.""" + test_cases = [ + ('ExtractorChain', 'ExtractorChainInitException', 21000000), + ('Extractor', 'PdfFileExtractorException', 32000000), + ('HtmlRecognizer', 'HtmlMathRecognizerException', 31031100), + ] + + for module, error_name, expected_code in test_cases: + with self.subTest(module=module, error_name=error_name): + self.assertEqual(ErrorMsg.get_error_code(module, error_name), expected_code) + + def test_invalid_error_code_retrieval(self): + """Test getting error code with invalid module/error name.""" + with self.assertRaises(ValueError): + ErrorMsg.get_error_code('InvalidModule', 'InvalidException') + + def test_base_exceptions(self): + """Test base exception classes.""" + # Test LlmWebKitBaseException + base_exc = LlmWebKitBaseException() + self.assertIsNotNone(base_exc.error_code) + self.assertIsNotNone(base_exc.message) + + # Test with custom error code + custom_exc = LlmWebKitBaseException(error_code=99999999) + self.assertEqual(custom_exc.error_code, 99999999) + self.assertEqual(custom_exc.message, 'unknown error code 99999999') + + # Test ExtractorChainBaseException + chain_exc = ExtractorChainBaseException() + self.assertEqual(chain_exc.error_code, 20000000) + + # Test with custom error code + custom_chain_exc = ExtractorChainBaseException(error_code=99999999) + self.assertEqual(custom_chain_exc.error_code, 99999999) + + # Test default error code + extractor_base = ExtractorBaseException() + self.assertEqual(extractor_base.error_code, 30000000) + + # Test with custom error code + custom_extractor_base = ExtractorBaseException(error_code=99999999) + self.assertEqual(custom_extractor_base.error_code, 99999999) + + # Test with custom message + extractor_base_with_msg = ExtractorBaseException(custom_message='Base error') + self.assertEqual(extractor_base_with_msg.error_code, 30000000) + self.assertEqual(extractor_base_with_msg.custom_message, 'Base error') + + def test_concrete_exceptions(self): + """Test concrete exception instances.""" + test_cases = [ + (ExtractorInitException('Test message'), 21000000), + (ExtractorChainInputException('Invalid input'), 23000000), + (ExtractorChainConfigException('Config error'), 22000000), + (ExtractorNotFoundException('Not found'), 24000000), + (HtmlPreExtractorException('Pre-process error'), 31020000), + (HtmlMathRecognizerException('Math parse error'), 31031100), + ] + + for exc, expected_code in test_cases: + with self.subTest(exception_type=type(exc).__name__): + self.assertEqual(exc.error_code, expected_code) + self.assertIsNotNone(exc.message) + self.assertIsNotNone(exc.custom_message) + + def test_exception_str_format(self): + """Test string representation of exceptions.""" + exc = ExtractorInitException('Custom message') + str_repr = str(exc) + + # Check string format + self.assertRegex(str_repr, r'.+\.py: \d+#\d+#.+#.+') + self.assertIn(str(exc.error_code), str_repr) + self.assertIn(exc.message, str_repr) + self.assertIn(exc.custom_message, str_repr) + + def test_html_recognizer_exceptions(self): + """Test all HTML recognizer exceptions.""" + test_cases = [ + (HtmlRecognizerException(), 31031000), + (HtmlMathRecognizerException('Math error'), 31031100), + (HtmlCodeRecognizerException('Code error'), 31031200), + (HtmlTableRecognizerException('Table error'), 31031300), + (HtmlImageRecognizerException('Image error'), 31031400), + (HtmlListRecognizerException('List error'), 31031500), + (HtmlAudioRecognizerException('Audio error'), 31031600), + (HtmlVideoRecognizerException('Video error'), 31031700), + (HtmlTitleRecognizerException('Title error'), 31031800), + (HtmlTextRecognizerException('Text error'), 31031900), + ] + + for exc, expected_code in test_cases: + with self.subTest(exception_type=type(exc).__name__): + self.assertEqual(exc.error_code, expected_code) + self.assertIsNotNone(exc.message) + + def test_file_extractor_exceptions(self): + """Test file extractor exceptions.""" + test_cases = [ + (HtmlFileExtractorException(), 31000000), + (PdfFileExtractorException(), 32000000), + (EbookFileExtractorException(), 33000000), + (OtherFileExtractorException(), 34000000), + (MagicHtmlExtractorException(), 31010000), + (HtmlPreExtractorException(), 31020000), + (HtmlExtractorException(), 31030000), + (HtmlPostExtractorException(), 31040000), + ] + + for exc, expected_code in test_cases: + with self.subTest(exception_type=type(exc).__name__): + self.assertEqual(exc.error_code, expected_code) + self.assertIsNotNone(exc.message) + + def test_clean_module_exceptions(self): + """Test clean module exceptions.""" + test_cases = [ + (ModelBaseException(), 40000000), + (ModelResourceException(), 41000000), + (ModelInitException(), 42000000), + (ModelInputException(), 43000000), + (ModelOutputException(), 44000000), + (SafeModelException(), 45000000), + (CleanModelException(), 46000000), + ] + + for exc, expected_code in test_cases: + with self.subTest(exception_type=type(exc).__name__): + self.assertEqual(exc.error_code, expected_code) + self.assertIsNotNone(exc.message) + + def test_error_code_uniqueness(self): + """Test that all error codes in the JSON file are unique.""" + error_codes = set() + json_path = Path(__file__).parent.parent.parent.parent / 'llm_web_kit/exception/exception.jsonc' + + with open(json_path, 'r', encoding='utf-8') as f: + import commentjson as json + + data = json.load(f) + + for module in data.values(): + for error_info in module.values(): + code = error_info['code'] + self.assertNotIn(code, error_codes, f'Duplicate error code found: {code}') + error_codes.add(code) + + def test_exception_dataset_name(self): + """Test dataset_name handling in exceptions.""" + # Test base exception initialization with empty dataset_name + base_exc = LlmWebKitBaseException('test message') + self.assertEqual(base_exc.dataset_name, '') + + # Test custom dataset_name assignment + base_exc.dataset_name = 'test_dataset' + self.assertEqual(base_exc.dataset_name, 'test_dataset') + + # Test dataset_name in child exceptions + chain_exc = ExtractorChainBaseException('chain error') + self.assertEqual(chain_exc.dataset_name, '') + chain_exc.dataset_name = 'chain_dataset' + self.assertEqual(chain_exc.dataset_name, 'chain_dataset') + + # Test dataset_name in concrete exceptions + test_cases = [ + (ExtractorInitException('init error'), 'init_dataset'), + (ExtractorChainInputException('input error'), 'input_dataset'), + (ExtractorChainConfigException('config error'), 'config_dataset'), + (ExtractorNotFoundException('not found error'), 'notfound_dataset'), + ] + + for exc, dataset_name in test_cases: + with self.subTest(exception_type=type(exc).__name__): + self.assertEqual(exc.dataset_name, '') + exc.dataset_name = dataset_name + self.assertEqual(exc.dataset_name, dataset_name) + + # Test exception handling when DataJson has no dataset_name + from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory + from llm_web_kit.input.datajson import DataJson + + config = { + 'extractor_pipe': { + 'pre_extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatFilterPreExtractor', + 'class_init_kwargs': {}, + } + ], + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {}, + } + ], + } + } + chain = ExtractSimpleFactory.create(config) + + input_data = DataJson( + { + 'dataset_name': 'test_dataset', + } + ) + + with self.assertRaises(ExtractorChainBaseException) as context: + chain.extract(input_data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + + @patch('llm_web_kit.libs.class_loader.load_python_class_by_name') + def test_extractor_chain_exceptions(self, mock_load_class): + """测试 ExtractorChain 中的异常处理机制.""" + from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory + from llm_web_kit.input.datajson import DataJson + + # 定义简单的 Mock 类,每个类负责抛出一种异常 + class KeyErrorExtractor: + def __init__(self, config, **kwargs): + pass + + def extract(self, data): + raise KeyError('test_key') + + class BaseExceptionExtractor: + def __init__(self, config, **kwargs): + pass + + def extract(self, data): + raise LlmWebKitBaseException('Base exception') + + class ChainExceptionExtractor: + def __init__(self, config, **kwargs): + pass + + def extract(self, data): + raise ExtractorChainBaseException('Chain exception') + + class GeneralExceptionExtractor: + def __init__(self, config, **kwargs): + pass + + def extract(self, data): + raise ValueError('General exception') + + mock_load_class.return_value = KeyErrorExtractor(None) + + # 基础配置 + config = { + 'extractor_pipe': { + 'pre_extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatFilterPreExtractor', + 'class_init_kwargs': {}, + } + ], + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {}, + } + ], + } + } + + # 测试数据 + data = DataJson({'dataset_name': 'test_dataset'}) + + # 测试场景 1: KeyError -> ExtractorChainInputException + chain = ExtractSimpleFactory.create(config) + with self.assertRaises(ExtractorChainInputException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + self.assertIn('Required field missing', str(context.exception)) + + # 测试场景 2: LlmWebKitBaseException 传递 + mock_load_class.return_value = BaseExceptionExtractor(None) + chain = ExtractSimpleFactory.create(config) + with self.assertRaises(LlmWebKitBaseException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + + # 测试场景 3: ExtractorChainBaseException 传递 + mock_load_class.return_value = ChainExceptionExtractor(None) + chain = ExtractSimpleFactory.create(config) + with self.assertRaises(ExtractorChainBaseException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/1.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/1.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/1.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/1.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/code_mix_in_list.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/code_mix_in_list.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/code_mix_in_list.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/code_mix_in_list.html diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/content_list_empty.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/content_list_empty.html new file mode 100644 index 00000000..30fce8a5 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/content_list_empty.html @@ -0,0 +1 @@ +北京大平层,奶油风浪漫到家!
                                                                                  \n-
                                                                                  \n设计案例: 168m轻法式大平层设计
                                                                                  \n项目地址:北京市大兴区
                                                                                  \n-
                                                                                  \n在这个168平方米的轻法式大平层设计中,全屋以浪漫的奶白色为主色调,搭配驼色,营造出空间的呼吸感。客餐厅一体设计,地面铺满柔光砖,裸调的高级质感扑面而来。
                                                                                  \n
                                                                                  \n转角沙发与充满设计感的小型休闲椅相搭配,家居格调瞬间提升。威尼斯棕大理石餐桌的加入,为餐厅增添了更多的层次感和温柔。坐在沙发上,可以一览餐厅和厨房的空间,增加了互动性。
                                                                                  \n
                                                                                  \n墙面采用暖白色,搭配一些局部的原木色护墙板,让空间的视觉效果更加灵动,不易产生疲劳感。阳光透过窗户洒进室内,整个空间显得格外治愈,喜欢这种明亮纯粹的家。 diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/csdn_lineno.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/csdn_lineno.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/csdn_lineno.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/csdn_lineno.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/doc.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/doc.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/doc.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/doc.html diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/exclude_complex_table.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/exclude_complex_table.html new file mode 100644 index 00000000..e0b1d2bb --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/exclude_complex_table.html @@ -0,0 +1,528 @@ +\n\n \n \n\n \n\n\n + +\n \n WikiProcessors – smartmontools\n \n + \n + \n + \n + \n + \n + \n + \n + \n + \n + \n + \n + \n \n + \n + \n + \n + \n + \n + \n + + \n + \n + + \n +\n + +\n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\n\n +
                                                                                  \n
                                                                                  \n

                                                                                  smartmontools +

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \n \n \n
                                                                                  \n
                                                                                  \n + \n
                                                                                  \n \n
                                                                                  \n \n
                                                                                  \n

                                                                                  Context Navigation

                                                                                  \n \n +
                                                                                  \n +
                                                                                  \n
                                                                                  \n
                                                                                  \n \n + + + \n + + \n
                                                                                  Version 3 (modified by trac, 5 years ago)\n (diff)
                                                                                  \n

                                                                                  \n--\n

                                                                                  \n\n
                                                                                  \n
                                                                                  \n \n
                                                                                  +

                                                                                  Wiki Processors

                                                                                  \n

                                                                                  \nProcessors are WikiMacros designed to provide alternative markup + formats for the Wiki engine. Processors + can be thought of as macro functions to process user-edited text. \n

                                                                                  \n

                                                                                  + \nWiki processors can be used in any Wiki text throughout Trac, such as:\n

                                                                                  \n +

                                                                                  Using Processors

                                                                                  \n

                                                                                  \nTo use a processor on a block of + text, first delimit the lines using a Wiki code block:\n

                                                                                  \n +
                                                                                  {{{\nThe lines\nthat should be processed...\n}}}\n
                                                                                  +

                                                                                  \nImmediately after the {{{ or on the line just below, add #! + followed by the processor name:\n

                                                                                  \n +
                                                                                  {{{\n#!processorname\nThe lines\nthat should be processed...\n}}}\n
                                                                                  +

                                                                                  \nThis is the \"shebang\" notation, familiar to most UNIX users.\n

                                                                                  \n

                                                                                  \nBesides + their content, some Wiki processors can also accept parameters, which are then + given as key=value pairs after the processor name and on the same line. If + value has to contain space, as it's often the case for the style parameter, + a quoted string can be used (key=\"value with space\").\n

                                                                                  \n

                                                                                  \nAs some + processors are meant to process Wiki markup, it's quite possible to nest + processor blocks.\nYou may want to indent the content of nested blocks for increased + clarity, this extra indentation will be ignored when processing the content.\n

                                                                                  \n

                                                                                  Examples

                                                                                  \n\n + + + + + + + \n + + + \n + + \n + + + \n + + \n + + +
                                                                                  Wiki Markup Display \n
                                                                                  +
                                                                                  \n

                                                                                  \nExample 1: Inserting raw + HTML\n

                                                                                  \n
                                                                                  \n +
                                                                                  +
                                                                                  {{{\n#!html\n<h1 style=\"color: grey\">This is raw HTML</h1>\n}}}\n
                                                                                  +
                                                                                  +

                                                                                  This is raw HTML

                                                                                  \n +
                                                                                  +
                                                                                  \n

                                                                                  \nExample 2: Highlighted + Python code in a <div> block with custom style\n

                                                                                  \n +
                                                                                  \n +
                                                                                  +
                                                                                  {{{#!div style=\"background: #ffd; border: 3px ridge\"\n\nThis is an example of embedded \"code\" block:\n\n  {{{\n  #!python\n  def hello():\n      return \"world\"\n  }}}\n\n}}}\n
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  \nThis is an example of embedded \"code\" block:\n

                                                                                  \n
                                                                                  +
                                                                                  +
                                                                                  def hello():\n    return \"world\"\n
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  \n

                                                                                  \nExample 3: Searching tickets + from a wiki page, by keywords.\n

                                                                                  \n
                                                                                  \n +
                                                                                  +
                                                                                  {{{\n#!html\n<form action=\"/query\" method=\"get\"><div>\n<input type=\"text\" name=\"keywords\" value=\"~\" size=\"30\"/>\n<input type=\"submit\" value=\"Search by Keywords\"/>\n<!-- To control what fields show up use hidden fields\n<input type=\"hidden\" name=\"col\" value=\"id\"/>\n<input type=\"hidden\" name=\"col\" value=\"summary\"/>\n<input type=\"hidden\" name=\"col\" value=\"status\"/>\n<input type=\"hidden\" name=\"col\" value=\"milestone\"/>\n<input type=\"hidden\" name=\"col\" value=\"version\"/>\n<input type=\"hidden\" name=\"col\" value=\"owner\"/>\n<input type=\"hidden\" name=\"col\" value=\"priority\"/>\n<input type=\"hidden\" name=\"col\" value=\"component\"/>\n-->\n</div></form>\n}}}\n
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  \n\n\n
                                                                                  +
                                                                                  \n +
                                                                                  \n

                                                                                  Available Processors

                                                                                  \n

                                                                                  \nThe following + processors are included in the Trac distribution:\n

                                                                                  \n\n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  #!default Present the text verbatim in a preformatted text block. This is the same as + specifying no processor name (and no #!). \n
                                                                                  #!comment Do not process the text in this section, i.e. contents exist only in the plain + text - not in the rendered page. \n
                                                                                  #!rtl Introduce a Right-To-Left block with appropriate CSS direction and styling. + (since 0.12.2) \n
                                                                                  \n
                                                                                  HTML + related \n
                                                                                  #!html Insert custom HTML in a wiki page. \n
                                                                                  #!htmlcomment Insert an HTML comment in a wiki page. (since 0.12) \n
                                                                                  Note that #!html blocks have to be self-contained, i.e. + you can't start an HTML element in one block and close it later in a second + block. Use the following processors for achieving a similar effect. \n
                                                                                  #!div Wrap wiki content inside a <div> element. \n
                                                                                  #!span Wrap wiki content inside a <span> element. \n
                                                                                  #!td Wrap wiki content inside a <td> element. (since 0.12) \n
                                                                                  #!th Wrap wiki content inside a <th> element. (since 0.12) \n
                                                                                  #!tr Can optionally be used for wrapping #!td and #!th + blocks, either for specifying row attributes or better visual grouping. + (since 0.12) \n
                                                                                  #!table Can optionally be used for wrapping #!tr, #!td and + #!th blocks, for specifying table attributes. One current + limitation however is that tables cannot be nested. (since 0.12) \n +
                                                                                  See WikiHtml for example usage + and more details about these processors. \n
                                                                                  \n
                                                                                  Other Markups \n
                                                                                  #!rst Trac support for Restructured Text. See WikiRestructuredText. \n
                                                                                  #!textile Supported if Textile is installed. See a Textile reference. \n
                                                                                  \n
                                                                                  Code Highlighting Support + \n
                                                                                  #!c
                                                                                  #!cpp + (C++)
                                                                                  #!python
                                                                                  + #!perl
                                                                                  #!ruby +
                                                                                  #!php
                                                                                  + #!asp
                                                                                  #!java +
                                                                                  #!js (Javascript)
                                                                                  + #!sql
                                                                                  #!xml + (XML or HTML)
                                                                                  #!sh (Bourne/Bash shell) +
                                                                                  etc.
                                                                                  Trac includes processors to provide inline syntax highlighting for source code + in various languages.

                                                                                  Trac relies on Pygments for + syntax coloring.

                                                                                  See TracSyntaxColoring for information + about which languages are supported and how to enable support for more + languages. \n
                                                                                  \n
                                                                                  \n

                                                                                  \nSince 1.1.2 the default, coding highlighting and MIME-type processors support + the argument lineno for adding line numbering to the code block. When a + value is specified, as in lineno=3, the numbering will start at the + specified value. When used in combination with the lineno argument, the + marks argument is also supported for highlighting lines. A single line + number, set of line numbers and range of line numbers are allowed. For example, + marks=3, marks=3-6, marks=3,5,7 and + marks=3-5,7 are all allowed. The specified values are relative to the + numbered lines, so if lineno=2 is specified to start the line numbering at + 2, marks=2 will result in the first line being highlighted.\n

                                                                                  \n

                                                                                  + \nUsing the MIME type as processor, it is possible to syntax-highlight the same + languages that are supported when browsing source code.\n

                                                                                  \n\n + + + + + + + + + + + +
                                                                                  MIME Type Processors \n
                                                                                  +

                                                                                  \nSome examples:\n

                                                                                  \n +
                                                                                  {{{#!text/html\n<h1>text</h1>\n}}}\n
                                                                                  +
                                                                                  +

                                                                                  \nThe result will be syntax highlighted HTML code:\n

                                                                                  \n
                                                                                  +
                                                                                  +
                                                                                  <h1>text</h1>\n
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  \nThe same is valid for all other mime types + supported.\n

                                                                                  \n +
                                                                                  +
                                                                                  {{{#!diff\n--- Version 55\n+++ Version 56\n@@ -115,8 +115,9 @@\n     name='TracHelloWorld', version='1.0',\n     packages=find_packages(exclude=['*.tests*']),\n-    entry_points = \"\"\"\n-        [trac.plugins]\n-        helloworld = myplugs.helloworld\n-    \"\"\",\n+    entry_points = {\n+        'trac.plugins': [\n+            'helloworld = myplugs.helloworld',\n+        ],\n+    },\n )\n}}}\n
                                                                                  +
                                                                                  +

                                                                                  \n#!diff has a particularly nice renderer:\n +

                                                                                  \n
                                                                                  +
                                                                                  \n\n
                                                                                    \n \n
                                                                                  • \n

                                                                                    \n + Version\n \n

                                                                                    \n \n \n \n \n \n + \n + + + + \n \n \n \n \n \n + \n \n \n \n \n \n + \n\n \n \n \n \n \n \n + + \n \n \n \n + + \n \n \n \n \n + + \n \n \n \n + \n \n\n \n\n \n\n \n\n \n + + \n \n\n \n\n \n\n \n\n \n \n \n \n \n + \n + + \n + + \n + + \n + + \n + + + \n + + \n + + \n + \n \n \n + + \n + + \n + + \n + + \n + + \n + + \n + + \n + + \n + + \n + \n \n \n \n\n \n + + \n \n\n \n \n \n \n \n \n + + \n \n \n \n + \n \n\n \n\n \n\n \n\n \n \n \n \n +
                                                                                    \n \n \n \n \n \n  
                                                                                    115115    + name='TracHelloWorld', version='1.0', +
                                                                                    116116    + packages=find_packages(exclude=['*.tests*']), +
                                                                                    117     entry_points = + \"\"\"
                                                                                    118         + [trac.plugins]
                                                                                    119         + helloworld = myplugs.helloworld
                                                                                    120     \"\"\", +
                                                                                     117    entry_points = + {
                                                                                     118        + 'trac.plugins': [
                                                                                     119        +     'helloworld = + myplugs.helloworld',
                                                                                     120        + ],
                                                                                     121    },
                                                                                    121 + 122)
                                                                                    \n
                                                                                  • \n \n
                                                                                  \n\n
                                                                                  +
                                                                                  +
                                                                                  \n

                                                                                  \nLine numbers can be added to code blocks and lines can be highlighted + (since 1.1.2).\n

                                                                                  \n +
                                                                                  {{{#!python lineno=3 marks=3,9-10,16\ndef expand_markup(stream, ctxt=None):\n    \"\"\"A Genshi stream filter for expanding `genshi.Markup` events.\n\n    Note: Expansion may not be possible if the fragment is badly\n    formed, or partial.\n    \"\"\"\n    for event in stream:\n        if isinstance(event[1], Markup):\n            try:\n                for subevent in HTML(event[1]):\n                    yield subevent\n            except ParseError:\n                yield event\n        else:\n            yield event\n}}}\n
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  Line 
                                                                                  3def expand_markup(stream, ctxt=None):
                                                                                  4    \"\"\"A Genshi stream filter for expanding + `genshi.Markup` events.
                                                                                  5
                                                                                  6    Note: Expansion may not be possible if the + fragment is badly
                                                                                  7    formed, or partial.
                                                                                  8    \"\"\"
                                                                                  9    for event in stream:
                                                                                  10        if isinstance(event[1], Markup):
                                                                                  11            try:
                                                                                  12                for subevent in HTML(event[1]):
                                                                                  13                    yield subevent
                                                                                  14            except ParseError:
                                                                                  15                yield event
                                                                                  16        else:
                                                                                  17            yield event
                                                                                  +
                                                                                  +

                                                                                  \nFor more processor macros developed and/or contributed by users, visit the Trac + Hacks community site.\n

                                                                                  \n

                                                                                  \nDeveloping processors is no different from + Wiki macros. In fact, they work the same way, only the usage syntax differs. See WikiMacros#DevelopingCustomMacros + for more information.\n

                                                                                  \n +
                                                                                  \n

                                                                                  \nSee also: WikiMacros, WikiHtml, WikiRestructuredText, TracSyntaxColoring, WikiFormatting, TracGuide\n

                                                                                  \n +
                                                                                  \n \n \n \n \n
                                                                                  \n \n\n
                                                                                  \n + + \n + + \n
                                                                                  \n

                                                                                  Download in other formats:

                                                                                  \n \n
                                                                                  \n +
                                                                                  \n
                                                                                  +
                                                                                  \n \"Trac\n

                                                                                  Powered by Trac + 1.2.5
                                                                                  \n By Edgewall Software. +

                                                                                  \n

                                                                                  Validator: Check + XHTML

                                                                                  \n +
                                                                                  \n\n\t\t
                                                                                  \n
                                                                                  \n\n
                                                                                  \n +\n + + \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/image_without_path.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/image_without_path.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/image_without_path.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/image_without_path.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/legato_docs.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/legato_docs.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/legato_docs.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/legato_docs.html diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/list_nest_three.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/list_nest_three.html new file mode 100644 index 00000000..018a85ab --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/list_nest_three.html @@ -0,0 +1,30 @@ + +
                                                                                  +
                                                                                  外层列表项
                                                                                  +
                                                                                  + +
                                                                                    +
                                                                                  1. 第二层列表项 + +
                                                                                      +
                                                                                    • 第三层列表项 1
                                                                                    • +
                                                                                    • 第三层列表项 2
                                                                                    • +
                                                                                    +
                                                                                  2. +
                                                                                  3. 第二层其他项
                                                                                  4. +
                                                                                  +
                                                                                  + +
                                                                                  外层另一个列表项
                                                                                  +
                                                                                  + + +
                                                                                1. 第二层菜单项 + + +
                                                                                2. 第三层目录项
                                                                                3. +
                                                                                  +
                                                                                4. +
                                                                                  +
                                                                                  +
                                                                                  \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/list_parse.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/list_parse.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/list_parse.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/list_parse.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/math.stackoverflow.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/math.stackoverflow.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/math.stackoverflow.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/math.stackoverflow.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/matlab_code.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/matlab_code.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/matlab_code.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/matlab_code.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/oracle_doc.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/oracle_doc.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/oracle_doc.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/oracle_doc.html diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/para_is_short.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/para_is_short.html new file mode 100644 index 00000000..894aa06c --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/para_is_short.html @@ -0,0 +1,1092 @@ + + + + + + + + + + + + + + + + + +A plain blog about politics: Acceptable + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Monday, December 5, 2011

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + +

                                                                                  +Acceptable +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +Since I've commented quite a bit on polling that as I read it shows Mitt Romney broadly acceptable to most Republican voters, I definitely need to say something about a new poll today that doesn't exactly show that. Gallup got around to actually asking that very question ("Please tell me if you would find ___ to be an acceptable  nominee for president from the Republican Party, or not"). The answers mostly showed the weakness of the field, with six of the eight candidates asked about scoring well below 50% acceptable. But the clear most-acceptable candidate is Newt Gingrich, with a 62/34 acceptable/not acceptable ratio, while Romney is only at 54/41.
                                                                                  +
                                                                                  +There are a lot of ways to look at this, but overall it's certainly a piece of evidence that the anti-Romney vote is, well, around 40%. Only a piece of evidence, however. It's not clear how hard these kinds of numbers might be, in either direction. On the positive side, it seems unlikely that Newt would remain over 60% once more Republicans know that he's been lobbying for Freddie Mac, and supported the individual mandate on health insurance, and made a climate change ad with Nancy Pelosi, and all the rest of it. On the other hand, it's certainly possible that the "unacceptable" answers are awful soft, for Romney and for everyone else.
                                                                                  +
                                                                                  +In particular, as Greg pointed out, Romney only does three points better on the "acceptable" scale with moderate Republicans than does Newt. This isn't the first indication we've had that Romney isn't doing as well with moderate Republicans as one would think he should be. Whether that means he has some room to grow or that he's just not an appealing politician is, I guess, still entirely up in the air at this point.
                                                                                  +
                                                                                  +I still overall don't see a low cap on Romney's support, but of course all the evidence counts, and polling in general begins to be a little more important the closer we get to actual voting. I'll be continuing to track anything more we get on this one. +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +

                                                                                  14 comments:

                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  1. Kudos for adapting your views a bit as new data comes in. I think you've been a step behind on the Newt thing because your analysis is so thoroughly grounded in political theory, data and historical precedent. Sure, that stuff still matters, but in the 2012 Republican primaries, all bets are off. The GOP and their base went nuts after Obama won, pretending otherwise only weakens your analysis.

                                                                                    ReplyDelete
                                                                                  2. "I still overall don't see a low cap on Romney's support..."

                                                                                    .

                                                                                    Well as I say, there's no gettin' through to the terminally perceptive. ;-)

                                                                                    And you're right, polling does begin to be a little more important the closer we get to actual voting. But there are exceptions to that rule, for candidates who are well known. Unknowns can see late movement, as they become known (Huntsman?). But knowns, a month out from an election, are captive to events and fortune, because everybody already knows who they are. That's why you see Romney panicking the last few days. He's captive to events and fortune, things like NEWT FRICKING GINGRICH stealing his nomination, if you can believe it.

                                                                                    Willard is a known, and the ABR bloc is at 40% and counting. Heck, that's even bigger than I thought it was.

                                                                                    ReplyDelete
                                                                                  3. Anon 4:41, I don't understand -- Mitt Romney's numbers can't move much because he's so well known to the GOP base, while Gingrich's numbers have shifted by tens and dozens of points (depending on the question)? Romney is so much better known than Newt Gingrich that such widespread openness to reevaluating Gingrich doesn't suggest potential willingness to reevaluate Romney? How could that possibly be the case?

                                                                                    ReplyDelete
                                                                                  4. Of course the numbers are soft, but I would think they are soft more in the sense that once there is a Republican nominee and everyone starts singing from the same hymnal (see Rushbo's rhetorical gymnastics to support nominee McCain), anyone they nominate will eventually be "acceptable" to 80-90% of Republican primary voters.

                                                                                    This is how Alan Keyes got 27% as a carpet bagging IL Senate candidate when the original nominee was forced out by a sex scandal. Even the most ridiculous campaign by a painfully flawed replacement candidate gets 27% of Republicans. It's an utter floor.

                                                                                    However, that doesn't happen until there is an actual nominee - and it's during the upcoming primaries where these numbers still matter to some degree. Even still, second place?

                                                                                    THIS IS EXCELLENT NEWS FOR MITT ROMNEY!

                                                                                    ReplyDelete
                                                                                  5. You'd have to reference my discussion of the other day, but I'll repeat a bit of it here. Gingrich's movement is directly related to the existence of the ABR bloc. The fact that the ABR crowd is circling back around to Gingrich, the guy that they summarily rejected at the commencement of their long slog through the ABR process, is the final proof of the magnitude of the ABR bloc (and I doubt there's anybody but the terminally perceptive who need that final proof, but here it is.).

                                                                                    These people are coming back around, full circle, to NEWT FRICKING GINGRICH. Anybody who doesn't get the significance of this must be trapped in an impenetrable bubble somewhere.

                                                                                    Gingrich is one of the events and fortunes that poor Willard has to accept, because he can't move the needle on his own. And Gingrich is just fortunate that Willard is out there. This all has nothing to do with him... he's just like Willard in that way. That's why I'm expecting him to step on a landmine soon, like he does. He thinks he's standing on 3rd because he hit a triple.

                                                                                    ReplyDelete
                                                                                  6. You lefties should really be paying me for this commentary. ;-)

                                                                                    ReplyDelete
                                                                                  7. Who do we make the check out to?

                                                                                    ReplyDelete
                                                                                  8. Did they conduct this poll earlier in the race, when Cain/Bachmann/Perry/Trump/et al were in the lead? If they did, it might give us a clue how useful this metric really is. If, for example, Trump was considered broadly "acceptable" by GOP voters at the time of his surge, that would be evidence that this metric is pretty meaningless.

                                                                                    ReplyDelete
                                                                                  9. Unfortunately, no; it's the first time they've run it this cycle. And I spent some time looking for their 2008 results, but couldn't find them, so either I'm lame with the Google or they didn't do it. Both are possible!

                                                                                    ReplyDelete
                                                                                  10. Jon:

                                                                                    http://www.gallup.com/poll/23764/nearly-republicans-would-find-mccain-acceptable-nominee.aspx

                                                                                    http://www.gallup.com/poll/28162/giuliani-would-acceptable-nominee-nearly-republicans.aspx

                                                                                    ReplyDelete
                                                                                  11. Wow. I am officially way lame.

                                                                                    As far as substance...Romney is about where McCain was. FWIW. And in the earlier one, Newt was 43/52, again FWIW.

                                                                                    I'll stick with what I said: it's evidence, but it's not anything close to definitive. As usual, the most important thing to remember is that most GOP voters have paid very little attention to the nomination race so far, and there's good reason to believe that their opinions are very soft.

                                                                                    ReplyDelete
                                                                                  12. Yeah, but the McCain one was from mid-2006. Notice that Obama isn't even mentioned, yet several candidates who never entered the race (Condi, Jeb, Newt, Al Gore, etc.) are included in the poll. I'd take a poll from a few weeks before the primary just a tad more seriously than one from eighteen months before.

                                                                                    (I got to these results simply by typing site:gallup.com "acceptable nominees" into Google. It turned up nine hits, most of them references to the recent poll.)

                                                                                    ReplyDelete
                                                                                  13. Anon 5:39: okay, so it's a more complicated claim: they know Newt and know they don't like him, but he looks very different against just Romney than he does against the whole field. In the former context, he's more than acceptable. Is that right?

                                                                                    So, that makes sense and is perfectly plausible, but isn't it circular? "We can tell ABR supporters won't change their minds about Romney, because they'll even change their minds about Gingrich rather than support Romney" partially relies on the claim it's trying to prove. This could certainly still be right -- not all circles are vicious -- but I had thought you were making the stronger claim that this provided independent evidence for the hardness of the hard core of ABR.

                                                                                    So, this goes back to your epistemological critique, which is both broad and deep (it's pretty hard to get out of a self-reinforcing bubble!). Liberals can't correctly interpret the information they're -- we're -- given, so it's pointless to try to reason by offering isolated facts, even in response to purely empirical questions (like this one about the strength of the ABR bloc). Rather, the best strategy is to present a coherent alternative worldview, so that we can see our bubble, and that there's something outside it.

                                                                                    -- Am I understanding you correctly? If so, that's a very deep puzzle about justification, and probably the best case one could make for gadfly behavior. Hm...

                                                                                    ReplyDelete
                                                                                  14. Not too mucb interested in what you formulate as conclusion, classicist. You can go on ahead with that, alone.

                                                                                    We have what we have, right in front of our faces. We don't have what we don't have in front of our faces. The only question is, are we paying attention to what we have, and what we don't have, right in front of our faces?

                                                                                    The terminally perceptive aren't, for sure. ;-)

                                                                                    ReplyDelete
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  +

                                                                                  + + + + +
                                                                                  +

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/pre_code_mixed.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/pre_code_mixed.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/pre_code_mixed.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/pre_code_mixed.html diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_entity.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_entity.html new file mode 100644 index 00000000..f9b20e14 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_entity.html @@ -0,0 +1,1689 @@ + + + + + trigonometry - Perfectly centered break of a perfectly aligned pool ball rack - Mathematics Stack Exchange + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  +

                                                                                  +your communities

                                                                                  + +
                                                                                  + + + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + Take the 2-minute tour + × + +
                                                                                  + Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required. +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 20 + down vote + + favorite +
                                                                                  7
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  This question is asked on Physics SE and MathOverflow by somebody else. I don't think it belongs there, but rather here (for reasons given there in my comments there; edit: now self-removed).

                                                                                  + +
                                                                                  +

                                                                                  Imagine the beginning of a game of pool, you have 16 balls, 15 of them in a triangle <| and 1 of them being the cue ball off to the left of that triangle. Imagine that the rack (the 15 balls in a triangle) has every ball equally spaced apart and all balls touching all other appropriate balls. All balls are perfectly round. Now, imagine that the cue ball was hit along a friction free surface on the center axis for this triangle O-------<| and hits the far left ball of the rack dead center on this axis. How would the rack react? I would imagine this would be an extension of newtons cradle and only the 5 balls on the far end would move at all. But in what way would they move? Thanks

                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  share|improve this question
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + Great question, spectacular answer! A related, earlier question is here: ∃ a shot in ideal pocket billiards? + –  + Joseph O'Rourke + Feb 6 '14 at 18:24 +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  +

                                                                                  + 2 Answers + 2 +

                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 61 + down vote + + + + accepted +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  This is it.  The perfectly centered billiards break.  Behold.

                                                                                  + +

                                                                                  enter image description here

                                                                                  + +

                                                                                  Setup

                                                                                  + +

                                                                                  This break was computed in Mathematica using a numerical differential equations model. Here are a few details of the model:

                                                                                  + +
                                                                                    +
                                                                                  • All balls are assumed to be perfectly elastic and almost perfectly rigid.
                                                                                  • +
                                                                                  • Each ball has a mass of 1 unit and a radius of 1 unit.
                                                                                  • +
                                                                                  • The cue ball has a initial speed of 10 units/sec.
                                                                                  • +
                                                                                  • The force between two balls is given by the formula +$$ +F \;=\; \begin{cases}0 & \text{if }d \geq 2, \\ 10^{11}(2-d)^{3/2} & \text{if }d<2,\end{cases} +$$ +where $d$ is the distance between the centers of the balls. Note that the balls overlap if and only if $d < 2$. The power of $3/2$ was suggested by Yoav Kallus on Math Overflow, because it follows Hertz's theory of non-adhesive elastic contact.
                                                                                  • +
                                                                                  + +

                                                                                  The initial speed of the cue ball is immaterial -- slowing down the cue ball is the same as slowing down time. The force constant $10^{11}$ has no real effect as long as it's large enough, although it does change the speed at which the initial collision takes place.

                                                                                  + +

                                                                                  The Collision

                                                                                  + +

                                                                                  For this model, the entire collision takes place in the first 0.2 milliseconds, and none of the balls overlap by more than 0.025% of their radius during the collision. (These figures are model dependent -- real billiard balls may collide faster or slower than this.)

                                                                                  + +

                                                                                  The following animation shows the forces between the balls during the collision, with the force proportional to the area of each yellow circle. Note that the balls themselves hardly move at all during the collision, although they do accelerate quite a bit.

                                                                                  + +

                                                                                  enter image description here

                                                                                  + +

                                                                                  The Trajectories

                                                                                  + +

                                                                                  The following picture shows the trajectories of the billiard balls after the collision.

                                                                                  + +

                                                                                  enter image description here

                                                                                  + +

                                                                                  After the collision, some of the balls are travelling considerably faster than others. The following table shows the magnitude and direction of the velocity of each ball, where $0^\circ$ indicates straight up.

                                                                                  + +

                                                                                  $$ +\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|} +\hline +\text{ball} & \text{cue} & 1 & 2,3 & 4,6 & 5 & 7,10 & 8,9 & 11,15 & 12,14 & 13 \\ +\hline +\text{angle} & 0^\circ & 0^\circ & 40.1^\circ & 43.9^\circ & 0^\circ & 82.1^\circ & 161.8^\circ & 150^\circ & 178.2^\circ & 180^\circ \\ +\hline +\text{speed} & 1.79 & 1.20 & 1.57 & 1.42 & 0.12 & 1.31 & 0.25 & 5.60 & 2.57 & 2.63 \\ +\hline +\end{array} +$$

                                                                                  + +

                                                                                  For comparison, remember that the initial speed of the cue ball was 10 units/sec. Thus, balls 11 and 15 (the back corner balls) shoot out at more than half the speed of the original cue ball, whereas ball 5 slowly rolls upwards at less than 2% of the speed of the original cue ball.

                                                                                  + +

                                                                                  By the way, if you add up the sum of the squares of the speeds of the balls, you get 100, since kinetic energy is conserved.

                                                                                  + +

                                                                                  Linear and Quadratic Responses

                                                                                  + +

                                                                                  The results of this model are dependent on the power of $3/2$ in the force law -- other force laws give other breaks. For example, we could try making the force a linear function of the overlap distance (in analogy with springs and Hooke's law), or we could try making the force proportional to the square of the overlap distance. The results are noticeably different

                                                                                  + +

                                                                                  enter image description here enter image description here

                                                                                  + +

                                                                                  Stiff Response

                                                                                  + +

                                                                                  Glenn the Udderboat points out that "stiff" balls might be best approximated by a force response involving a higher power of the distance (although this isn't the usual definition of "stiffness"). Unfortunately, the calculation time in Mathematica becomes longer when the power is increased, presumably because it needs to use a smaller time step to be sufficiently accurate.

                                                                                  + +

                                                                                  Here is a simulation involving a reasonably "stiff" force law +$$ +F \;=\; \begin{cases}0 & \text{if }d \geq 2, \\ 10^{54}(2-d)^{10} & \text{if }d<2.\end{cases} +$$

                                                                                  + +

                                                                                  enter image description here

                                                                                  + +

                                                                                  As you can see, the result is very similar to my first answer below. This seems like good evidence that the behavior discussed in my first answer is indeed the limiting behavior in the case where the stiffness goes to infinity.

                                                                                  + +

                                                                                  As you might expect, most of the energy in this case is transferred very quickly at the beginning of the collision. Almost all of the energy has moves to the back corner balls in the first 0.02 milliseconds. Here is an animation of the forces:

                                                                                  + +

                                                                                  enter image description here

                                                                                  + +

                                                                                  After that, the corner balls and the cue ball shoot out, and the remaining balls continue to collide gently for the next millisecond or so.

                                                                                  + +

                                                                                  While the simplicity of this behavior is appealing, I would guess that "real" billard balls do not have such a stiff force response. Of the models listed here, the intial Hertz-based model is probably the most accurate. Qualitatively, it certainly seems the closest to an "actual" break.

                                                                                  + +

                                                                                  Note: I have now posted the Mathematica code on my web page.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + Very nice answer! However, it looks like the angles in the table are inconsistent with the rest of your post: the angle of ball $5$ should be $0^\circ$, and those of $7,10$ and $8,9$ should probably be swapped. It may be worthwhile to double-check the speeds, too. + –  + Rahul + Feb 1 '14 at 9:02 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Also, can you check if changing the form of the force function, say from $2-d$ to $(2-d)^2$, changes the results? + –  + Rahul + Feb 1 '14 at 9:03 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @JimBelk, If changing parameters asymmetrically doesn't change the qualitative behavior of the solution, then it is usually safe. + –  + achille hui + Feb 1 '14 at 9:57 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 2 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Aha! What this shows is that the original question is indeed underdetermined. One cannot simply treat rigid balls as the limiting case as stiffness approaches infinity, for it matters how the limit is approached (in the sense of what the shape of the stiffness function is). + –  + Rahul + Feb 1 '14 at 11:01 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + But that's not what "stiffness" means. In Hooke's law $F = k x$, the stiffness is the constant $k$ in front of the $x$, not the unwritten exponent $1$ over the $x$. Infinite stiffness in this billiards-balls scenario would be a force that rises to infinity as soon as $d<2$. All of your examples are extremely stiff; the only difference is how they approach the infinite step function. + –  + Rahul + Feb 1 '14 at 21:11 + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 5 + down vote + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Note: I'm not deleting this answer since the discussion in the comments is interesting, but I no longer believe that this answer is physically realistic. See my other answer for a much better model.

                                                                                  + +

                                                                                  Later Note: Well, it turns out that this model is realistic if you put certain hypothesis on the bouncing of the balls! See the "stiff response" section in my other answer.

                                                                                  + +

                                                                                  The two balls in the back corners shoot away along rays parallel to the two sides of the triangle. Here is a picture showing the forces, with each force vector emanating from the point of contact.

                                                                                  + +

                                                                                  enter image description here

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Yeah, but ball 2 (balls are numbered 0-15) touches ball 4 and 5. I think the impact will be allocated to 4 and 5 by a ratio of 2:1. (Although there might be a $\pi$ involved.) + –  + Glen The Udderboat + Jan 31 '14 at 20:58 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + @GlenTheUdderboat I don't think so. The force on ball 2 is entirely from its contact with ball 1. This is a normal force, so it has to be perpendicular to the tangent planes, i.e. parallel to the vector from the center of ball 1 to the center of ball 2. The forces that ball 2 exerts on balls 4 and 5 have to add up to the negative of this force vector, only the only such linear combination is that ball 5 exerts no force on ball 2, and ball 4 exerts the same magnitude of force on ball 2 as ball 1 did. + –  + Jim Belk + Jan 31 '14 at 21:06 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + You almost got me there. :) But you didn't account for ball 2 to move left(ish) after impact. Note that, because of the instantaneity, there is no physical causality or intuition to assume. + –  + Glen The Udderboat + Jan 31 '14 at 21:13 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 2 + +   +
                                                                                  +
                                                                                  +
                                                                                  + I don't believe your explanation in the comment, Jim. Note that your argument applies just as well to the situation where only balls 1, 2, 4, and 5 were present; your argument would conclude that ball 5 doesn't move at all, which is false. + –  + Greg Martin + Jan 31 '14 at 21:32 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @GlenTheUdderboat Part of what's going on with this problem is that conservation of momentum and energy do not completely determine the solution. The solution I gave certainly obeys both, because it's what would happen if the six balls not along the sides were removed. + –  + Jim Belk + Jan 31 '14 at 22:35 +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + + +

                                                                                  Your Answer

                                                                                  + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                   
                                                                                  + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + discard + +

                                                                                  +By posting your answer, you agree to the privacy policy and terms of service.

                                                                                  +
                                                                                  +
                                                                                  + + + +

                                                                                  +Not the answer you're looking for? Browse other questions tagged or ask your own question.

                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_math_p.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_math_p.html new file mode 100644 index 00000000..257b0bac --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_math_p.html @@ -0,0 +1,2326 @@ + + + + +factoring - Is $83^{27} +1 $ a prime number? - Mathematics Stack Exchange + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required. +
                                                                                  +
                                                                                  + Sign up +
                                                                                  +
                                                                                  + Here's how it works: +
                                                                                    +
                                                                                  1. Anybody can ask a question +
                                                                                  2. +
                                                                                  3. Anybody can answer +
                                                                                  4. +
                                                                                  5. The best answers are voted up and rise to the top +
                                                                                  6. +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 17 + down vote + + favorite +
                                                                                  5
                                                                                  + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime?

                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this question
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 4 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Someone else points out that it can't be prime because it's even. That's probably the quickest way. May answer shows how to factor it (so it can't be prime) by a method that would work just as well if it had been $84^{27}+1$. + – Michael Hardy + Aug 2 '13 at 22:11 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 5 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Wolfram Alpha says that $83^{27}+1= 2^2×3^4×7×109×757×2269×9613×49339×2208799×14685985270709080390792801$. Perhaps it's fun to try to prove that 3 and 7 are factors. + – lhf + Aug 2 '13 at 22:13 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 51 + +   +
                                                                                  +
                                                                                  +
                                                                                  + The number is EVEN! + – Ali + Aug 3 '13 at 5:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @Joseph It is "well-known" and not too hard to prove that if $b^n+1$ is prime for some integer $b>1$ then $n$ has to be zero or a power of two. And 27 is neither zero nor a power of two. Search for Generalized Fermat Prime to find a proof, or do the proof yourself. + – Jeppe Stig Nielsen + Aug 3 '13 at 6:48 + +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 5 + +   +
                                                                                  +
                                                                                  +
                                                                                  + If it is for a test, the simple answer is that you don't have the tools to prove it prime, so it must be composite. + – Ross Millikan + Aug 3 '13 at 13:04 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  +

                                                                                  + 9 Answers + 9 +

                                                                                  + +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 68 + down vote + + + + accepted + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  $83$ is odd, so is any power of $83$. Hence $83^{27}+1$ is even, but the only even prime number is $2$ and this number is not $2$.

                                                                                  + +

                                                                                  More generally, if $a,k\in\mathbb N$ and $k$ is odd, then +$$a^k+1\equiv (-1)^k+1\equiv 0\pmod{a+1}$$ +So $a+1\mid a^k+1$. In this case this yields $84=2^2\cdot 3\cdot 7$ as divisor.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Your last statement can also be seen by geometric series: $(1+x+\cdots+x^{k-1})(x-1)=x^k-1$. For $k$ odd, substitute $x=-a$ and cancel out the minuses signs on each side to get the factor $(a+1)$ on the left with $a^k+1$ on the right. + – nayrb + Aug 2 '13 at 21:52 + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 2 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Let's ask WolframAlpha!

                                                                                  + +
                                                                                  +

                                                                                  PrimeQ[83^27 + 1]

                                                                                  +
                                                                                  + + + +
                                                                                  +

                                                                                  is $6\,532\,937\,361\,590\,551\,025\,727\,805\,459\,013\,652\,074\,798\,022\,177\,030\,828$ a prime number?

                                                                                  + +

                                                                                  $83^{27} + 1$ is not a prime number

                                                                                  + +

                                                                                  $2^2 \times 3^4 \times 7 \times 109 \times 757 \times 2269 \times 9613 \times 49339 \times 2208799 \times 14685985270709080390792801 \space\text{(14 prime factors, 10 distinct)}$

                                                                                  +
                                                                                  + +
                                                                                  + +

                                                                                  However, using basic knowledge that an odd times an odd is always an odd ($3 \times 3 = 9$), we see that $83$ (an odd number) raised to any power is an odd number. Then we add one to it and get an even number.

                                                                                  + +

                                                                                  Being even (and obviously not equal to $2$), the definition of a prime tells us that the number is not prime because it is divisible by $2$ (my words):

                                                                                  + +
                                                                                  +

                                                                                  prime (noun):

                                                                                  + +
                                                                                    +
                                                                                  1. Any natural number, greater than $1$, that, when divided by any natural number, greater than $1$, other than itself or $1$ does not result in a natural number.
                                                                                  2. +
                                                                                  3. Any "natural number greater than $1$ that has no positive divisors other than $1$ and itself." (Wikipedia article "prime number")
                                                                                  4. +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 2 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  well it is divisible by $84$ and in general $\forall a,m\in\mathbb {N}$ we have +$(a+1)\mid (a^{2m+1}+1)$ So....

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 4 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  The only prime numbers of the form $a^x+b^x$, occur when $x$ is a power of two. This does not guarantee a prime, but if $x$ is not a power of $2$, then the number has algebraic factors.

                                                                                  + +

                                                                                  In practice, there is an algebraic divisor of $a^n-b^n$, for each $m$ that divides $n$. For the equation $a^n+b^n$, one would look for divisors of $2n$ that don't divide $n$. Inthe question we have $n=27$, so the divisors of 54 that don't divide 27. That is, 2, 6, 18 and 54. For powers of 2, there is only one number that divides $2n$ but not $n$.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + Extebded answer to include this. + – wendy.krieger + Aug 3 '13 at 23:44 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 13 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  We have a chain of divisibilities, based on the fact that $(a-b)\mid(a^n-b^n)$, +$$ +83^1-(-1)^1\mid83^3-(-1)^3\mid83^9-(-1)^9\mid83^{27}-(-1)^{27}=83^{27}+1 +$$ +Using this chain, we get, using $a^3-b^3=(a-b)(a^2+ab+b^2)$, +$$ +\begin{align} +83^{27}+1 +&=\frac{83^{27}+1}{83^9+1}\times\frac{83^9+1}{83^3+1}\times\frac{83^3+1}{83^1+1}\times\left(83^1+1\right)\\ +&=\left(83^{18}-83^9+1\right)\times\left(83^6-83^3+1\right)\times\left(83^2-83^1+1\right)\times\left(83^1+1\right)\\[9pt] +&=34946659039493167203883141969862007\times326939801583\times6807\times84 +\end{align} +$$ +Thus, $83^{27}+1$ is not prime.

                                                                                  + +

                                                                                  Note: none of these factors are guaranteed to be prime, just factors.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 3 + +   +
                                                                                  +
                                                                                  +
                                                                                  + Would the downvoter care to comment? + – robjohn + Aug 3 '13 at 19:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + I like it. Some might say overly rigorous for a simple problem, but helps demonstrate some deeper thinking than just noticing that it would be even. +1 + – Asimov + Sep 28 '14 at 18:32 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 40 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  $$ +83^{27} + 1 = \Big(83^9\Big)^3 + 1 = a^3+b^3 = (a+b)(a^2-ab+b^2) = \Big(83^9+1\Big)\Big((83^9)^2-83^9+1\Big). +$$

                                                                                  + +

                                                                                  So, no, it's not prime.

                                                                                  + +

                                                                                  PS (added later): Some point out that it's obviously an even number, so it's not prime. But what I do above would work just as well if it were $84$ rather than $83$.

                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 23 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Note that $83\equiv -1\pmod{84}$. Thus $83^{27}+1\equiv 0\pmod{84}$.

                                                                                  + +

                                                                                  It follows that our number is divisible by all the divisors of $84$.

                                                                                  + +

                                                                                  It is also non-prime in other ways. For let $x=83^3$. Then our number is $x^9+1$, so is divisible by $x+1$. Similarly, we could let $y=83^9$, and conclude that our number is divisible by $y+1$.

                                                                                  + +

                                                                                  Seriously non-prime!

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 14 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  It is obviously not prime. $83$ is odd, therefore $83^{27}$ is odd, hence $83^{27}+1$ is even and not prime.

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + + up vote + 46 + down vote + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Well, it is an even number, so...

                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  share|cite|improve this answer
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + 1 + +   +
                                                                                  +
                                                                                  +
                                                                                  + I downvoted your answer on the basis that it doesn't provide the reason behind why it is even. For example, it doesn't say that since $83$ is odd, so the powers of it must also be odd and thus, odd + 1 must be even. + – Jeel Shah + Nov 5 '13 at 3:37 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 6 + +   +
                                                                                  +
                                                                                  +
                                                                                  + @gekkostate: (1) If you think all the answers must provide all the reasons behind them then you're going to downvote a lot around here, as many participants, probably most of the serious ones, don't think like you do. (2) The question is at a level that requires as trivial to know that powers of odd numbers are odd, and sum of odd numbers is even, so to add that to the answer seems trivial after it's been remarked that the number is odd (and thus the OP begins to think "why?" and he completes the answer by himself). Think of this, perhaps you'll realize you rush too much to do downvote... + – DonAntonio + Nov 5 '13 at 4:51 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + 2 + +   +
                                                                                  +
                                                                                  +
                                                                                  + I clearly failed to see the intent behind your answer but I still feel that it lacks any reasoning whatsoever. Your answer is equivalent to the highest upvoted comment so maybe, that should have been enough? Also, I hardly ever downvote questions/answers (ratio of up to down is 77/5) so I didn't really rush into this (clearly, I use downvotes sparingly). I don't want to make this into something that it is not. Let's leave this at the fact that we have a difference of opinions on answers. + – Jeel Shah + Nov 5 '13 at 14:03 +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  +    + +   +
                                                                                  +
                                                                                  +
                                                                                  + I just love the precise nature of this answer. +1 + – Asimov + Sep 28 '14 at 18:31 +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  protected by Community Jun 21 '14 at 19:06 +

                                                                                  +

                                                                                  +Thank you for your interest in this question. +Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site. +

                                                                                  +Would you like to answer one of these unanswered questions instead? +

                                                                                  +
                                                                                  + + + + + +

                                                                                  +Not the answer you're looking for? Browse other questions tagged or ask your own question.

                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_table_math.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_table_math.html new file mode 100644 index 00000000..16d7b72e --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_include_table_math.html @@ -0,0 +1,90 @@ + + + + + + + + +
                                                                                  + + + + + + + + + + + + + +
                                                                                  +

                                                                                  STEM 综合展示表

                                                                                  +
                                                                                  +

                                                                                  基础公式:

                                                                                  + E = mc^2 + + + + + + + + + + + +
                                                                                  单位换算: + 1 \text{km} = 10^3 \text{m} + + + + + + + + + + + + +
                                                                                  长度质量时间
                                                                                  1m=10^2cm1kg=10^3g1h=3600s
                                                                                  +
                                                                                  运动学: + v = \frac{dx}{dt} + a = \frac{dv}{dt} +
                                                                                  +
                                                                                  +

                                                                                  编程示例:

                                                                                  +
                                                                                  console.log("Hello World")
                                                                                  + + + + + + + +
                                                                                  +

                                                                                  Python:

                                                                                  +
                                                                                  print(sum(range(1,n+1)))
                                                                                  +
                                                                                  +

                                                                                  对应公式:

                                                                                  + \sum_{i=1}^{n} i = \frac{n(n+1)}{2} + + + + + + + + + + + +
                                                                                  等差数列等比数列
                                                                                  S_n = \frac{n(a_1+a_n)}{2}S_n = a_1\frac{1-r^n}{1-r}
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_involve_inline_code.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_involve_inline_code.html new file mode 100644 index 00000000..0f927ee3 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_involve_inline_code.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  FunctionDescriptionExample
                                                                                  print()Prints a message to the console.print("Hello, World!")
                                                                                  len()Returns the length of an object.len([1, 2, 3])
                                                                                  range()Generates a sequence of numbers.range(1, 10)
                                                                                  diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_tail_text.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_tail_text.html new file mode 100644 index 00000000..4044b9a3 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/table_tail_text.html @@ -0,0 +1,367 @@ + + + + + + + + + 🇷🇺 | Show hub - Big-Empty DC++ Dchublist NMDC and ADCs хабов Huburi Хаблист + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +

                                                                                  Big-Empty

                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  Client + https://dchublists.com/clients/FlylinkDC_x64.exe +
                                                                                  StatusOnline | ID: 975
                                                                                  URL + https://dchublists.com/hub-975 +
                                                                                  Address +NMDC | dchub://big-empty.ru +
                                                                                  ASN + Style-Com LLC +
                                                                                  Failover + Not available +
                                                                                  NameBig-Empty
                                                                                  Topic + Not available +
                                                                                  Description + Хаб сети Arbital +
                                                                                  Category + Not available +
                                                                                  Software + PtokaX 0.5.3.0 +
                                                                                  Owner + Self +
                                                                                  Location + RU Russian Federation +
                                                                                  Users + 25 | 55 +
                                                                                  Clones0
                                                                                  Share + 4.39 TB | 90.60 TB +
                                                                                  User limit10000
                                                                                  Share limit0 B
                                                                                  Slot limit0
                                                                                  Hub limit0
                                                                                  Reliability99.04%
                                                                                  Checked + 2024-12-09 03:06:01 | 2021-05-07 +
                                                                                  Votes + +0 | -0 | 0 +
                                                                                  Website + Not available +
                                                                                  Email + Not available +
                                                                                  +
                                                                                  +

                                                                                  Online users

                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  NickShare
                                                                                  Darv1n1.55 TB
                                                                                  PtokaX0 B
                                                                                  1975628.43 GB
                                                                                  AndyDesktop0 B
                                                                                  Crtyujgfdscvgjh35.54 GB
                                                                                  DaymarixZZZ37.57 GB
                                                                                  Evgeniy_D76.15 GB
                                                                                  Julia0 B
                                                                                  Kuzma0 B
                                                                                  Larsenv0 B
                                                                                  MAXMED8888888864.10 GB
                                                                                  Qwerty_ytr_R724237.12 GB
                                                                                  SERG_B149.65 GB
                                                                                  Sculli156.92 GB
                                                                                  Shareaza404613.03 GB
                                                                                  Soliton14.68 GB
                                                                                  Sweaborg794.15 GB
                                                                                  Viktor138283179.23 GB
                                                                                  [fly]Fire_dU3JR10.72 GB
                                                                                  [fly]Monkey_QGrFy124.72 GB
                                                                                  [fly]Moon_x7m61.13 GB
                                                                                  kotbaun0 B
                                                                                  marcs3.62 GB
                                                                                  minili59.30 GB
                                                                                  y2b4k698df328djei3261.82 GB
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  Comments

                                                                                  + There are no comments for this hub, you can write one here. +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + Skip to main content +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + Asked + +
                                                                                  +
                                                                                  + Modified + 3 years, 9 months ago +
                                                                                  +
                                                                                  + Viewed + 234 times +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +2
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + $\begingroup$ +
                                                                                  + +

                                                                                  Consider the following system of equations:

                                                                                  +

                                                                                  $$\mathbf{y}D_{\mathbf{x}}+\mathbf{z}D_{\mathbf{y}}=\mathbf{u}D_{\mathbf{z}}$$

                                                                                  +

                                                                                  where $\mathbf{x}$, $\mathbf{y}$, $\mathbf{z}$, and $\mathbf{u}$ are $1\times n$ vectors and $D_{\mathbf{x}}$, $D_{\mathbf{y}}$, and $D_{\mathbf{z}}$ are diagonal $n\times n$ matrices with $\mathbf{x}$, $\mathbf{y}$, and $\mathbf{z}$, respectively, along their diagonals (i.e., $D_{\mathbf{x}} = \mathrm{diag}(\mathbf{x})$).

                                                                                  +

                                                                                  My question is whether it is possible to solve for $\mathbf{y}$ here – both the $\mathbf{y}$ as a vector and the $\mathbf{y}$ along the diagonal of $D_{\mathbf{y}}$. The problem is that I do not know of operations to pull $\mathbf{y}$ out of $D_{\mathbf{y}}$. The one possibility that I have considered is to use the Hadamard product since this can be used to convert a vector into a diagonal matrix and vice versa, as discussed here. But I am not sure how this would work in this case, as it would be necessary to distribute $\mathbf{y}$ out of the resulting expression, and I don't know if this would be possible given the properties of the Hadamard product. That is, we could write

                                                                                  +

                                                                                  $$(\mathbf{y}e^T) \odot I_n = D_{\mathbf{y}}$$

                                                                                  +

                                                                                  where $\odot$ is the Hadamard product and $e^T = (1,1,\ldots)\in\mathbb R^n$. So, would it be possible to distribute out $\mathbf{y}$ and then move the remaining terms to the other side of the first equation above? For example, we couldn't do something like left-hand side since that would just be equal to $\mathbf{y}$, not $D_{\mathbf{y}}$:

                                                                                  +

                                                                                  $$\mathbf{y}(e^T \odot I_n) \neq D_{\mathbf{y}}$$

                                                                                  +

                                                                                  Edit: Oh, it seems that extracting $\mathbf{y}$ in this case would be a simple as rewriting the equation above as

                                                                                  +

                                                                                  $$\mathbf{y}D_{\mathbf{x}}+\mathbf{y}D_{\mathbf{z}}=\mathbf{u}D_{\mathbf{z}}$$

                                                                                  +

                                                                                  because rewriting the equation this way would not change the terms along the diagonal of $\mathbf{z}D_{\mathbf{y}}$. Then we can write

                                                                                  +

                                                                                  $$\mathbf{y}=\mathbf{u}D_{\mathbf{z}}D_{\mathbf{x+z}}^{-1}$$

                                                                                  +

                                                                                  But then how would solve for $\mathbf{y}$ in the following?

                                                                                  +

                                                                                  $$\mathbf{y}D_{\mathbf{x}}+\mathbf{y}D_{\mathbf{y}}=\mathbf{u}D_{\mathbf{z}}$$

                                                                                  +

                                                                                  I think that in this case, it would not be possible to solve for a single vector $\mathbf{y}$ as in the previous case. Instead, we would have a system of polynomials:

                                                                                  +

                                                                                  $$\mathbf{y^2} + \mathbf{y}D_{\mathbf{x}} = \mathbf{u}D_{\mathbf{z}}$$

                                                                                  +

                                                                                  where $\mathbf{y^2}$ is a vector where the elements are the squares of the corresponding elements of $\mathbf{y}$ – that is, $\mathbf{y^2} = \begin{pmatrix} y_{1}^2 & y_{2}^2 & \cdots & y_{n}^2 \end{pmatrix}$.

                                                                                  +

                                                                                  Next, what if we had an equation as follows?

                                                                                  +

                                                                                  $$\mathbf{y}D_{\mathbf{x}}+\mathbf{y}D_{\mathbf{yM}}=\mathbf{u}D_{\mathbf{z}}$$

                                                                                  +

                                                                                  where $\mathbf{M}$ is an $n \times n$ matrix. Unlike the other matrices, it is not a diagonal matrix. Thus, in each element along the diagonal of $D_{\mathbf{yM}}$, we have some linear combination.

                                                                                  +

                                                                                  I think in this case, the polynomial system of equations would be rather complicated. We would have the vector $\mathbf{y^2}$ again, but this time multiplied by some diagonal matrix based on the elements of $\mathbf{M}$ and $D_{\mathbf{x}}$ that is multiplied by a scalar ($n$, I believe). Then, we would have a set of vectors ($n-1$, I believe) that each have as elements different products of the elements in $\mathbf{y}$ (e.g., $y_1 y_3$) and are each multiplied by a scalar and a diagonal matrix composed of permutations of the elements in $\mathbf{M}$ and $D_{\mathbf{x}}$.

                                                                                  +

                                                                                  So, I have two questions here:

                                                                                  +
                                                                                    +
                                                                                  1. Is my general intuition about what this equation would look like correct?
                                                                                  2. +
                                                                                  3. Are there techniques to solve for the elements of $\mathbf{y}$ in this system?
                                                                                  4. +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  + $\endgroup$ +
                                                                                  + + + + + +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + 1 Answer + 1 +

                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + Reset to default + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +1
                                                                                  + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + $\begingroup$ +
                                                                                  +

                                                                                  I am not sure what the notation $D_\mathbf{x}$, $D_\mathbf{y}$, and $D_\mathbf{z}$ represent and if the importance is significant, but assuming $D_{\mathbf{x}}$ is invertible, you may solve for $\mathbf{y}$ as follows given the original equation:

                                                                                  +

                                                                                  $$ \mathbf{y}D_{\mathbf{x}}+\mathbf{z}D_{\mathbf{y}}=\mathbf{u}D_{\mathbf{z}} $$ +$$ \mathbf{y}D_{\mathbf{x}}=\mathbf{u}D_{\mathbf{z}}-\mathbf{z}D_{\mathbf{y}} $$ +$$ \mathbf{y}=\bigr( \mathbf{u}D_{\mathbf{z}}-\mathbf{z}D_{\mathbf{y}} \bigr) D_{\mathbf{x}}^{-1} $$

                                                                                  +

                                                                                  Note: I can't verify that your edit is correct because I don't understand what $D_{\mathbf{x} + \mathbf{z}}$ represents.

                                                                                  +

                                                                                  Edit 1:

                                                                                  +

                                                                                  Thank you for the response as I didn't realize the meaning of the matrices $D_{\mathbf{x}}$, $D_{\mathbf{y}}$, and $D_{\mathbf{z}}$. Yes, your edit is correct, but perhaps, I can provide how I would work the problem if that is of use to you.

                                                                                  +

                                                                                  Since $D_{\mathbf{x}} = \text{diag}(\mathbf{x})$ and similarly for the other matrices, we have

                                                                                  +

                                                                                  $$ +\begin{bmatrix} y_1 & \cdots & y_n \end{bmatrix} \begin{bmatrix} x_1 & & \\ & \ddots & \\ & & x_n\end{bmatrix} + \begin{bmatrix} z_1 & \cdots & z_n \end{bmatrix} \begin{bmatrix} y_1 & & \\ & \ddots & \\ & & y_n\end{bmatrix} = \mathbf{u}D_{\mathbf{z}} +$$

                                                                                  +

                                                                                  and multiplying through we have

                                                                                  +

                                                                                  $$ +\begin{align} +\begin{bmatrix} y_1 x_1 & \cdots & y_n x_n \end{bmatrix} + \begin{bmatrix} y_1 z_1 & \cdots & y_n z_n \end{bmatrix} &= \mathbf{u}D_{\mathbf{z}}\\ +\begin{bmatrix} y_1 x_1 + y_1 z_1 & \cdots & y_n x_n + y_n z_n \end{bmatrix} &= \mathbf{u}D_{\mathbf{z}} \\ +\begin{bmatrix} y_1 (x_1 + z_1) & \cdots & y_n(x_n + z_n) \end{bmatrix} &= \mathbf{u}D_{\mathbf{z}} \\ +\end{align} +$$

                                                                                  +

                                                                                  Therefore, this can be written in matrix form as

                                                                                  +

                                                                                  $$ +\begin{bmatrix} y_1 & \cdots & y_n \end{bmatrix} \begin{bmatrix} x_1 + z_1 & & \\ & \ddots & \\ & & x_n + z_n \end{bmatrix} = \mathbf{u}D_{\mathbf{z}} +$$

                                                                                  +

                                                                                  or more concisely as

                                                                                  +

                                                                                  $$ \mathbf{y} (D_{\mathbf{x}} + D_{\mathbf{z}} ) = \mathbf{u} D_{\mathbf{z}} $$

                                                                                  +

                                                                                  which is exactly what is given in your edit:

                                                                                  +

                                                                                  $$ \mathbf{y} = \mathbf{u} D_{\mathbf{z}} (D_{\mathbf{x}} + D_{\mathbf{z}} ) ^{-1}$$

                                                                                  +

                                                                                  Edit 2:

                                                                                  +

                                                                                  As for the case where you have $\mathbf{y}^2 + \mathbf{y} D_{\mathbf{x}} = \mathbf{u} D_{\mathbf{z}}$ where $\mathbf{y}^2 = \begin{bmatrix} y_1^2 & \cdots & y_n^2 \end{bmatrix}$, you would not be able to solve for $\mathbf{y}$ as far as I can tell... To see this, multiply together the matrices, which would give the following result (skipping intermediate steps):

                                                                                  +

                                                                                  $$ +\begin{bmatrix} x_1 & \cdots & x_n \end{bmatrix} \begin{bmatrix} y_1^2 + y_1 & & \\ & \ddots & \\ & & y_n^2 + y_n \end{bmatrix} = \mathbf{u}D_{\mathbf{z}} +$$

                                                                                  +

                                                                                  where we cannot solve for the matrix containing the $y$ variables because we cannot eliminate $\mathbf{x}$ from the left side of the equation.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + $\endgroup$ +
                                                                                  + + + + + 4 +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  • +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + My notation for, for example, $D_{\mathbf{x}}$ was intended to refer to $\mathrm{diag}(\mathbf{x})$. Thus, $D_{\mathbf{x+y}}$ means $\mathrm{diag}(\mathbf{x+y})$. Sorry if that was unclear. Furthermore, in the solution you provided, $\mathbf{y}$ is still along the diagonal of $D_{\mathbf{y}}$. My aim is to remove it so we can have an non-implicit expression for $\mathbf{y}$. + $\endgroup$ +
                                                                                    +– Ryan da Silva +
                                                                                    + + Commented + Mar 31, 2021 at 5:45 + + + + +
                                                                                    +
                                                                                    +
                                                                                  • +
                                                                                  • +
                                                                                    +
                                                                                    + 1 +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + @RyandaSilva Ah. Thanks. I apologize I misunderstood the notation. I edited my question of how I would work the problem if that may be of any use to you. Your edit is indeed correct. Best of luck! + $\endgroup$ +
                                                                                    +– Ralff +
                                                                                    + + Commented + Mar 31, 2021 at 6:15 + + + + +
                                                                                    +
                                                                                    +
                                                                                  • +
                                                                                  • +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + Thank you very much for the help and the kind wishes. If you have time, I have added a bit more to my original post that I would love to get your feedback on. + $\endgroup$ +
                                                                                    +– Ryan da Silva +
                                                                                    + + Commented + Mar 31, 2021 at 17:38 + +
                                                                                    +
                                                                                    +
                                                                                  • +
                                                                                  • +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + $\begingroup$ + @RyandaSilva You're welcome! I made a mistake, so I updated my answer. Please, see the changes. I provided a hint for your additional edit but only for the $\mathbf{y}^2$ case. If you have a matrix with off diagonal terms, then the matrix multiplication will be slightly more complicated, but I suggest working out the multiplication by hand, so you can see the result. + $\endgroup$ +
                                                                                    +– Ralff +
                                                                                    + + Commented + Mar 31, 2021 at 18:47 + +
                                                                                    +
                                                                                    +
                                                                                  • + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + You must log in to answer this question. +

                                                                                  + + + +

                                                                                  +
                                                                                  +Not the answer you're looking for? Browse other questions tagged .
                                                                                  +

                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_list_empty.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_list_empty.html new file mode 100644 index 00000000..96aa3568 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_list_empty.html @@ -0,0 +1,2000 @@ + + + +Натуральное мыло ручной работы — продажа оптом от производителя, каталог 2024 из 39 разновидностей, цены + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +20 943 +Российских производителей
                                                                                  +
                                                                                  +82 716 +Товаров российского производства
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    +
                                                                                  • 134970 картинка каталога «Производство России». Продукция Натуральное мыло ручной работы, г.Симферополь 2015
                                                                                  • +
                                                                                  • Фото 2 Натуральное мыло ручной работы, г.Симферополь 2015
                                                                                  • +
                                                                                  • Фото 3 Натуральное мыло ручной работы, г.Симферополь 2015
                                                                                  • +
                                                                                  • Фото 4 Натуральное мыло ручной работы, г.Симферополь 2015
                                                                                  • +
                                                                                  +
                                                                                  +Источник фото: knk-kosmetika.ru © +
                                                                                  +
                                                                                  +

                                                                                  Натуральное мыло ручной работы

                                                                                  + оптом от производителя, г.Симферополь +
                                                                                  Продажа оптом мыла ручной работы от производителя натуральной косметики «Крымская Натуральная Коллекция», г. Симферополь
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  Цена от 54 
                                                                                  +мин. партия: 180 шт.
                                                                                  +Купить оптом в 1 клик
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    +
                                                                                  • + +Описание
                                                                                  • +
                                                                                  • + +Вопросы
                                                                                  • +
                                                                                  • + +Отзывы
                                                                                  • +
                                                                                  • + +Контакты
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Натуральное мыло ручной работы изготавливает и реализует по оптовой цене российский производитель и поставщик косметики под брендом «Крымская Натуральная Коллекция».

                                                                                  + +

                                                                                  В каталоге представлено 39 разновидностей мыла.

                                                                                  + +

                                                                                  Выпускаем:

                                                                                  + +
                                                                                    +
                                                                                  • мыло с омолаживающим эффектом;
                                                                                  • +
                                                                                  • антицеллюлитное мыло;
                                                                                  • +
                                                                                  • мыло-скраб;
                                                                                  • +
                                                                                  • лечебное;
                                                                                  • +
                                                                                  • мыло-духи (ароматизированное).
                                                                                  • +
                                                                                  + +

                                                                                  Список ассортимента, каталог и прайс-листы отправляем по запросу на электронную почту заказчиков.

                                                                                  + +

                                                                                  Фасовка: бруски по 43 и 75 грамм. Также предлагаем поставки мыла брусками по 850 гр.

                                                                                  + +

                                                                                  Преимущества мыла от «Крымская Натуральная Коллекция»:

                                                                                  + +
                                                                                    +
                                                                                  • производство «холодным» способом по уникальным рецептурам с сохранением полезных веществ и микроэлементов;
                                                                                  • +
                                                                                  • натуральный состав без химических добавок, консервантов, синтетических красителей и отдушек;
                                                                                  • +
                                                                                  • не вызывает аллергии;
                                                                                  • +
                                                                                  • насыщение кожи полезными веществами, минералами и витаминами;
                                                                                  • +
                                                                                  • ароматерапевтическое действие;
                                                                                  • +
                                                                                  • в составе растительные экстракты, масла и травы;
                                                                                  • +
                                                                                  • омолаживающий и питательный эффект для кожи;
                                                                                  • +
                                                                                  • придание коже легкого уникального аромата;
                                                                                  • +
                                                                                  • тщательный контроль качества продкции;
                                                                                  • +
                                                                                  • не сушит кожу и не стягивает кожу, потому что имеет максимальный PH (не более 8,5).
                                                                                  • +
                                                                                  + +

                                                                                  Срок годности: 12 мес. (в упаковке).

                                                                                  + +

                                                                                  Также мыло ручной работы от бренда «Крымская Натуральная Коллекция» подходит:

                                                                                  + +
                                                                                    +
                                                                                  • для мыльного массажа (глубоко очищает кожу, удаляет ороговевшие слои, способствует уменьшению объемов тела и профилактике целлюлита);
                                                                                  • +
                                                                                  • в качестве средства для бритья;
                                                                                  • +
                                                                                  • для ежедневного очищения кожи (умывание и душ);
                                                                                  • +
                                                                                  • в качестве мыльной маски для очищения кожи;
                                                                                  • +
                                                                                  • для интимной гигиены (бережно очищает, уменьшает количество воспалений, не раздражает слизистые покровы).
                                                                                  • +
                                                                                  + +

                                                                                  Также выпускаем натуральные дезодоранты, соль для ванны, натуральные кремы для лица и маски-скрабы. Смотрите список продукции в каталоге компании на выставке и на официальном сайте фабрики.

                                                                                  Приглашаем к сотрудничеству косметически салоны и CGF-центры, косметологии, салоны красоты, магазины, дилеров и оптовых заказчиков, корпоративных клиентов.

                                                                                  + +

                                                                                  Продажа оптом от 180 шт. (сумма полного оптового заказ от 20000 руб.).

                                                                                  + +

                                                                                  Оплату принимаем на расчетный счет фабрики и отгружаем заказы при 100% предоплате. Доставка по России транспортными компаниями.

                                                                                  + +

                                                                                  Прайс-лист закажите у менеджера бренда на выставке через кнопку «Заказать прайс-лист» или по телефону.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Аватар пользователя
                                                                                  +
                                                                                  +Hani +29.05.2023 12:49 +
                                                                                  +
                                                                                  +

                                                                                  كيف يمكن ان اشتري من الشركة بالجملة وكيف يمكن ان اتواصل مع مدير المبيعات

                                                                                  +Армения, г.Ереван +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Аватар пользователя
                                                                                  +
                                                                                  +Жанна А. +19.03.2022 08:57 +
                                                                                  +
                                                                                  +

                                                                                  Здравствуйте. Пишу с коммерческим предложением. Разрешаете ли продажу на маркетплейсе? Вышлите прайс,пожалуйста.

                                                                                  +Россия, г.Санкт-Петербург +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Аватар пользователя
                                                                                  +
                                                                                  +Михрим Баратова +6.02.2022 06:22 +
                                                                                  +
                                                                                  +

                                                                                  Здравствуйте, можно опт цену на бруски по 850гр. В Алматы отправите? Минимальный заказ?

                                                                                  +Казахстан, г.Алматы +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Аватар пользователя
                                                                                  +
                                                                                  +Татьяна Сергеевна Дернова +7.01.2022 03:00 +
                                                                                  +
                                                                                  +

                                                                                  Могу ли продавать вашу продукцию на маркетплейсах? Условия?

                                                                                  +Россия, г.Петропавловск-Камчатский +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Аватар пользователя
                                                                                  +
                                                                                  +Татьяна +5.10.2021 09:14 +
                                                                                  +
                                                                                  +

                                                                                  Здравствуйте! Скажите, пожалуйста, сколько стоит мыло в брусках?

                                                                                  +Россия, г.Москва +
                                                                                  + + +
                                                                                  +Задать вопрос +
                                                                                  + + +
                                                                                  + +
                                                                                  +
                                                                                  + + + + +Я соглашаюсь с политикой конфиденциальности
                                                                                  + + +
                                                                                  + + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + +
                                                                                  + + + + + +
                                                                                  + Написать отзыв +
                                                                                  + + + + Ваша оценка +
                                                                                  +
                                                                                  + + + +
                                                                                  +
                                                                                  Преимущества
                                                                                  + +
                                                                                  Недостатки
                                                                                  + +
                                                                                  Комментарий
                                                                                  + + +
                                                                                  + + + + + Я соглашаюсь с политикой конфиденциальности + +
                                                                                  + + + + +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +Фабрика «Крымская Натуральная Коллекция»
                                                                                  +
                                                                                  +Фабрика «Крымская Натуральная Коллекция» +
                                                                                  + + +3 отзыва
                                                                                  +
                                                                                  Фабрика «Крымская Натуральная Коллекция» — российский производитель и...
                                                                                  +
                                                                                  +Контактная информация + + + + + + + + + + + + + + + + +
                                                                                  АдресКрым, Симферополь, ул. Бородина 10
                                                                                  Телефон+7 (978) 875-4152
                                                                                  WhatsApp+7 9782866450
                                                                                  Электронная почтаzakaz.knk@mail.ru
                                                                                  Официальный сайтknk-kosmetika.ru
                                                                                  +Реквизиты компании + + + + + + + + + + + + + + + + + + + +
                                                                                  НаименованиеИП Долгая Ирина Анатольевна
                                                                                  ОГРН314910226700661
                                                                                  ИНН910200114800
                                                                                  Юридический адрес295000, Респ Крым, г Симферополь
                                                                                  Дата регистрации24.09.2014
                                                                                  Виды деятельности +
                                                                                  +Основной ОКВЭД +46.45 Торговля оптовая парфюмерными и косметическими товарами +Дополнительные ОКВЭД +46.31.2 Торговля оптовая консервированными овощами, фруктами и орехами + + + + + + + + + + + + + + + + + + +Показать весь список... +
                                                                                  +
                                                                                  +Компания на карте +
                                                                                  +
                                                                                  +
                                                                                  Продукция компании22 Смотреть всё +
                                                                                  + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 ​Ароматические освежители воздуха натуральные, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 178,20 
                                                                                  + ​Ароматические освежители воздуха натуральные +
                                                                                  ​Ароматические освежители воздуха натуральные изготавливает и предлагает оптовым заказчикам купить по выгодной цене российский...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Натуральная хозяйственная паста с горчицей, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 180 
                                                                                  + Натуральная хозяйственная паста с горчицей +
                                                                                  Российский производитель и поставщик натуральной косметической и бытовой продукциии «Крымская Натуральная...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Морская соль для ванн, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 90 
                                                                                  + Морская соль для ванн +
                                                                                  Российская фабрика-поставщик натуральной косметики из Крыма Фабрика «Крымская Натуральная Коллекция» изготавливает...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Натуральный дезодорант-антиперспирант, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 145,20 
                                                                                  + Натуральный дезодорант-антиперспирант +
                                                                                  Симферопольский бренд-поставщик экологичной косметики «Крымская Натуральная Коллекция» продает по оптовой цене...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Маска-скраб для лица, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 102 
                                                                                  + Маска-скраб для лица +
                                                                                  Косметическая фабрика-поставщик «Крымская Натуральная Коллекция» предлагает поставки масок-скрабов для лица в...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Натуральные кремы для лица, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 318 
                                                                                  + Натуральные кремы для лица +
                                                                                  Российский производитель и поставщик косметической продукции под брендом «Крымская Натуральная Коллекция»...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Косметические масляно-солевые скрабы, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 178,20 
                                                                                  + Косметические масляно-солевые скрабы +
                                                                                  Фабрика-поставщик натуральной косметики «Крымская Натуральная Коллекция» представляет широкий ассортимент...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Натуральный крем для рук «Нежное прикосновение», г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 198 
                                                                                  + Натуральный крем для рук «Нежное прикосновение» +
                                                                                  Натуральный крем для рук «Нежное прикосновение» изготавливает и реализует по оптовой цене производитель и поставщик...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Натуральное мыло ручной работы, г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 54 
                                                                                  + Натуральное мыло ручной работы +
                                                                                  Натуральное мыло ручной работы изготавливает и реализует по оптовой цене российский производитель и поставщик косметики под...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Фото 1 Мягкое травяное мыло «Бельди», г.Симферополь 2015 +
                                                                                  + +
                                                                                  +
                                                                                  Цена от 142,80 
                                                                                  + Мягкое травяное мыло «Бельди» +
                                                                                  Мягкое травяное мыло «Бельди» изготавливает и реализует по оптовой цене российский бренд-поставщик косметики...
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + 0 отзывов +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + +Ожидайте, идёт загрузка...
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_table_elem_include_enter.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_table_elem_include_enter.html new file mode 100644 index 00000000..176f4fab --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/test_table_elem_include_enter.html @@ -0,0 +1,3136 @@ + + + + + + + + + + + + + + + + + + + + + دانلود ترجمه مقاله توسعه مالی و هزینه سرمایه حقوق سهامداران + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +دانلود ترجمه مقاله توسعه مالی و هزینه سرمایه حقوق سهامداران

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + عنوان فارسی + + +

                                                                                  +توسعه مالی و هزینه سرمایه حقوق سهامداران: شواهدی از چین

                                                                                  +
                                                                                  + + عنوان انگلیسی + + +

                                                                                  + Financial development and the cost of equity capital: Evidence from China

                                                                                  +
                                                                                  + + کلمات کلیدی : + + +

                                                                                  +   + توسعه مالی؛ هزینه سرمایه حقوق سهامداران؛ قانون و امور مالی؛ چین

                                                                                  +
                                                                                  + + درسهای مرتبط + + + + حسابداری +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + تعداد صفحات مقاله انگلیسی : + 35 + نشریه : +ELSEVIER
                                                                                  + سال انتشار : + 2015 + تعداد رفرنس مقاله : + 112
                                                                                  + فرمت مقاله انگلیسی : + PDF + + نوع مقاله : + ISI +
                                                                                  + پاورپوینت : + ندارد + وضعیت ترجمه مقاله : + انجام نشده است.
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + فهرست مطالب +
                                                                                  +
                                                                                  +

                                                                                  +1. مقدمه +2. پیشینه نهادی +3. چارچوب نظری +4. طرح تحقیق +5. نتایج تجربی +6. آنالیز بیشتر: تاثیرات فاکتورهای نهادی +7. بررسی دقت +8. نتیجه گیری +

                                                                                  +
                                                                                  +
                                                                                  +سفارش ترجمه +
                                                                                  +
                                                                                  + ترجمه نمونه متن انگلیسی +
                                                                                  +
                                                                                  +

                                                                                  + این مطالعه، رابطه بین توسعه مالی سطح استان و هزینه دارایی ویژه در چین را بررسی می کند. یافته های اصلی ما از این قرارند که (1) توسعه بازار سهام، بطور کل هزینه دارایی ویژه را کاهش می دهد، اما این اثر در شرکت های دولتی (SOE) و شرکت های دارای پتانسیل رشد یا شدت نوآوری زیاد، به میزان قابل توجهی کمرنگ می شود و (2) توسعه بانکداری تنها به صورت جزئی هزینه دارایی ویژه را کاهش می دهد، اما این اثر در شرکت های غیر SOE، قویتر است. تحلیل های بیشتر جایگزین های توسعه بازار سهام برای چنین عوامل نهادی مانند کیفیت حسابداری، اجرای قانون، تلفیق بازار سهام و اصلاح ساختار تقسیم سهام در کاهش هزینه دارایی ویژه را آشکار می کنند. همچنین در می یابیم که عدم وجود رقابت در بانکداری و بازاری کردن بانکداری و توسعه ضعیف اقتصاد غیردولتی تاحدی مسئول اثر ضعیف توسعه بانکداری بر هزینه دارایی ویژه می باشد. + +مقدمه: +این مطالعه، تاثر توسعه مالی منطقه ای بر هزینه دارایی ویژه در چین را با استفاده از یک نمونه بزرگ از شرکت های چینی پذیرفته شده در بورس اوراق بهادار شانگهای (SHSE) و بورس اوراق بهادار شنزن (SZSE) در دوره 1998 تا 2008، را بررسی می کند. مخصوصاً اینکه، طبق رویکرد جایاراتنه و استراهان (1996) و گویسو و همکاران (2004 الف، 2004 ب)، بررسی می کنیم که آیا توسعه مالی منطقه ای سطح استانی در یک کشور با هزینه دارایی ویژه ارتباط دارد یا خیر و چه ارتباطی و همچنین اینکه این رابطه چگونه براساس زیرساخت های نهادی مانند اجرای قانونی، کیفیت حسابداری و مقررات دیگر، شرطی می شوند.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + نمونه متن انگلیسی مقاله +
                                                                                  +
                                                                                  +

                                                                                  + This study examines the relation between province-level financial development and the cost of equity in China. Our main findings are that (1) stock market development reduces the cost of equity in general, but the effect diminishes significantly in state-owned enterprises (SOEs) and firms with high growth potential or innovation intensity and (2) banking development only marginally lowers the cost of equity, but the effect is stronger in non-SOEs. Further analysis reveals that stock market development substitutes for such institutional factors as accounting quality, law enforcement, stock market integration and the split-share structure reform in lowering the cost of equity. We also find that lack of banking competition and banking marketization and under-development of the non-state economy partially account for the weak effect of banking development on the cost of equity. + +Introduction: +This study examines the impact of regional financial development on the cost of equity capital in China, using a large sample of Chinese firms listed on the Shanghai Stock Exchange (SHSE) and Shenzhen Stock Exchange (SZSE) over the period from 1998 to 2008. Specifically, following the approach of Jayaratne and Strahan (1996) and Guiso et al. (2004a, 2004b), we investigate whether and how regional province-level financial development within the same country is associated with the cost of equity, and how the relation is conditioned upon institutional infrastructures such as legal enforcement, accounting quality and other regulations.

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + توضیحات و مشاهده مقاله انگلیسی +
                                                                                  +
                                                                                  +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  سفارش ترجمه تخصصی این مقاله
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + دیدگاهها

                                                                                  + +

                                                                                  هیچ دیدگاهی برای این محصول نوشته نشده است.

                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + اولین نفری باشید که دیدگاهی را ارسال می کنید برای “دانلود ترجمه مقاله توسعه مالی و هزینه سرمایه حقوق سهامداران”

                                                                                  نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

                                                                                  + +

                                                                                  4 × دو =

                                                                                  + +

                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  پروپوزال آماده

                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  +

                                                                                  مقالات ترجمه شده

                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  +

                                                                                  پایان نامه آماده

                                                                                  +
                                                                                  + + + + +
                                                                                  +

                                                                                  مطالب علمی

                                                                                  +
                                                                                  + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  نماد اعتماد الکترونیکی

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  پشتیبانی

                                                                                  +
                                                                                  +
                                                                                  logo-samandehi
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text10.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text10.html new file mode 100644 index 00000000..67032519 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text10.html @@ -0,0 +1,2310 @@ + + + + + + + + + + + + + + + + + + + + + Questions about Parallel Worlds by Michio Kaku: the big bang | Physics Forums - The Fusion of Science and Community + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + +

                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  1. + +
                                                                                    Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
                                                                                    + + + Dismiss Notice +
                                                                                  2. + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + Dismiss Notice + +
                                                                                  + +
                                                                                  + +
                                                                                  + Join Physics Forums Today!
                                                                                  +The friendliest, high quality science and math community on the planet! Everyone who loves science is here! +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  + +

                                                                                  + + + + + + + + +Questions about Parallel Worlds by Michio Kaku: the big bang + + +

                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                    + + + + + + + + +
                                                                                  1. +
                                                                                    + +
                                                                                    + + + Jun 9, 2012 + + + + + #1 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + ail +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    + + + + +
                                                                                    + + + + + + + + Hi, I've bought PW recently and began reading it just yesterday. I have felt some doubts while reading it, since I haven't had any physics since I left high school and that has been a long time ago. Also, all this astrophysics always a tad mind-boggling to me. So far I have 2 sets of questions (but I'm onlin in the 2nd chapter now:smile:)
                                                                                    +
                                                                                    +1)
                                                                                    +In the book, Michio Kaku says the universe expanded at a rate faster than light, but that this does not contradict the limit on light's velocity because it was the empty space that was expanding, not an object that was moving. I'm sorry, but I don't understand this. How is it that the empty space is expanding? Are we saying that the objects in it are fixed but that they being pushed by an ever growing sort of tissue between them, that happens to be "empty space"? If it is not this, how can we argue that the objects are not moving, and that they are not moving beyond the speed of light although they're expanding faster than that?
                                                                                    +
                                                                                    +2)
                                                                                    +MK also says at another point that we now have a device that photographed objects 13 x10^9 light-years away (I prefer using scientific notation since 'billion' is a highly ambiguous term depending on where you're from). That means that we have just now captured the light of an object as it existed that time ago. I understand the basic idea but I can't visualize it very well. So, in the big bang, there is a fixed point in space and time (let's call it t=0) and then everything starts expanding from then. Eventually, our own location expands to. First, does this mean the universe is some kind of sphere or ellipsoid that expands radially from a center? But then, some objects must travel faster than others, right? why do they travel at different speeds? Ok, so Earth has not appeared at the time of the big bang, but some thousand million years after. When it forms, it is already a fair distance away from the origin point of the big bang, let's say the centre of the sphere. Then when we captured this light, were we looking in the direction of the center of the universe, say, towards the opposite direction that our galaxy is travelling in? And does that mean that whatever light was caused by that explosion is still there, stopped in place? But shouldn't have light travelled too? And if it did, then is it truly "behind" us? Shouldn't it have sped away ahead of the objects that were meanwhile expelled?
                                                                                    +
                                                                                    +I'm sorry if this is disorganized, but I have real difficulty around these concepts. Perhaps some animation of this expansion of the universe would be useful, if someone knows where I can find it.
                                                                                    +
                                                                                    +Thanks if any of you can help me in here. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + ail, + Jun 9, 2012 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  2. + + + + +
                                                                                  3. +
                                                                                    +
                                                                                    + jcsd +
                                                                                    +
                                                                                    + + +
                                                                                  4. + + + + + + + + + + + +
                                                                                  5. +
                                                                                    + +
                                                                                    + + + Jun 9, 2012 + + + + + #2 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + Ken G +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + +
                                                                                    + + Gold Member + +
                                                                                    + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + + The very first thing you need to do is get rid of this picture that the Big Bang "happened at a point". The Big Bang is not a model of a happening, it is a model of an evolutionary process, whose origin we know very little about and it's best not even to include the origin in the evolutionary model. The evolutionary process looks like very hot, very dense material and fields, which is everywhere expanding and so getting less dense and less hot with age. It is "how the universe ages", that's the Big Bang model. Currently this model says very little, or even nothing, about the spatial extent of this hot dense material and fields, we only get to see a piece of it so we don't know how far it extends. It was never "a point", our ability to do physics breaks down long before we could ever accurately describe it as that.
                                                                                    +
                                                                                    +So get rid of the "singular point" idea, that single picture causes so many misconceptions about the Big Bang I wish no one had ever mentioned it anywhere (yet it seems to be the single thing that almost everyone hears!). Instead, take a 2 dimensional replacement of 3d space (it's easier to picture and talk about), and just imagine you have a rubber chess board. The squares on the board are small, and the tiny pieces on those squares are packed in very tightly. This is some arbitrary point in the expansion process, it's not the "very beginning" because there is no such point in the Big Bang model-- we just start it whereever we have some observational constraints on it, be they direct or inferred, but noting that if they are inferred, they require that we have some description of the physics (and that's what we don't have if it's a "point"). Now imagine stretching the rubber board, leaving all the pieces in the same squares (and the pieces don't stretch, their size is determined by their own internal physics). Finally, imagine that ants are crawling around on the board in straight lines from piece to piece.
                                                                                    +
                                                                                    +In this analogy, the pieces are galaxy clusters, the ants are photons, and the board is "space itself." Please note that we do not have any current physical model of space, so this is just a picture, and it works with respect to general relativity in a particularly common choice of spatial coordinate (the one where the location of the pieces stays fixed, to it's the choice that corresponds to squares on the expanding chessboard). So nothing is "moving faster than light", because nothing is moving at all except the ants, and they are crawling across the board at speed c. However, the rate of change of distance between pieces on the board can indeed be > c, if the pieces are far enough away from each other (this is the Hubble law).
                                                                                    +
                                                                                    +The density of pieces obviously drops, the next thing to get is that the light (ants) will be observed to redshift by the factor that equals the factor by which the chess board has stretched from the age they were emitted to the age they were observed. We say their wavelength "expands with space" to picture this factor increase in wavelength. But the key point to remember is that the photons we get from far far away are from someplace that was always a distance away from our "square", it was just not as far then as it is now. Another point to get is that ants crawling at c can get between two points on a rubber expanding chessboard even if the square they left from has its distance increasing at a rate greater than c-- that's just as true for ants as it is for light. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + Ken G, + Jun 9, 2012 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  6. + + + + + + + + + + +
                                                                                  7. +
                                                                                    + +
                                                                                    + + + Jun 9, 2012 + + + + + #3 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + phinds +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + +
                                                                                    + + Gold Member + +
                                                                                    + + + +
                                                                                    + + 2016 Award + +
                                                                                    + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + +
                                                                                    + + + + +
                                                                                    + +
                                                                                    + +
                                                                                    I like to use the terms "moving THROUGH space" and "moving WITH space", although I have had some push-back from other members here, pointing out that this is pretty ambiguous terminology. Moving THROUGH space is subject to the cosmic speed limit c, but moving WITH space is not. It's like a boat moving 10MPH down a raging river that is moving 30MPH. The boat's motor is subject to a 10MPH speed liimit, but a person on the shore sees the boat moving 40MPH.
                                                                                    +
                                                                                    +Try this:
                                                                                    +
                                                                                    +www.phinds.com/balloonanalogy
                                                                                    +
                                                                                    +I think it will help with a lot of your questions. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + phinds, + Jun 9, 2012 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  8. + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + +
                                                                                  Know someone interested in this topic? Share this thread via Reddit, + Google+, + Twitter, or + Facebook
                                                                                  + +
                                                                                  + + + + + + + + +

                                                                                  + + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + Similar Discussions: Questions about Parallel Worlds by Michio Kaku: the big bang +
                                                                                  + +
                                                                                  + +
                                                                                    + + + + +
                                                                                  1. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Parallel Worlds by Michio Kaku + + + + (Replies: 9) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  2. + + + +
                                                                                  3. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Michio Kaku, Parallel Universes, and Galactic EZ Bake Ovens + + + + (Replies: 2) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  4. + + + +
                                                                                  5. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Question about Big Bang Theory + + + + (Replies: 3) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  6. + + + +
                                                                                  7. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Michio Kaku + + + + (Replies: 4) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  8. + + + +
                                                                                  9. + + +
                                                                                    + +
                                                                                    + +
                                                                                  10. + + +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + Loading... +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text2.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text2.html new file mode 100644 index 00000000..4b50fbae --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text2.html @@ -0,0 +1,1846 @@ + + + + + + + +Cupped Set For Squezer 5/32 | Aircraft Spruce + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  +
                                                                                  +  +
                                                                                  + +  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  THE AVIATION SUPERSTORE FOR ALL YOUR AIRCRAFT & PILOT NEEDS | 877-4-SPRUCE
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +Main Image + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Cupped Set For Squezer 5/32

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  $11.75/Each
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +Quantity + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +Add to Wishlist +View More In This Series → +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  Part# AT108AR-5/32
                                                                                  MFR Model# ATI108AR5/32
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Overview

                                                                                  + + + + +
                                                                                  +For Swivel Hand Rivet Squeezer or any snap Type .187 Shank Diameter Squeezer + +

                                                                                  +

                                                                                  Instructions for Selecting Rivet Sets:
                                                                                  +To develop maximum power, the riveter must drive the rivet near the end of the riveter's stroke.For maximum power the combined length of the two rivet sets must be of the correct length. Determine the correct length as follows:

                                                                                  +

                                                                                  WHEN TWO CUPPED RIVET SETS ARE USED: The sum of the two rivet sets "L" dimension should equal the closed height dimension of the yoke minus the total thickness of the material being used.

                                                                                  +

                                                                                  WHEN TWO FLUSH SETS ARE USED: The sum of the two rivet sets "L" dimension should equal the closed height dimesion of the yoke minus the overall length of the rivet after it is driven.

                                                                                  +

                                                                                  WHEN ONE CUPPED SET & ONE FLUSH SET ARE USED: The sum of the two rivet sets "L" dimension should equal the closed height dimension of the yoke minus the total thickness fo the material being riveted and the height fo the finished rivet head driven by the flush set. If necessary, select rivet sets a little short and shim to proper length with hardened shims listed in the table. The closed height dimension of the yoke referred to above is the opening available when jaws of plunger are in extreme closed or forward position with both rivet sets in place.  +

                                                                                  +

                                                                                  +


                                                                                  +Note: To determine correct set when ordering, select rivet size then body length.

                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                    
                                                                                  California Prop 65 Warning Symbol

                                                                                  WARNING: Cancer and Reproductive Harm - www.P65Warnings.ca.gov.

                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    +
                                                                                  • Frequently Purchased With
                                                                                  • Customers Also Viewed
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  Reviews

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +

                                                                                  Q&A

                                                                                  +
                                                                                  +
                                                                                  + +Submit +
                                                                                  +
                                                                                  +

                                                                                  Please note, Aircraft Spruce's personnel are not certified aircraft mechanics and can only provide general support and ideas, which should not be relied upon or implemented in lieu of consulting an A&P or other qualified technician. Aircraft Spruce assumes no responsibility or liability for any issue or problem which may arise from any repair, modification or other work done from this knowledge base. Any product eligibility information provided here is based on general application guides and we recommend always referring to your specific aircraft parts manual, the parts manufacturer or consulting with a qualified mechanic.

                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  View in Catalog

                                                                                  +View Image +View in Catalog +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text3.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text3.html new file mode 100644 index 00000000..78992e37 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text3.html @@ -0,0 +1,2670 @@ + + + + + + + + + + + + + + + + + + + + + Help me with this questions so I can review for my exam. | Physics Forums - The Fusion of Science and Community + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + +

                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  1. + +
                                                                                    Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
                                                                                    + + + Dismiss Notice +
                                                                                  2. + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + Dismiss Notice + +
                                                                                  + +
                                                                                  + +
                                                                                  + Join Physics Forums Today!
                                                                                  +The friendliest, high quality science and math community on the planet! Everyone who loves science is here! +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  + +

                                                                                  + + + + + + + + +Help me with this questions so I can review for my exam. + + +

                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                    + + + + + + + + +
                                                                                  1. +
                                                                                    + +
                                                                                    + + + Jun 17, 2008 + + + + + #1 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + MoreZitiPlease +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    + + + + +
                                                                                    + + + + + + + + 1. The problem statement, all variables and given/known data
                                                                                    +A woman of height 1.7 meters stands directly in front of a convex mirror 2.0 meters away. The mirror has a radius of curvature, R=-50cm. Find the location and size of a woman's image using the ray diagram and mirror/lens equation.
                                                                                    +
                                                                                    +----------
                                                                                    +
                                                                                    +2. The speed of light in a material is 2.50x10^8 meters per second. What is the index of refraction of the material?
                                                                                    +
                                                                                    +
                                                                                    +2. Relevant equations
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +3. The attempt at a solution
                                                                                    +1. di=22.22
                                                                                    +
                                                                                    +2. Dont know +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + MoreZitiPlease, + Jun 17, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  2. + + + + +
                                                                                  3. +
                                                                                    +
                                                                                    + jcsd +
                                                                                    +
                                                                                    + + +
                                                                                  4. + + + + + + + + + + + +
                                                                                  5. +
                                                                                    + +
                                                                                    + + + Jun 17, 2008 + + + + + #2 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + lzkelley +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + + why dont you look in your book for "index of refraction" and see what it says? +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + lzkelley, + Jun 17, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  6. + + + + + + + + + + +
                                                                                  7. +
                                                                                    + +
                                                                                    + + + Jun 17, 2008 + + + + + #3 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + gendou2 +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + +
                                                                                    + + + + +
                                                                                    + + This website has the information you need:
                                                                                    +
                                                                                    +http://www.sasked.gov.sk.ca/docs/physics/u3a22phy.html [Broken] +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    + + Last edited by a moderator: May 3, 2017 + +
                                                                                    + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + gendou2, + Jun 17, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  8. + + + + + + + + + + +
                                                                                  9. +
                                                                                    + +
                                                                                    + + + Jun 17, 2008 + + + + + #4 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + MoreZitiPlease +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + + Is number 1 right? +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + MoreZitiPlease, + Jun 17, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  10. + + + + + + + + + + +
                                                                                  11. +
                                                                                    + +
                                                                                    + + + Jun 17, 2008 + + + + + #5 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + MoreZitiPlease +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + +
                                                                                    + + + + +
                                                                                    + + + + + I got 1.2 for 2 +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + MoreZitiPlease, + Jun 17, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  12. + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + +
                                                                                  Know someone interested in this topic? Share this thread via Reddit, + Google+, + Twitter, or + Facebook
                                                                                  + +
                                                                                  + + + + + + + + +

                                                                                  + + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + Similar Discussions: Help me with this questions so I can review for my exam. +
                                                                                  + +
                                                                                  + +
                                                                                    + + + + +
                                                                                  1. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Need help with an exam review question + + + + (Replies: 3) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  2. + + + +
                                                                                  3. + + +
                                                                                    +
                                                                                    +

                                                                                    + + SO I have an Exam Tomorrow. Review Questions! + + + + (Replies: 3) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  4. + + + +
                                                                                  5. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Help review for exam (last question) + + + + (Replies: 5) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  6. + + + +
                                                                                  7. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Reviewing for my exam (Newton question) + + + + (Replies: 1) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  8. + + + +
                                                                                  9. + + + + +
                                                                                  10. + + +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + Loading... +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text4.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text4.html new file mode 100644 index 00000000..3ecdff27 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text4.html @@ -0,0 +1,2503 @@ + + + + + + + + + + + + + + + + + + + + + Isn't the normal acceleration always towards the center? | Physics Forums + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + +

                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                    + +
                                                                                  1. + +
                                                                                    Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
                                                                                    + + + Dismiss Notice +
                                                                                  2. + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + Dismiss Notice + +
                                                                                  + +
                                                                                  + +
                                                                                  + Join Physics Forums Today!
                                                                                  +The friendliest, high quality science and math community on the planet! Everyone who loves science is here! +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + +
                                                                                  + +

                                                                                  + + + + + + + + + +Homework Help: + +Isn't the normal acceleration always towards the center? +

                                                                                  + + + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                    + + + + + + + + +
                                                                                  1. +
                                                                                    + +
                                                                                    + + + Feb 20, 2007 + + + + + #1 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + cipotilla +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    + + + + +
                                                                                    + + + + + + + + 1. The problem statement, all variables and given/known data
                                                                                    +2. Relevant equations
                                                                                    +
                                                                                    +See attachment
                                                                                    +
                                                                                    +3. The attempt at a solution
                                                                                    +I solved the problem (on the same page as problem, written in pencil) but the direction of the acceleration that I calculated is different, I dont understand why my answer is wrong if the normal acceleration always towards the center and the tangent acceleration is suppossed to be clockwise. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    +

                                                                                    Attached Files:

                                                                                    + +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + cipotilla, + Feb 20, 2007 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  2. + + + + +
                                                                                  3. +
                                                                                    +
                                                                                    + jcsd +
                                                                                    +
                                                                                    + + +
                                                                                  4. + + + + + + + + + + + +
                                                                                  5. +
                                                                                    + +
                                                                                    + + + Feb 20, 2007 + + + + + #2 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + Doc Al +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + Staff: Mentor + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + + Yes, the radial acceleration is towards the center. But I don't see why you think your solution is different from the book's. Seems to me you are just measuring your angle from a different reference direction--they measure from the horizontal, you from the vertical. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + Doc Al, + Feb 20, 2007 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  6. + + + + + + + + + + +
                                                                                  7. +
                                                                                    + +
                                                                                    + + + Feb 21, 2007 + + + + + #3 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + cipotilla +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + +
                                                                                    + + + + +
                                                                                    + +
                                                                                    + +
                                                                                    I think I measured from the horizontal, thats why I think my answer is different from the books, see diagram. Thanks! +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    +

                                                                                    Attached Files:

                                                                                    + +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + cipotilla, + Feb 21, 2007 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  8. + + + + + + + + + + +
                                                                                  9. +
                                                                                    + +
                                                                                    + + + Feb 21, 2007 + + + + + #4 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + Doc Al +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + Staff: Mentor + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + + + + + Looks to me like your diagram is sideways, compared to the original diagram given with the problem. What you call "horizontal" appears as vertical in the original diagram. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + Doc Al, + Feb 21, 2007 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  10. + + + + + + + + + + +
                                                                                  11. +
                                                                                    + +
                                                                                    + + + Feb 21, 2007 + + + + + #5 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + cipotilla +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + + + + +
                                                                                    + + + + +
                                                                                    + + + + + You are absolutely right, drew my acceleration vectors on the right side of the pulley, where there is no conveyor belt, thats why I got confused. Ok, thanks you. +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + cipotilla, + Feb 21, 2007 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  12. + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + +
                                                                                  Share this great discussion with others via Reddit, + Google+, + Twitter, or + Facebook
                                                                                  + +
                                                                                  + + + + + + + + +

                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text5.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text5.html new file mode 100644 index 00000000..678ceca2 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text5.html @@ -0,0 +1,2621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Rigo Ride On Car Tractor Toy Kids Electric Cars 12V Battery Child Toddlers Blue - Shopnado + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  0
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  Rigo Ride On Car Tractor Toy Kids Electric Cars 12V Battery Child Toddlers Blue

                                                                                  +
                                                                                  + +
                                                                                  + Availability: + In stock + +
                                                                                  +

                                                                                  $286.00

                                                                                  + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + +Compare
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +

                                                                                  Looking for a perfect birthday or Christmas gift to surprise your little ones? The Rigo brings kids’ ride-on farm Tractor with a trailer to give your kids utmost pleasure. Our ride-on tractor with a detachable trailer has cool features, such as powerful twin motors, 7-LED headlights, and Bluetooth function for a real-like play. The functional dashboard allows you to control speed, forward/reverse, and turn on/off the music. Furthermore, the keyless button start makes for a hassle-free play experience. Your child’s safety is also assured with anti-slip tyres and a secured seat. This toy is perfect to give your children fun and imaginative playtime.

                                                                                  +

                                                                                  Please Note:
                                                                                  +1. Charge the battery on receiving even if it will not be used soon.
                                                                                  +2. Charge the battery EVERY MONTH if not in use for long periods to prevent over-discharging of the battery. This can cause irreparable damage to it.

                                                                                  +

                                                                                  Features
                                                                                  +Twin motors
                                                                                  +7 LED headlights
                                                                                  +Detachable large trailer
                                                                                  +Functional dashboard
                                                                                  +Seat with a safety belt and armrests
                                                                                  +High/low speed control
                                                                                  +Rechargeable battery
                                                                                  +USB input
                                                                                  +Bluetooth function
                                                                                  +Anti-slip tyres
                                                                                  +EN71 certified
                                                                                  +Recommended for children aged 3 years and above +

                                                                                  +

                                                                                  Specifications:
                                                                                  +Control mode: Manual
                                                                                  +Motor: 50W(2 x 25W)
                                                                                  +Battery:12V4.5AH
                                                                                  +Speed: 3-6km/h
                                                                                  +Speed mode: High/low
                                                                                  +Operating time: Up to 2 hours per full charge
                                                                                  +Load capacity: 30kg
                                                                                  +Built-in music: Yes
                                                                                  +Headlight: Yes
                                                                                  +Power indicator: Yes
                                                                                  +Seat belt: adjustable
                                                                                  +Recommended user age: 3+ years old
                                                                                  +Colour: Blue +

                                                                                  +

                                                                                  Package Content
                                                                                  +1 x Rigo Ride On Tractor
                                                                                  +1 x User Manual
                                                                                  +1 x Batter Charger

                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + + + + + + +
                                                                                  Weight10.6 kg
                                                                                  Dimensions84 × 50 × 40 cm
                                                                                  +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  shopnado up your inbox!

                                                                                  +

                                                                                  Your kids will thank you !

                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + + + + + + + + + + +

                                                                                  + + + + + + + + + + + +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  0
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + +
                                                                                  + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text6.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text6.html new file mode 100644 index 00000000..34fe1c0f --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text6.html @@ -0,0 +1,1305 @@ + + + + + + Опыт российской библиографии Сопикова, 3-я часть - "Л" | Аделанта + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + + Из книжного собрания
                                                                                  + Александра Лугачева
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  ГлавнаяКаталог книгДревние книгиИстория древних книгСтаринные книгиАнтикварные книгиКупимДоставкаАрхив сделок    
                                                                                  +
                                                                                  +
                                                                                  Путь:
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  +

                                                                                  Опыт российской библиографии, или полный словарь сочинений и переводов, напечатанных на славенском и российском языках от начала заведения типографий до 1813 года

                                                                                  +
                                                                                  + 5864. Лабиринт волшебства, или удивительные приключения восточных принцев, сочинение В. Протопоповича; Москва, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +5865. Лакировальщик, или ясное и подробное наставление о заготовлении, составлении и употреблении разного рода спиртовых и масленых лаков, и фирназов для живописцев, иконописцев, гравировальщиков, маляров, каретников, слесарей, бронзовщиков, табакерошников, и прочих всякого рода ремесленников; собрано из разных иностранных и российских практических записок Н. Осиповым; Санкт-Петербург, 1798 г. - в 12°. +
                                                                                  + +
                                                                                  +5866. Лактанция Фирмиана, нареченного христианским Цицероном, божественных наставлений семь книг, писанных к Константину Великому, - первому Христианскому Императору, с присовокуплением 10 о гневе Божием; 2) о удивительном строении человека, и 3) о кончине гонителей христианства, перевел с латинского Иван Тредьяковский; 2 части; Москва, 1783 г. - в 8°. +
                                                                                  + +
                                                                                  +5867.
                                                                                  Ламберта Босия, краткое описание правления Афинской республики; перевел с латинского прокурор Иван Мошков; Санкт-Петербург, 1779 г. - в 8°. +
                                                                                  + +
                                                                                  +5868. Ламех и Цилла, Идиллия г. Геснера; перевод с немецкого; Санкт-Петербург, 1774 г. - в 8°. +
                                                                                  + +
                                                                                  +5869. Лангедокская путешественница, или приключение г-жи Дитри; перевод с французского; 2 части; Москва, 1801 г. - в 8°. +
                                                                                  + +
                                                                                  +5870. Ландшафт моих воображений; сочинение А. Кропотова; Санкт-Петербург, 1803 г. - в 12°. +
                                                                                  + +
                                                                                  +5871. Ларчик (сокровище хранительный) для всех влюбленных и желающих вступить в брак, и проч., сочинение младшего Богатского; перевод с немецкого; Москва, 1803 г. - в 12°. +
                                                                                  + +
                                                                                  +5872. Латинская учебная книга, с французского переводом; Москва, 1809 г. - в 8°. +
                                                                                  + +
                                                                                  +5873. Латинские первоначальные слова; Санкт-Петербург - в 8°. +
                                                                                  + +
                                                                                  +5874.
                                                                                  Лаура, или поцелуй в своих действиях; сочинение г. Геснера; перевод с немецкого; Москва, 1784 г. - в 8°. +
                                                                                  + +
                                                                                  +5875. Леандр (бедный), или автор без риторики, сочинение Николая Брусилова; Санкт-Петербург, 1805 г. - в 12°. +
                                                                                  + +
                                                                                  +5876. Левсил, русский богатырь; российское сочинение в стихах, подражание Илье Муромцу; Санкт-Петербург, 1807 г. - в 12°. +
                                                                                  + +
                                                                                  +5877. Легкомыслов, получивший здравый рассудок, отрывки ироид, и стихотворение г. Адиссона на Ризвикский мир; перевод с французского; Санкт-Петербург, 1777 г. - в 8°. +
                                                                                  + +
                                                                                  +5878. Леонард и Термилия, или злорадная судьба двух любовников, перевод с французского; Москва, 1784 г. - в 8°. +
                                                                                  + +
                                                                                  +5879. Лекарство (верное) от подагры, перевел с французского Василий Вороблевский; Москва, 1779 г. - в 8°. +
                                                                                  + +
                                                                                  +5880.
                                                                                  Лекарство (верное) от предубеждения умов; перевел с немецкого Михаил Антоновский; Санкт-Петербург, 1798 г. - в 12°. +
                                                                                  + +
                                                                                  +5881. Лекарство для болящей души, или правила, открывающие путь к достижению царствия небесного, собранные из разных писателей, а особенно из сочинения Фомы Кемпийского, под названием о последовании Иисусу Христу, Иваном Михайловым; Москва, 1799 г. - в 12°. +
                                                                                  + +
                                                                                  +5882.
                                                                                  Лекарство от задумчивости и бессонницы, или настоящие русские сказки; Санкт-Петербург, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +5883. То же, издание второе; Санкт-Петербург, 1793 г. - в 8°. +
                                                                                  + +
                                                                                  +5884. Лекарство от праздности и скуки, или забавное препровождение праздного времени угадывать на картах; Москва, 1792 г. - в 8°. +
                                                                                  + +
                                                                                  +5885. Лекарственник, или избранное врачебное веществословие, показывающее употребительнейшие, как простые, так и составные лекарства, действующие различным образом в теле человеческом, сочиненный г. Пернером; перевод с латинского; Москва, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +5886. Лекарь (псовый), или описание собачьих болезней, с показанием вернейших и надежнейших средств для лечения их; перевел с немецкого Н.О.; Санкт-Петербург, 1792 г. - в 8°. +
                                                                                  + +
                                                                                  +5887. Лексикон (географический) Российского Государства, сочиненный Ф. Полуниным, изданный г. Миллером; Москва, 1773 г. - в 8°. +
                                                                                  + +
                                                                                  +5888. Лексикон (полный географический), содержащий в себе по азбучному порядку подробное описание всех частей света, собранный г. Лангером; 3 части; Москва, 1791 г. - в 12°. +
                                                                                  + +
                                                                                  +5889.
                                                                                  Лексикон вояжеров французский с немецким и латинским, содержащий в себе все слова французского языка, также все в науках, художествах и ремеслах употребительные названия, собственные имена людей, земель, городов, морей и рек; переложенный на российский язык Сергеем Волчковым; 2 тома; Санкт-Петербург, 1755-1768 гг. - в 8°. +
                                                                                  + +
                                                                                  +5890. То же, издание второе, исправленное; 2 части; Санкт-Петербург, 1778 г. - в 4°. +
                                                                                  + +
                                                                                  +5891. То же, издание третье, дополненное, в трех частях; Санкт-Петербург, 1795 г. - в 4°. +
                                                                                  + +
                                                                                  +5892. Лексикон (иконологический), или руководство к познанию живописного и разного художества, медалей, эстампов, с описанием, взятым из разных древних и новых стихотворцев, и проч.; перевод с французского; Санкт-Петербург, 1763 г. - в 8°. +
                                                                                  + +
                                                                                  +5893. То же, издание второе; Санкт-Петербург, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +5894. Лексикон греко-российско-французский, издал Греческого Московского монастыря Иеромонах Досифей Кома; 2 части; Москва, 1810 г. - в 4°. +
                                                                                  + +
                                                                                  +5895. Лексикон латино-иллирический, и немецко-венгерский; сочинение г. Ямбрисиха; Заграбия, 1742 г. - в 4°. +
                                                                                  + +
                                                                                  +5896.
                                                                                  Лексикон латинский Целляриев, с российским и немецким переводом; Санкт-Петербург, 1742 г. - в 8°. +
                                                                                  + +
                                                                                  +5897. То же, издание второе; Санкт-Петербург, 1768 г. - в 8°. +
                                                                                  + +
                                                                                  +5898. То же, издание третье; Санкт-Петербург, 1781 г. - в 8°. +
                                                                                  + +
                                                                                  +5899. То же, издание четвертое; Санкт-Петербург, 1794 г. - в 8°. +
                                                                                  + +
                                                                                  +5900. То же, нового издания; Москва, в типографии Священного Синода, 1810 г. - в 8°. +
                                                                                  + +
                                                                                  +5901. Лексикон (латинский) Геснеров, с российским переводом, и с приложением реестра по азбучному порядку российских слов; Москва, 1768 г. - в 8°. +
                                                                                  + +
                                                                                  +5902. То же, издание второе; Москва, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +5903. То же, издание третье, вновь исправленное и умноженное прибавлением греческих слов, профессором Дмитрием Синковским; 3 части; Москва 1796 г. - в 8°. +
                                                                                  + +
                                                                                  +5904.
                                                                                  Лексикон латинский, с российским переводом, из лучших латинских писателей собранный Фомою Розоновым; Москва, 1797 г. - в 8°. +
                                                                                  + +
                                                                                  +5905. То же, издание второе; Москва, 1805 г. - в 8°. +
                                                                                  + +
                                                                                  +5906. То же, издание третье, исправленное и дополненное; Москва, 1808 г. - в 8°. Сей Лексикон есть точный перевод латино-французского Будотова Лексикона. +
                                                                                  + +
                                                                                  +5907.
                                                                                  Лексикон, или словарь немецко-российский и российско-немецкий, сочиненный Иваном Геймом; 2 части; Рига, 1801 г. - в 8°. +
                                                                                  + +
                                                                                  +5908. То же, издание второе; Лейпциг, 1803-1805 гг. - в 8°. +
                                                                                  + +
                                                                                  +5909.
                                                                                  Лексикон (новый), на немецком, французском, латинском, итальянском и российском языках, изданный М. Гавриловым; Москва, 1781 г. - в 8°. +
                                                                                  + +
                                                                                  +5910. То же, издание второе; Москва, 1789 г. - в 8°. +
                                                                                  + +
                                                                                  +5911. Лексикон немецкий Вейсманов, с латинским, переложенный на российский язык Сергеем Волчковым; Санкт-Петербург, 1731 г. - в 4°. +
                                                                                  + +
                                                                                  +5912. То же, издание второе, вновь пересмотренное и умноженное; Санкт-Петербург, 1781 г. +
                                                                                  + +
                                                                                  +5913.
                                                                                  То же, издание третье; Санкт-Петербург, 1799 г. - в 4°. +
                                                                                  + +
                                                                                  +5914. Лексикон любовный; перевод с французского; Санкт-Петербург, 1768 г. - в 8°. +
                                                                                  + +
                                                                                  +5915. То же, издание второе; Москва, 1779 г. - в 8°. +
                                                                                  + +
                                                                                  +5916.
                                                                                  Лексикон исторический, географический, политический и гражданский Российского Государства; сочинение В.Н. Татищева; 3 части; Санкт-Петербург, 1793 г. - в 8°. +
                                                                                  + +
                                                                                  +5917. Лексикон немецкий и российский (полный), из большого грамматикально-критического словаря г. Аделунга, составленный обществом ученых людей; 2 части; Санкт-Петербург, 1798 г. - в 8°. Начальная цена 10 рублей, но ныне гораздо дороже. +
                                                                                  + +
                                                                                  +5918. Лексикон польский (общий), или библейный словарь, сочиненный К. Кондратовичем; Санкт-Петербург, 1775 г. - в 4°. +
                                                                                  + +
                                                                                  +5919.
                                                                                  Лексикон простого греческого языка, с российским переводом; Москва, 1783 г. - в 8°. +
                                                                                  + +
                                                                                  +5920.
                                                                                  Лексикон (новый), или словарь пятизначный, на французском, итальянском, немецком, латинском и российском языках, содержащий в себе полное собрание всех употребительных французских слов, с точным их на другие четыре диалекта переводом и объяснением различных знаменований и всех грамматических слову приличествуют, сообразно словарю французского академии; изданный И. Соцом; 2 части; Москва, 1784-1786 гг. - в 4°. +
                                                                                  + +
                                                                                  +5921. Лексикон (краткий) Венерониев, на французском, итальянском, немецком и латинском языках; Москва, 1771 г. - в 8°. +
                                                                                  + +
                                                                                  +5922.
                                                                                  Лексикон (краткий) мифологический; сочинение Михайла Чулкова; Санкт-Петербург, 1767 г. - в 8°. +
                                                                                  + +
                                                                                  +5923. Лексикон по алфавиту российских слов о разных произрастаниях, то есть о древах, травах, цветах, семенах, огородных и полевых кореньях; перевел с латинского К. Кондратович; Санкт-Петербург, 1781 г. - в 8°. +
                                                                                  + +
                                                                                  +5924. Лексикон российский с немецким, и немецкий с российским; изданный Яковом Родде; 2 части; Рига, 1784 г. - в 8°. +
                                                                                  + +
                                                                                  +5925. Лексикон российский с немецким и латинским; сочиненный г. Гелтергофом; 2 части; Москва, 1778 г. - в 8°. +
                                                                                  + +
                                                                                  +5926. Лексикон, или Целляриус Российский, с немецким переводом; издан. Г. Гелтергофом; Москва, 1771 г. - в 8°. +
                                                                                  + +
                                                                                  +5927.
                                                                                  Лексикон, или Целляриус немецкий, с российским переводом; изданный Г. Гелтергофом; Москва, 1765 г. - в 8°. +
                                                                                  + +
                                                                                  +5928.
                                                                                  Лексикон российский и французский, в котором находятся почти все слова российского алфавита; 2 части; Санкт-Петербург, 1762 г. +
                                                                                  + +
                                                                                  +5929.
                                                                                  Лексикон французский Целляриус, с приложением по алфавиту российским слов; изданный г. Гелтергофом; Москва, 1769 г. - в 8°. +
                                                                                  + +
                                                                                  +5930.
                                                                                  То же, издание второе; Москва, 1782 г. - в 8°. +
                                                                                  + +
                                                                                  +5931.
                                                                                  Лексикон (новый полный), французско-российский, с последнего издания лексикона Французского Академии переведенный собраниям ученых людей; издан иждивением Ивана Вейтбрехта; 2 части; Санкт-Петербург, 1786 г. - в 4°. +
                                                                                  + +
                                                                                  +5932. То же, издание второе, исправленное и дополненное И. Татищевым; 2 части; Санкт-Петербург, 1798 г. - в 8°. Сей перевод, противу французского подлинника, весьма не полон. +
                                                                                  + +
                                                                                  +5933. Лексикон рифмальный, или славяно-российского витийства словарь, сочинено Иваном Тодорским; Москва, 1800 г. - в 4°. Сей книги видел я первый только лист напечатанный, а издана ли она вся, неизвестно. +
                                                                                  + +
                                                                                  +5934. Лексикон французского (сокращенный), с российским переводом; издан Иваном Новиковым; Москва, 1802 г. - в 8°. +
                                                                                  + +
                                                                                  +5935. Лекции Петра Рахманова о диффиренциальном исчислении; издано Николаем Тенигиным; Санкт-Петербург, 1810 г. - в 8°. +
                                                                                  + +
                                                                                  +5936. Лекции о разных предметах, касающихся до механики, гидравлики и гидростатики, как то матери и ее свойствах, о центральных силах, о механических силах, о мельницах, о тяжелых колесах, о машине колотить сваи, и о гидравлических и гидростатических машинах вообще; соч. г. Фергуссоном; перевод с английского Льва Собакина, с присовокуплением к ним собственной переводчика лекции о огненных машинах, с фигурами; Санкт-Петербург, 1787 г. - в 8°. +
                                                                                  + +
                                                                                  +5937. Лекции о огненных машинах; сочинено механиком Львом Собакиным, с фигурами; Москва, 1788 г. - в 8°. Помещена также при конце переведенной им книги: Лекции о разных предметах, и проч. +
                                                                                  + +
                                                                                  +5938. Лемана ( I ) пробирное искусство, перевод с немецкого; Санкт-Петербург, 1775 г. - в 8°. +
                                                                                  + +
                                                                                  +5939. Его же, о фосфорах, их разном приготовлении, пользе и проч., перевод с нем.; Санкт-Петербург, 1780. +
                                                                                  + +
                                                                                  +5940. Ленвиль, или сыновняя горячность. +
                                                                                  + +
                                                                                  +5941.
                                                                                  Леокадия, испанская повесть, сочинение Флориана, перевод с французского; Санкт-Петербург, 1794 г. - в 8°. Оной же перевод Павла Львова, помещен во 2 части Приятного препровождения времени. +
                                                                                  + +
                                                                                  +5942.
                                                                                  Лесажа сочинения: Бакалавр Саламанский, или похождение Дона Херубина де ла Ронда; перевод с французского Андрея Нартова; 2 части; Санкт-Петербург, 1763 г. - в 8°. +
                                                                                  + +
                                                                                  +5943. Лесажа сочинения: Повесть о хромоногом бесе; переведена с французского Дмитрием Легким и Дмитрием Мокеевым; 2 части; Санкт-Петербург, 1775 г. - в 8°. +
                                                                                  + +
                                                                                  +5944. То же, издание второе; Санкт-Петербург, 1775 г. - в 8°. +
                                                                                  + +
                                                                                  +5945. То же, издание третье; Санкт-Петербург, 1785 г. - в 8°. +
                                                                                  + +
                                                                                  +5946. Лесажа сочинения: Похождение Жильблаза де Сантилланы; перевел с французского Василий Теплов; 4 части; Санкт-Петербург, 1754 г. - в 8°. Это первое издание сей книги, оно лучшее из всех. +
                                                                                  + +
                                                                                  +5947.
                                                                                  То же, издание второе; Санкт-Петербург, 1761 г. - в 12°. +
                                                                                  + +
                                                                                  +5948.
                                                                                  То же, издание третье; Санкт-Петербург, 1768 г. - в 12°. +
                                                                                  + +
                                                                                  +5949. То же, издание четвертое; Санкт-Петербург, 1775 г. - в 12°. +
                                                                                  + +
                                                                                  +5950. То же, издание пятое; Санкт-Петербург, 1783 г. - в 12°. +
                                                                                  + +
                                                                                  +5951. То же, издание шестое; Санкт-Петербург, 1792 г. - в 12°. +
                                                                                  + +
                                                                                  +5952.
                                                                                  То же, издание седьмое; Санкт-Петербург, 1801 г. - в 12°. Это издание из всех самое худшее. +
                                                                                  + +
                                                                                  +5953. То же, издание восьмое; Санкт-Петербург, 1808 г. - в 12°. +
                                                                                  + +
                                                                                  +5954. Лесажа сочинения: Похождение Естеванилла Гонсалеса, прозванного весельчаком, перевод с французского; 2 части; Санкт-Петербург, 1765 г. - в 8°. +
                                                                                  + +
                                                                                  +5955. Леста, или днепровская русалка, романтическая повесть; вольный перевод с немецкого; 4 части; с картинками; Москва, 1806 г. - в 12°. +
                                                                                  + +
                                                                                  +5956. Летучая мышь, комическая повесть; перевод с немецкого; Москва, 1805 г. - в 12°. +
                                                                                  + +
                                                                                  +5957. Лечебник (детский); сочинение славного Монтпельерского врача в пользу детей; перевод с французского; 2 части; Москва, 1793 г. - в 8°. +
                                                                                  + +
                                                                                  +5958. Лечебник, или практическая карманная книга для врачей, особенно полковых; сочинение доктора и профессора Геккера; перевел с немецкого лекарь Мартын Бруннер; Москва, 1840 г. - в 12°. +
                                                                                  + +
                                                                                  +5959.
                                                                                  Лечебник (детский краткий домашний), сочинение Г. Гинтера; Москва, 1802 г. - в 12°. +
                                                                                  + +
                                                                                  +5960.
                                                                                  Лечебник (домашний), или простой способ лечения болезней, сочинено Х. Пекеном, перевел с немецкого Алексей Протасов; Санкт-Петербург, 1765 г. - в 8°. Потом многократно вновь был издаваем в Санкт-Петербурге и единожды в Москве. +
                                                                                  + +
                                                                                  +5961. То же, исправленный и знатно дополненный Матвеем Пекеном; 2 части; Москва, 1797 г. - в 8°. +
                                                                                  + +
                                                                                  +5962. Лечебник (карманный конский, опытный русский), состоящий из 160 простых, дешевых и лучших лекарств; Москва, 1807 г. - в 12°. +
                                                                                  + +
                                                                                  +5963. Лечебник (карманный), содержащий в себе краткое, но ясное описание признаков, причин и способов, к излечению внутренних и наружных болезней, приключающихся телу человеческому, с показанием действий и приемов сложных и простых лекарств, выбран из славных врачей, и по алфавиту расположен доктором г. Эллиотом; переведен с английского на российский язык, с присовокуплением своих рецептов, и по алфавиту российскому распределен г. Пищековым; Санкт-Петербург, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +5964. То же, издание второе; Санкт-Петербург, 1794 г. - в 12°. +
                                                                                  + +
                                                                                  +5965. Лечебник, или наставления, относительный к деятельной врачебной науке; сочинено бароном Штерком, для пользы лекарей, находящихся в армиях и небольших городах; перевод с латинского; 2 части; Москва, 1789 г. - в 8°. +
                                                                                  + +
                                                                                  +5966. Лечебник, или подробное описание любострастных болезней и врачевания их, сочинение доктора Сезана; перевод с французского Петра Виноградского; Москва, 1809 г. - в 12°. +
                                                                                  + +
                                                                                  +5967.
                                                                                  Лечебник (конский), или совершенное наставление, как и чем вылечивать часто бывающие конские болезни, собрано из разных авторов; Москва, 1800 г. - в 12°. +
                                                                                  + +
                                                                                  +5968.
                                                                                  Лечебник (опытный конский) или с успехом испытанные лекарства; Москва, 1796 г. - в 12°. +
                                                                                  + +
                                                                                  +5969.
                                                                                  Лечебник (полный и всеобщий домашний), сочиненный как для предохранения здравия надежнейшими средствами, так и для пользования болезней всякого рода, с показанием причин, признаков, и более того распознавательных, и проч., англинское сочинение Г. Бухана; перевод с французского; 5 частей; Москва, 1790-1791 гг. - в 4°. +
                                                                                  + +
                                                                                  +5970. То же, издание второе; 5 частей; Санкт-Петербург, 1809-1813 гг. - в 4°. +
                                                                                  + +
                                                                                  +5971. Лечебник (полный и всеобщий), или полное и полезное врачебное наставление всех возможных признаков, всех причин и разных средств к излечению всяких как внутренних, так и наружных болезней, сочинение Г. Рибеля, переведено с латинского Ф. Барсук-Моисеевым; 7 частей, с 24 анатомическими фигурами; Москва, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +5972. Лечебник простонародный, содержащий в себе пользования разных часто приключающихся болезней домашними лекарствами, без помощи лекаря, и важнейшие наставления о предупреждении их, и хранении всего здоровья, перевод с французского князя П. Енгалычева; Москва, 1799 г. - в 8°. +
                                                                                  + +
                                                                                  +5973. То же, издание второе; Москва, 1801 г. - в 8°. +
                                                                                  + +
                                                                                  +5974.
                                                                                  То же, издание третье; Москва, 1808 г. - в 8°. +
                                                                                  + +
                                                                                  +5975. Лечебник сельский, или словарь врачевания болезней, бываемых в роде человеческом, также в роде скотском и птиц домашних; собранный М. Чулковым; 5 частей; Москва, 1789-1790 гг. - в 4°. Сие сочинение не окончено; оно расположено азбучным порядком и доведено только до буквы «П». +
                                                                                  + +
                                                                                  +5976.
                                                                                  Лечебник лошадиный, или рецепты для излечения лошадей от болезней; Санкт-Петербург, 1778 г. - в 12°. +
                                                                                  + +
                                                                                  +5977.
                                                                                  Лечебник конский (русский), содержащий познание конских признаков, статей, лет, ковки и анатомии болезней конских и лечения их; собирание к тому нужных трав, составления сложных лекарств, наставление подробное к содержанию конского завода, и проч., сочинение Г. Эвеста; 2 части; Москва, 1795 г. - в 8°. +
                                                                                  + +
                                                                                  +5978.
                                                                                  То же, издание второе; Москва, 1809 г. - в 8°. +
                                                                                  + +
                                                                                  +5979.
                                                                                  Лечебник (новый полный методический) конский, и других домашних животных, как то: овец, коз, свиней, собак, кошек и домашних птиц, собранный из разных вернейших сочинителей, с собственными некоторыми примечаниями, и расположенный правильным образом, и изданный лекарем Иваном Андреевским; 3 части; Москва, 1793 г. - в 8°. +
                                                                                  + +
                                                                                  +5980.
                                                                                  Лечебник скотский, или показание средств, служащих к излечению всяких в домашнем скоте и птицах, а особенно в лошадях случающихся болезней; сочинено г. Фишером; перевод с немецкого; Москва, 1774 г. - в 8°. +
                                                                                  + +
                                                                                  +5981.
                                                                                  То же, издание второе; Москва, 1788 г. - в 8°. +
                                                                                  + +
                                                                                  +5982.
                                                                                  Лечение сапа и воссы, отчет, данный обществу земледелия Сенского Департамента г. Колленем, перевод с французского; Москва, 1812 г. - в 8°. +
                                                                                  + +
                                                                                  +5983.
                                                                                  Либман, немецкая повесть, из сочинений Г. Арнода; перевод с французского Моисея Смирнова; Санкт-Петербург, 1781 г. - в 12°. +
                                                                                  + +
                                                                                  +5984.
                                                                                  Либо пан, либо пропал, или удивительная жизнь и тридцатилетнее заключение Иоанна Норкроса, одного английскогоийского капитана, самим им писанная в темнице, перевод с немецкого; Москва, 1796 г. - в 8°. +
                                                                                  + +
                                                                                  +5985. Лекей, или круг словесности, древней и новой; сочинение Г. Ла Гарпа; переведенный с французского Членами Российской Академии; 5 частей; Санкт-Петербург, 1810-1814 гг. - в 8°. Первую часть переводил Петр Карабанов, вторую и третию – Петр Соколов, четвертую – Александр Никольский, пятую – Дмитрий Соколов. +
                                                                                  + +
                                                                                  +5986. Лилия, российская повесть, взятая из недавно случившегося происшествия; сочинение А. Попова; Москва, 1802 г. - в 8°. +
                                                                                  + +
                                                                                  +5987. Ликующая Россия в дни мира с Портой Оттоманской, стихотворение; Санкт-Петербург, 1792 г. - в 4°. +
                                                                                  + +
                                                                                  +5988.
                                                                                  Лира, или собрание разных в стихах сочинений и переводов некоторого муз любителя (И. Богданова); Санкт-Петербург, 1774 г. - в 4°. +
                                                                                  + +
                                                                                  +5989.
                                                                                  Лира, то есть собрание стихотворений В.Б.; Москва, 1804 г. - в 12°. +
                                                                                  + +
                                                                                  +5990.
                                                                                  Лира (пустынная) забвенного сына природы; сочинение И.В.; Санкт-Петербург, 1807 г. - в 8°. +
                                                                                  + +
                                                                                  +5991. Лобах, счастливый отец, разговорная повесть, сочиненная младшим Шлейснером; перевод с немецкого; Москва, 1803 г. - в 8°. +
                                                                                  + +
                                                                                  +5992. Логика Аббата Кондильяка; перевел с французского Ал. Гронский, с фигурами; Санкт-Петербург, 1792 г. - в 8°. +
                                                                                  + +
                                                                                  +5993.
                                                                                  Логика, или умственная наука, руководствующая к достижению истины; сочинение Аббата Кондильяка, перевел с французского Тимофей Осиповский; Москва, 1805 г. - в 8°. Это друое сочинение сго автора, совсем различное от предыдущего. +
                                                                                  + +
                                                                                  +5994. Логика и риторика, кратким и для детского возраста удобопонятным образом расположенная, и в пользу юношества изданная Александром Никольским; Санкт-Петербург, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +5995.
                                                                                  Логика (краткая), или умословие, служащая в пользу российского юношества; переведена с немецкого г. Андреяновским; Москва, 1788 г. - в 8°. +
                                                                                  + +
                                                                                  +5996.
                                                                                  Логика (краткая), изданная магистром Петром Богдановым; Москва, 1806 г. - в 12°. +
                                                                                  + +
                                                                                  +5997.
                                                                                  Логика, или умственная наука, т.е. прямое употребление разума в исследовании истины, со многими правилами для предохранения себя от заблуждения как в учении, так и в общей жизни; сочинение Г. Ватса; перевод с французского; Санкт-Петербург, 1807 г. - в 8°. +
                                                                                  + +
                                                                                  +5998.
                                                                                  Логика (общенародная), или исследование науки умственной, приноравливаясь общему познанию людей; перевод с немецкого; Москва, 1789 г. - в 8°. +
                                                                                  + +
                                                                                  +5999. Логика и риторика для дворян, изданная Г. Мочульским; Москва, 1789 г. - в 8°. +
                                                                                  + +
                                                                                  +6000. Логика, или умственная наука; Москва, 1809 г. - в 8°. +
                                                                                  + +
                                                                                  +6001. Логика и риторика (краткая), для учащихся в российских духовных училищах; Москва, 1803 г. - в 8°. +
                                                                                  + +
                                                                                  +6002.
                                                                                  Логика (краткая), или умословие, служащее в пользу российского юношества; Москва, 1788 г. - в 12°. +
                                                                                  + +
                                                                                  +6003. Лодоик, или нравственные наставления для пользы и увеселения юношества; перевел с французского Николай Анненский; 2 части; Санкт-Петербург, 1799 г. - в 8°. +
                                                                                  + +
                                                                                  +6004.
                                                                                  Ложные друзья; перевод с французского; Москва, 1807 г. - в 12°. +
                                                                                  + +
                                                                                  +6005.
                                                                                  Ложный похититель Мальтийского Ордена, кавалер д’Аббевиль, истинная повесть, перевел с французского Василий Псиол; Москва, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +6006.
                                                                                  Ложный Петр III, или жизнь, характер и злодеяния бунтовщика Емельки Пугачева, в 2 частях, с его портретом; перевод с немецкого; Москва, 1809 г. - в 12°. Французский подлинник сего сочинения напечатан в Амстердаме в 1776 году. +
                                                                                  + +
                                                                                  +6007.
                                                                                  Ложный похититель царской власти, азиатская повесть; перевод с французского; 2 части; Москва, 1807 г. - в 12°. Другое заглавие, см. Паша, или удары случая и фортуны. +
                                                                                  + +
                                                                                  +6008.
                                                                                  Лоимология, или описание моровой язвы, ее существа, происшествия, причин, поражения и производства припадков, с показанием образа предохранения и врачевания этой скорби; сочинение Ивана Виена; Санкт-Петербург, 1787 г. - в 4°. +
                                                                                  + +
                                                                                  +6009.
                                                                                  Локка (Иоанна), о воспитании детей; перевел с французского профессор Николай Поповский; 2 части; Москва, 1760 г. - в 8°. +
                                                                                  + +
                                                                                  +6010. То же, издание второе; Москва, 1788 г. - в 8°. +
                                                                                  + +
                                                                                  +6011.
                                                                                  Ломмера, о роговой дуге, или новом виде серебряной руды; перевод с немецкого; Санкт-Петербург, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +6012.
                                                                                  Ломоносова сочинения: Древняя Российская История, от начала народа до кончины Великого князя Ярослава I или до 1054 года; Санкт-Петербург, 1766 г. - в 4°. Немецкий перевод Хр. Бакмейстера, Рига, 1763 г. - в 8°. Французский перевод с немецкого Бакмейстерова Г-на Эйду, Париж, 1769 г. - в 8°. +
                                                                                  + +
                                                                                  +6013. Ломоносова сочинения: Краткий российский летописец, с родословием царствующего дома; Санкт-Петербург, 1760 г. - в 8°. Немецкий перевод Якова Штелина, Рига, 1767 г. - в 8°. И вторично, там же, 1771 г. - в 8° +
                                                                                  + +
                                                                                  +6014.
                                                                                  Ломоносова сочинения: Краткое руководство красноречию, или риторика; Санкт-Петербург, 1748 г. - в 8° +
                                                                                  + +
                                                                                  +6015. То же, издание второе, исправленное сочинителем; Москва, 1759 г. - в 4°. Это лучшее издание сей книги. +
                                                                                  + +
                                                                                  +6016. То же, нового издания; Санкт-Петербург, 1778 г. - в 8°. +
                                                                                  + +
                                                                                  +6017. То же, издание шестое; Санкт-Петербург, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +6018.
                                                                                  То же, издание восьмое; Санкт-Петербург, 1805 г. - в 8°. +
                                                                                  + +
                                                                                  +6019. То же, издание девятое; Санкт-Петербург, 1810 г. - в 8°. +
                                                                                  + +
                                                                                  +6020. Первые основания металлургии, или рудных дел; с фигурами; Санкт-Петербург, 1763 г. - в 8°. +
                                                                                  + +
                                                                                  +6021.
                                                                                  То же, издание второе; Санкт-Петербург, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +6022.
                                                                                  Ломоносова сочинения: Письмо поздравительное Императрице Екатерине II, на возвращение из Лифляндии; Санкт-Петербург, 1764 г. - в 4°. +
                                                                                  + +
                                                                                  +6023.
                                                                                  Ломоносова сочинения: Поэма (ироническая) Петр Великий, песнь I и II; Санкт-Петербург, 1760 г. - в 4°. +
                                                                                  + +
                                                                                  +6024. Ломоносова сочинения: Рассуждение о жидкости и твердости тел; Санкт-Петербург, 1749 г. - в 4°. Латинский перевод, Санкт-Петербург, 1760 г. - в 4°. +
                                                                                  + +
                                                                                  +6025.
                                                                                  Ломоносова сочинения: Рассуждение о большей точности морского пути; Санкт-Петербург, 1751 г. - в 4°.Латинский перевод, Санкт-Петербург, 1759 г. - в 4°. +
                                                                                  + +
                                                                                  +6026. Ломоносова сочинения: Слово похвальное Императрице Елизавете Петровне; Санкт-Петербург, 1749 г. - в 4° и 8°. Латинский перевод самого сочинителя помещен во 2 части его сочинения московского издания. +
                                                                                  + +
                                                                                  +6027.
                                                                                  Ломоносова сочинения: Слово о пользе химии; Санкт-Петербург, 1751 г. - в 4°. Латинский перевод Г. Козицкого, Санкт-Петербург, 1751 г. - в 4°. +
                                                                                  + +
                                                                                  +6028.
                                                                                  Ломоносова сочинения: Слово о явлениях воздушных, от электрической силы происходящих; с фигурами; Санкт-Петербург, 1753 г. - в 4°. Латинский перевод, Санкт-Петербург, 1754 г. - в 4°. +
                                                                                  + +
                                                                                  +6029.
                                                                                  Ломоносова сочинения: Слово похвальное Императору Павлу Великому; Санкт-Петербург, 1755 г. - в 4° и 8°. Французский перевод Барона Чуди, помещен во 2-й части его сочинений Московского издания. +
                                                                                  + +
                                                                                  +6030.
                                                                                  Ломоносова сочинения: Слово о происхождении света, новую теорию о цветах представляющее; Санкт-Петербург, 1756 г. Латинский перевод, Санкт-Петербург, 1761 г. - 4°. +
                                                                                  + +
                                                                                  +6031. Ломоносова сочинения: Слово о рождении металлов от трясения земли; Санкт-Петербург, 1757 г. Латинский перевод, Санкт-Петербург, 1757 г. - 4°. +
                                                                                  + +
                                                                                  +6032. Ломоносова сочинения: Собрание разных сочинений, в стихах и прозе; книга первая; Санкт-Петербург, 1751 г. - в 8°. +
                                                                                  + +
                                                                                  +6033.
                                                                                  То же, издание второе, с прибавлениями, с портретом автора и фигурами; Москва, 1757 г. - в 4°. В сем издании помещены шесть слов, говоренных им в торжественных Академических собраниях. +
                                                                                  + +
                                                                                  +6034.
                                                                                  То же, издание третье, книга 1 и 2; Санкт-Петербург, 1758 г. - в 8°. +
                                                                                  + +
                                                                                  +6035. То же, издание четвертое; Санкт-Петербург, 1768 г. - в 8°. В сих двух изданиях находятся все его стихотворения, а из прозаических сочинений только два похвальных слова – Императрице Елисавете Петровне и Императору Петру Великому. Первая книга сих сочинеий потом неоднократно в Санкт-Петербурге вновь была издаваема. +
                                                                                  + +
                                                                                  +6036.
                                                                                  Ломоносова сочинения: Собрание разных сочинений, в стихах и прозе, собрано и издано ректором Московской Академии Архимандритом Дамаскиным; 3 части, с портретом автора; Москва, 1778 г. - в 8°. +
                                                                                  + +
                                                                                  +6037.
                                                                                  То же, издание второе; Санкт-Петербург, 1803 г. - в 8°. В сем издании помещен перевод его: Описание кометы. +
                                                                                  + +
                                                                                  +6038.
                                                                                  Ломоносова сочинения: Собрание (полное) всех сочинений, в стихах и прозе, с приобщением жизни сочинителя, и с прибавлением еще нигде не напечатанных творений; 6 частей; с фигурами; Санкт-Петербург, 1784-1787 гг. - в 4°. +
                                                                                  + +
                                                                                  +6039.
                                                                                  То же, издание второе; Санкт-Петербург, 1795-1797 гг. - в 4°. +
                                                                                  + +
                                                                                  +6040.
                                                                                  То же, издание третье; Санкт-Петербург, 1803-1804 гг. - в 4°. Первое издание добротою бумаги и чистотою оттиска преимущественнее двух последних. +
                                                                                  + +
                                                                                  +6041.
                                                                                  Ломоносова сочинения: Трагедия Демофонт, в 5 действиях; Санкт-Петербург, 1750 г. - в 8°. +
                                                                                  + +
                                                                                  +6042.
                                                                                  Ломоносова сочинения: Трагедия Темира и Селим, в 5 действиях; Санкт-Петербург, 1751 г. - в 8°. +
                                                                                  + +
                                                                                  +6043. Лорензо Старк, семейственная картина; сочинение Г. Энгеля; перевод с немецкого; 2 части; Москва, 1808 г. - в 8°. +
                                                                                  + +
                                                                                  +6044. Лоримон, или человек, каков он есть; сочинение Г. Арнода, перевод с французского; 6 частей; с картинками; Москва, 1810 г. - в 12°. +
                                                                                  + +
                                                                                  +6045. Лохера (Максимилиана), практические наблюдения, которые производил он в больнице святого Марка над любострастной болезнью, с ее ужасными припадками, пользованной без произведения селевации или слюнотечения, и проч., перевел с латинского Фома Барсук Моисеев; Москва, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +6046. Лоция, или морской предводитель, содержащий в себе описание фарватеров и входов в порты в Финском заливе, Балтийском море, Зунде и Скагераке находящихся; сочинено в 1750 году морским капитаном А. Нагаевым; 2 части; Санкт-Петербург, 1789 г. - в 8°. +
                                                                                  + +
                                                                                  +6047.
                                                                                  Лоция Категата, содержащий описание маяков, промеров, банок и мелей, вместе с планами разных гаваней, проспектов и видов берега, переведенные с английского С. Сполоховым; Санкт-Петербург, 1806 г. - в 4°. +
                                                                                  + +
                                                                                  +6048. Лоция, или морской путеводитель по Азовскому и Черному морям; сочинение флота капитана-лейтенанта И. Будищева; Санкт-Петербург, 1808 г. - в 4°. +
                                                                                  + +
                                                                                  +6049. Луиза Г***, или торжество невинности, истинная повесть, перевод с немецкого; 2 части; Москва, 1787 г. - в 8°. +
                                                                                  + +
                                                                                  +6050. Луиза, или хижина среди мхов; перевод с французского; 2 части; Москва, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +6051.
                                                                                  Луиза, или власть добродетели женского пола, нравоучительная повесть; перевел с французского Иван Шальт; Санкт-Петербург, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +6052.
                                                                                  Лукиана Самосатянина, разговоры мертвых, переведены с греческого И. Сидоровским и П. Похомовым; 3 части; Санкт-Петербург, 1775 г. - в 8°. +
                                                                                  + +
                                                                                  +6053. Луцилия, или Арендарка маленького Доминика, нравоучительная сказка, перевела с французского Катерина Воейкова; Москва, 1781 г. - в 8°. +
                                                                                  + +
                                                                                  +6054. Луция и Мелания, или две великодушные сестры, сочинение Г. Арнода; перевел с французского Авраам Оболенский; Москва, 1782 г. - в 8°. +
                                                                                  + +
                                                                                  +6055.
                                                                                  Лучи мудрости, или нравоучительные и полезные рассуждения Сенеки и Плутарха, и прочих славных в древности мужей; перевод с латинского; 2 части; Москва, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +6056.
                                                                                  Луч благодати, или писания Н.А. Краевича, с надписью: Божия никтоже весть, точию Дух Божий; с изображением надгробного памятника; Москва - в 8°. Без означения года. Редка. +
                                                                                  + +
                                                                                  +6057.
                                                                                  Лучшие часы моей жизни; сочинение Марьи Поспеловой; Владимир, 1798 г. - в 8°. +
                                                                                  + +
                                                                                  +6058. Лучшие места из разных греческих писателей, собранные профессором Матвеем; перевел с греческого студент Михайло Дмитриевский; Москва, 1807 г. - в 8°. +
                                                                                  + +
                                                                                  +6059. Лестница умственного восхождения к Богу, по степеням созданных вещей, сочинение Кардинала Баллармина; перевел с латинского Тимофей Мальгин; Санкт-Петербург, 1786 г. - в 8°. +
                                                                                  + +
                                                                                  +6060. Летние прогулки, или нравоучительные и забавные беседы для детей; на французском и российском языках; Москва, 1806 г. - в 8°. +
                                                                                  + +
                                                                                  +6061. Летописец, или русский племянник, содержащий российскую историю от Р.Х. с 862 по 1681 год; 2 части; Москва, 1790 г. - в 4°. +
                                                                                  + +
                                                                                  +6062.
                                                                                  Летописец (древний), содержащий в себе: повесть происшествий, бывших в России при владении 14 Великих князей, сперва Владимирских, потом Московских через 125 лет, начиная от времен княжения Великого князя Александра Ярославовича Невского, до княжения Великого князя Василия Дмитриевича; 2 части; Санкт-Петербург, 1774 г. - в 4°. +
                                                                                  + +
                                                                                  +6063. Летописец Нестеров, с продолжением по Кениксбергскому списку, или Российская библиотека, содержащая в себе древние летописи и всякие записки, способствующие к объяснению Истории и Географии Российской древних и средних времен, издал Иван Барков; часть 1; Санкт-Петербург, 1767 г. - в 4°. Немецкий перевод оного Г. Шерера, в Лейпциге, 1774 г. - в 4°. Другой перевод Иеромонаха Семенова (Дамаскина), издан Гаттегером в Геттингене. +
                                                                                  + +
                                                                                  +6064. Летописец Новгородский, начинающийся от 1017 до 1353 года продолжающийся; Москва, 1781 г. - в 4°. +
                                                                                  + +
                                                                                  +6065. Летописец польский (с 964 по 1764 год), или хронологическое изображение происшествий Королевства Польского, с включением как Российской, так и других сопредельных держав, краткой Истории, с приобщением табелей, содержащих супруг и детей королевских, так и кончину владетелей, так же современных Государей всей Европы, Польских Архиепископов и Епископов, государственных министров, полководцев и ученых людей; перевел с французского И. Одинцов; Санкт-Петербург, 1782 г. - в 8°. +
                                                                                  + +
                                                                                  +6066.
                                                                                  Летописец (русский) от пришествия Рюрика до кончины Царя Иоанна Васильевича; издал Н. Львов; 5 частей; Санкт-Петербург, 1792 г. - в 8°. +
                                                                                  + +
                                                                                  +6067.
                                                                                  Летописец Соловецкого монастыря; Москва, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +6068. Летописец, содержащий в себе Российскую Историю с 1206 до 1634 года; Москва, 1734 г. - в 4°. +
                                                                                  + +
                                                                                  +6069. Летописец, содержащий Российскую историю с 852 до 1598 года, именуемой Архангелогородский; Москва, 1781 г. - в 4°. +
                                                                                  + +
                                                                                  +6070. Летописец турецкий и сарацинский Г. Дрехслера, исправленный и умноженный Г. Хемницким, с прибавлением г. Розина; перевод с латинского; Москва, 1788 г. - в 8°. +
                                                                                  + +
                                                                                  +6071. Летописец (нравственный), содержащий Российскую Историю от царствования Великого князя В.В. Мономаха до покорения Новгорода; Санкт-Петербург, 1772 г. - в 4°. +
                                                                                  + +
                                                                                  +6072.
                                                                                  Летопись Московская (краткая); сочинение Ал. Сумарокова; Санкт-Петербург, 1774 г. - в 8°. +
                                                                                  + +
                                                                                  +6073.
                                                                                  Летопись (краткая) Малой России, настоящего образа тамошнего правления, с прибавлением списка преждебывших гетманов, генеральных старшин, полковников и иерархов, с показанием городов, рек, монастырей, церквей, числа людей и проч., собрано и издано Васильем Рубаном; Санкт-Петербург, 1779 г. - в 12°. +
                                                                                  + +
                                                                                  +6074.
                                                                                  Летопись о многих мятежах и о разорении Москвы от внутренних и внешних неприятелей; Санкт-Петербург, 1773 г. - в 8°. +
                                                                                  + +
                                                                                  +6075.
                                                                                  То же, издание второе; Москва, 1778 г. - в 8°. +
                                                                                  + +
                                                                                  +6076.
                                                                                  Летопись о Северной Истории, или о Государствах Датском, Российском, Гведском, Польском, Прусском, Курляндском, и проч., с особенными примечаниями на умоначертание, нравы и обычаи этих народов, на свойство и естественные произведения их климата; сочинено Г. Лакомбом; перевел с французского г. Иваном; часть 1; Санкт-Петербург, 1794 г. - в 8°. Французский подлинник сей книги в 2 частях, но на русском более не издано. В сей первой части содержится история только о Датском Королевстве. +
                                                                                  + +
                                                                                  +6077. Летопись (подробная) от начала России до Полтавской баталии; издал Николай Львов; 4 части; Санкт-Петербург, 1798-1799 гг. - в 8°. +
                                                                                  + +
                                                                                  +6078.
                                                                                  Летопись (русская) по Никонову списку; 8 частей; Санкт-Петербург, 1762-1792 гг. - в 4°. +
                                                                                  + +
                                                                                  +6079. Летопись Российская по списку Софийскому Великого Новгорода, в продолжение издаваемых манускриптов при Академии Наук; часть 1-я; Санкт-Петербург, 1795 г. - в 4°. +
                                                                                  + +
                                                                                  +6080.
                                                                                  Летопись русская с Воскресенского списка, подаренного Патриархом Никоном в 1658 году; 2 части; Санкт-Петербург, 1793 г. - в 4°. +
                                                                                  + +
                                                                                  +6081. Летопись святого отца нашего Димитрия Митрополита, Ростовского Чудотворца, сказующая деяния от начала миробытия до Рождества Христова, собранная из Божественного Писания, из различных хронографов и историкографов греческих, славянских, римских, польских, еврейских и иных; Москва, 1784 г. - в 8°. +
                                                                                  + +
                                                                                  +6082. То же, издание второе, в двух частях; с портретом сочинителя; Санкт-Петербург, 1796 г. - в 8°. +
                                                                                  + +
                                                                                  +6083.
                                                                                  То же, издание третье; Москва, 1800 г. - в 8°. Второе издание напечатано с рукописи, писанной собственною рукою Святителя Димитрия, и с дополнением, взятым из другого списка. +
                                                                                  + +
                                                                                  +6084. Летопись Царствования Императрицы Екатерины II, сочинение Г. Шторха, перевел с немецкого Г. Глинка; часть 1-я, содержащая законодательство; Санкт-Петербург, 1801 г. - в 8°. +
                                                                                  + +
                                                                                  +6085.
                                                                                  Любимец фортуны; перевел с французского Иван Захаров; 2 части; Москва, 1782 г. - в 8°. +
                                                                                  + +
                                                                                  +6086.
                                                                                  Любим и Лиза, или жизнь добродетельных супругов; с картинкой; Москва, 1803 г. - в 12°. +
                                                                                  + +
                                                                                  +6087.
                                                                                  Любовники и супруги, или мужчины и женщины; издал Г. Громов; Санкт-Петербург, 1798 г. - в 8°. +
                                                                                  + +
                                                                                  +6088.
                                                                                  Любовники (несчастные), или истинные приключения графа Коминжа, наполненные событий жалостных, и нежные сердца чрезвычайно трогающих; перевод с французского Я. Княжнина; Санкт-Петербург, 1771 г. - в 12°. +
                                                                                  + +
                                                                                  +6089. Любовники, сосланные в Сибирь, или приключение Петра Великого; исторический роман, с картинками; 2 части; Москва, 1809 г. - в 12°. +
                                                                                  + +
                                                                                  +6090.
                                                                                  То же, другой перевод; Москва, 1809 г. - в 12°. +
                                                                                  + +
                                                                                  +6091. Любовники философы, или страсть предводимая рассуждением; перевод с французского; 2 части; Москва, 1766 г. - в 8°. +
                                                                                  + +
                                                                                  +6092.
                                                                                  То же, издание второе; Москва, 1778 г. - в 8°. +
                                                                                  + +
                                                                                  +6093. Любовники (несчастные), пастушеская повесть, российское сочинение П.С.; Санкт-Петербург, 1809 г. - в 8°. +
                                                                                  + +
                                                                                  +6094. Любовник соперник, или поверенный сам себе; повесть, сочиненная г-жой Гомец, перевод с французского; Санкт-Петербург, 1766 г. - в 8°. +
                                                                                  + +
                                                                                  +6095. Любовник (несчастный), или приключения Вильгельма фон М…, дворянина из нижней Саксонии; перевел с немецкого Козьма Дараган; Санкт-Петербург, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +6096. Любовные утехи, сочиненные для графини де Ж… графом де С… на счет прекрасного пола; перевод с французского; Москва, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +6097.
                                                                                  Любовь Аназелугеда и Уардии, или несчастные приключения двух любовников судьбой гонимых, арабская повесть, с картинкой; перевод с французского Н. Зубрилова; Москва, 1791 г. - в 8°. +
                                                                                  + +
                                                                                  +6098. Любовь без успеха, или Инесса Кордуанская, испанская повесть, с прибавлением повести о разрыве брака между Абенамором и Фатимой; перевод с французского; Санкт-Петербург, 1764 г. - в 8°. +
                                                                                  + +
                                                                                  +6099. Любовь безуспешная несчастного кавалера Шарленильского, и чудные его приключения, перевод с немецкого; Москва, 1785 г. - в 8°. +
                                                                                  + +
                                                                                  +6100. Любовь (братняя) и матерняя ненависть, или слепая любовь Солимана, Императора Турецкого, и плачевная смерть двух сыновей его; перевод с французского Д.О.; Москва, 1794 г. - в 8°. +
                                                                                  + +
                                                                                  +6101.
                                                                                  Любовь (Божия прославленная), или рассуждение о истинной премудрости и истинном благе, взятое из откровенного света Божия благодати, писания и здравого рассудка; перевод с французского; Москва, 1786 г. - в 12°. +
                                                                                  + +
                                                                                  +6102. Любовь в полной своей силе, или несчастное приключение Карла и Амалии; перевел с немецкого П.М.; Москва, 1794 г. - в 8°. +
                                                                                  + +
                                                                                  +6103. Любовь (горестная) Маркиза де Толедо; перевел с испанского Ф. Эмин; Санкт-Петербург, 1764 г. - в 8°. +
                                                                                  + +
                                                                                  +6104.
                                                                                  Любовь Генриха IV к наукам; перевод с французского; Санкт-Петербург, 1808 г. - в 8°. +
                                                                                  + +
                                                                                  +6105.
                                                                                  Любовь (героическая), или примеры чрезвычайного в любви постоянства, великой и мужественной решимости в терпении всяких бедствий, неоспоримо доказывающие твердость женского духа; перевод с французского; 2 части; Москва, 1805 г. - в 12°. +
                                                                                  + +
                                                                                  +6106. Любовь Зефира и Флоры, с прибавлением двух идиллий Аглаи, или благодеяние, и Элианы, или гробница; перевод с французского, с фронтисписом; Москва, 1806 г. - в 16°. +
                                                                                  + +
                                                                                  +6107. Любовь и действие ее; Москва, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +6108.
                                                                                  Любовь и мир, или возбуждение к любви и миру с радостью совершившегося мира между жителями града; сочинение Осташковского Протоиерея Андрея Колоколова; Москва, 1801 г. - в 8°. +
                                                                                  + +
                                                                                  +6109. Любовь Исмены и Исмениаса; перевод с французского; Москва, 1769 г. - в 12°. +
                                                                                  + +
                                                                                  +6110. Любовь, лирическое сочинение Максима Невзорова; Санкт-Петербург, 1803 г. - в 12°. +
                                                                                  + +
                                                                                  +6111.
                                                                                  Любовь Кариты и Полидора, или редкие приключения двух язычников; сочинение на греческом языке с коего на французского перевел г. Бартелеми, с него на российский Денис Фонвизин; Москва, 1763 г. - в 12°. +
                                                                                  + +
                                                                                  +6112.
                                                                                  То же, другой перевод Василья Заозерского; Москва, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +6113. Любовь, книжка золотая, издал Глеб Громов; Санкт-Петербург, 1798 г. - в 8°. +
                                                                                  + +
                                                                                  +6114. Любовь, ненависть и мщение, или история двух знатных английскогоийских фамилий; перевел с французского А. Клименко; 2 части; Москва, 1805 г. - в 16°. +
                                                                                  + +
                                                                                  +6115. Любовь (несчастная), перевод с французского; Санкт-Петербург, 1779 г. - в 8°. +
                                                                                  + +
                                                                                  +6116. Любовь (несчастная), или приключения одной весталки, перевод с немецкого; Москва, 1793 г. - в 8°. +
                                                                                  + +
                                                                                  +6117. Любовь Перианда и Феномены, исполненная нежных для чувствительных сердец приключений, перевод с французского; Москва, 1787 г. - в 8°. +
                                                                                  + +
                                                                                  +6118.
                                                                                  Любовь (постоянная) Евдона и Берфы, с приобщением повести о разбойнике Барбосе; Москва, 1787 г. - в 8°. +
                                                                                  + +
                                                                                  +6119.
                                                                                  Любовь Палирия и Дирьфии, перевел с французского Степан Лобысевич; Санкт-Петербург, 1774 г. - в 12°. +
                                                                                  + +
                                                                                  +6120.
                                                                                  Любовь (превратная), или приключения миледи графини Англезей; перевел с французского Иван Метальников; Санкт-Петербург, 1779 г. - в 8°. +
                                                                                  + +
                                                                                  +6121. Любовь Псиши и Купидона; сочинение Г. де Лафонтена; перевел с французского Федор Дмитриев-Мамонов, с присовокуплением его сочинения, под названием: Дворянин философ; с фигурами; Москва, 1769 г. - в 8°. Редка. +
                                                                                  + +
                                                                                  +6122. Любовь Сафои и Фаона; перевод с французского; Москва, 1780 г. - в 8°. +
                                                                                  + +
                                                                                  +6123. Любовь сильнее дружбы, повесть испанская, перевод с французского; Санкт-Петербург, 1764 г. - в 8°. +
                                                                                  + +
                                                                                  +6124. Любовь (увенчанная), или приключения Мелентеса и Арианны, одной знаменитой сицилианки; перевод с французского; 4 части; Москва, 1792 г. - в 8°. +
                                                                                  + +
                                                                                  +6125.
                                                                                  Любовь (увенчанная), или приключения д’Аблинкурта и девицы де Сент-Симон; перевод с французского; Москва, 1782 г. - в 8°. +
                                                                                  + +
                                                                                  +6126. Любовь (совершенная), иносказательная повесть, сочиненная для тех, кто могут ее пользоваться, или разуметь пользу ее, служащая иным сказкой, иным приятным упражнением, а для других нравственным поучением, А.Л.; Москва, 1790 г. - в 8°. +
                                                                                  + +
                                                                                  +6127. Любовь (супружеская), или история виконта Дежетнона, сочинение графа С., перевел с французского П. Толченов; Москва, 1788 г. - в 8°. +
                                                                                  + +
                                                                                  +6128. Любовь к отечеству, стихи; соч. г. Взметнева; Санкт-Петербург, 1812 г. - в 4°. +
                                                                                  + +
                                                                                  +6129. Любомудрие против мнимых страхов смерти, переведено с латинского Протоиереем И. Красовским; Санкт-Петербург, 1796 г. - в 8°. +

                                                                                  + + + +
                                                                                  +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  Реставрация старых книгОценка старинных книгЭнциклопедия букинистаРусские писателиБиблиотека Ивана ГрозногоИстория русских книг    
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text7.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text7.html new file mode 100644 index 00000000..589c03fe --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text7.html @@ -0,0 +1,272 @@ + + Difficult Distance, Speed and time problems - Math Help Forum


                                                                                  + Results 1 to 2 of 2 +
                                                                                  1. #1
                                                                                    + Junior Member +
                                                                                    Joined
                                                                                    Aug 2009
                                                                                    Posts
                                                                                    62

                                                                                    + Difficult Distance, Speed and time problems +

                                                                                    + 1) A man takes 5 hrs and 45 mins to walk to a certain place and ride back. He would have gained 2 km by riding both ways. The time he would take to walk both ways is?

                                                                                    +2) A jeep travels a distance of 100 km at a uniform speed. If the speed of the jeep is 5km/hr, then it takes 3 hrs to cover the same distance. Find the original speed of the jeep.

                                                                                    +3) A train overtakes two men walking in the same direction as the train at the speed of 3km/hr and 4.5km/he in 8 and 12 sec respectively. Find the length of the train. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  2. #2
                                                                                    + Flow Master +
                                                                                    mr fantastic's Avatar
                                                                                    Joined
                                                                                    Dec 2007
                                                                                    From
                                                                                    Zeitgeist
                                                                                    Posts
                                                                                    16,948
                                                                                    Thanks
                                                                                    5
                                                                                    Quote Originally Posted by saberteeth View Post
                                                                                    1) A man takes 5 hrs and 45 mins to walk to a certain place and ride back. He would have gained 2 km by riding both ways. The time he would take to walk both ways is?

                                                                                    +[snip]
                                                                                    \frac{d}{v_1} + \frac{d}{v_2} = \frac{23}{4} .... (1)

                                                                                    \frac{2d}{v_2} = \frac{15}{4} .... (2) (assuming that when you typed 'gained 2 km' you meant 'gained 2 hours').

                                                                                    +Substitute equation (2) into equation (1) and solve for \frac{2d}{v_1}. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  Similar Math Help Forum Discussions

                                                                                  1. Speed distance time problems
                                                                                    + Posted in the Algebra Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: July 27th 2011, 12:14 PM
                                                                                  2. Replies: 3 +
                                                                                    Last Post: July 24th 2010, 03:32 AM
                                                                                  3. grade 10 word problems (speed, time, distance)
                                                                                    + Posted in the Algebra Forum +
                                                                                    Replies: 2 +
                                                                                    Last Post: January 29th 2009, 04:38 AM
                                                                                  4. speed distance time
                                                                                    + Posted in the Algebra Forum +
                                                                                    Replies: 2 +
                                                                                    Last Post: January 5th 2009, 12:38 PM
                                                                                  5. Help with speed/distance/time and d/dx?
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 2 +
                                                                                    Last Post: December 8th 2008, 02:55 AM

                                                                                  Search Tags


                                                                                  /mathhelpforum @mathhelpforum

                                                                                  + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text8.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text8.html new file mode 100644 index 00000000..fe052250 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text8.html @@ -0,0 +1,351 @@ + + Particular Solution


                                                                                  + Results 1 to 7 of 7 +
                                                                                  1. #1
                                                                                    + Newbie +
                                                                                    Joined
                                                                                    Feb 2009
                                                                                    Posts
                                                                                    21

                                                                                    + Particular Solution +

                                                                                    + 40xy' -ln(x^8) = 0

                                                                                    +Initial Condition: y(1)=31

                                                                                    +Work:
                                                                                    +40x (dy/dx) - ln(x^8) = 0

                                                                                    +40x(dy/dx) = ln (x^8)

                                                                                    +dy/dx = ln(x^8) / 40x

                                                                                    +Sdy = Sln(x^8) / 40x

                                                                                    +And then...stuck (if its even right thus far) +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  2. #2
                                                                                    + Rhymes with Orange + Chris L T521's Avatar
                                                                                    Joined
                                                                                    May 2008
                                                                                    From
                                                                                    Chicago, IL
                                                                                    Posts
                                                                                    2,844
                                                                                    Thanks
                                                                                    5
                                                                                    Quote Originally Posted by BooGTS View Post
                                                                                    40xy' -ln(x^8) = 0

                                                                                    +Initial Condition: y(1)=31

                                                                                    +Work:
                                                                                    +40x (dy/dx) - ln(x^8) = 0

                                                                                    +40x(dy/dx) = ln (x^8)

                                                                                    +dy/dx = ln(x^8) / 40x

                                                                                    +Sdy = Sln(x^8) / 40x

                                                                                    +And then...stuck (if its even right thus far)
                                                                                    Hint: $\displaystyle \ln(x^8)=8 \ln x$. Then the integral on the RHS becomes $\displaystyle \displaystyle\frac{1}{5}\int\frac{\ln x}{x}\,dx$.

                                                                                    +Do you know how to proceed?

                                                                                    +(And yes, everything is right so far. ) +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  3. #3
                                                                                    + MHF Contributor + chisigma's Avatar
                                                                                    Joined
                                                                                    Mar 2009
                                                                                    From
                                                                                    near Piacenza (Italy)
                                                                                    Posts
                                                                                    2,162
                                                                                    Thanks
                                                                                    6
                                                                                    + Because is $\displaystyle \ln x^{8} = 8\ \ln x$ the DE becomes...

                                                                                    +$\displaystyle \displaystyle y^{'} = \frac{\ln x}{5 x}$ (1)

                                                                                    +... where the variables are separated so that the solution is immediate...

                                                                                    +Kind regards

                                                                                    +$\displaystyle \chi$ $\displaystyle \sigma$ +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  4. #4
                                                                                    + MHF Contributor +

                                                                                    Joined
                                                                                    Apr 2005
                                                                                    Posts
                                                                                    19,630
                                                                                    Thanks
                                                                                    2955
                                                                                    Quote Originally Posted by Chris L T521 View Post
                                                                                    Hint: $\displaystyle \ln(x^8)=8 \ln x$. Then the integral on the RHS becomes $\displaystyle \displaystyle\frac{1}{5}\int\frac{\ln x}{x}\,dx$.

                                                                                    +Do you know how to proceed?

                                                                                    +(And yes, everything is right so far. )
                                                                                    If you are concerned about how to do that integral, let u= ln(x). +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  5. #5
                                                                                    + Newbie +
                                                                                    Joined
                                                                                    Feb 2009
                                                                                    Posts
                                                                                    21
                                                                                    + Still not doing this right I don't think:

                                                                                    +y= 1/5 (lnxdx)/x
                                                                                    + = 1/5 u du
                                                                                    + = 1/5 u^2/2
                                                                                    + = 1/10 lnx^2 +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  6. #6
                                                                                    + MHF Contributor +
                                                                                    skeeter's Avatar
                                                                                    Joined
                                                                                    Jun 2008
                                                                                    From
                                                                                    North Texas
                                                                                    Posts
                                                                                    16,216
                                                                                    Thanks
                                                                                    3700
                                                                                    Quote Originally Posted by BooGTS View Post
                                                                                    Still not doing this right I don't think:

                                                                                    +y= 1/5 (lnxdx)/x
                                                                                    + = 1/5 u du
                                                                                    + = 1/5 u^2/2
                                                                                    + = 1/10 lnx^2
                                                                                    note the difference between $\displaystyle \ln{x^2}$ and $\displaystyle (\ln{x})^2$ ...

                                                                                    +the correct antiderivative is

                                                                                    +$\displaystyle \displaystyle \frac{(\ln{x})^2}{10} + C$ +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  7. #7
                                                                                    + Newbie +
                                                                                    Joined
                                                                                    Feb 2009
                                                                                    Posts
                                                                                    21
                                                                                    + Yeah, big difference. Thanks to all (and on the site if I can figure out how) +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  Similar Math Help Forum Discussions

                                                                                  1. Replies: 1 +
                                                                                    Last Post: Sep 23rd 2011, 03:39 AM
                                                                                  2. General Solution of a differential solution
                                                                                    + Posted in the Differential Equations Forum +
                                                                                    Replies: 4 +
                                                                                    Last Post: Sep 11th 2010, 02:49 AM
                                                                                  3. Replies: 1 +
                                                                                    Last Post: Mar 24th 2010, 12:14 AM
                                                                                  4. Replies: 2 +
                                                                                    Last Post: Sep 7th 2009, 02:01 PM
                                                                                  5. find the general solution when 1 solution is given
                                                                                    + Posted in the Differential Equations Forum +
                                                                                    Replies: 4 +
                                                                                    Last Post: Mar 4th 2009, 09:09 PM

                                                                                  Search Tags


                                                                                  /mathhelpforum @mathhelpforum
                                                                                  + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text9.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text9.html new file mode 100644 index 00000000..c13350c8 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/text9.html @@ -0,0 +1,359 @@ + + Continuous functions - Math Help Forum


                                                                                  + Results 1 to 5 of 5 +

                                                                                  + Math Help - Continuous functions

                                                                                  1. #1
                                                                                    + Member +
                                                                                    Joined
                                                                                    Oct 2008
                                                                                    Posts
                                                                                    124

                                                                                    + Continuous functions +

                                                                                    + 1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

                                                                                    +2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  2. #2
                                                                                    + Banned +
                                                                                    Joined
                                                                                    Mar 2009
                                                                                    Posts
                                                                                    256
                                                                                    Thanks
                                                                                    1
                                                                                    Quote Originally Posted by noles2188 View Post
                                                                                    1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.

                                                                                    +2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.
                                                                                    We have :f(x)= \lim_{n\rightarrow\infty}{\frac{x^n}{1+x^n}} =\frac{\lim_{n\rightarrow\infty}{x^n}}{1+\lim_{n\r  ightarrow\infty}{x^n}}.................................................. .........................................1

                                                                                    +AND now we have the following cases:

                                                                                    +1) |x|<1 <===> -1<x<1 ,then \lim_{n\rightarrow\infty}{x^n} =0.

                                                                                    +2) x=1 ,then \lim_{n\rightarrow\infty}{x^n} =1.


                                                                                    +3) x>1 ,then \lim_{n\rightarrow\infty}{x^n} =\infty.


                                                                                    +4) x =-1 ,then x^n oscillates finitely.

                                                                                    +5) x<-1 ,then  x^n oscillates infinitely.

                                                                                    +And thus by using (1)

                                                                                    +For -1<x<1 ,f(x) = 0 and

                                                                                    +For x=1 , f(x)=1/2.

                                                                                    +Thus D= (-1,1] = (-1,1)U{1}

                                                                                    +Next we consider continuity over (-1,1].

                                                                                    +Let -1<c<1 ,and consider \lim_{x\rightarrow c}{f(x)} =\lim_{x\rightarrow c}{0}= 0 = f(c).

                                                                                    +HENCE f is continuous over (-1,1).

                                                                                    +But if c=1 ,then f(1)=1/2 ,so we see there is a gap from 0 ,which is the value of f(x) for -1<x<1 , to 1/2 =f(1) and hence the function is not continuous.

                                                                                    +To prove that:
                                                                                    +Let, ε=1/4, then for all δ>0 choose ,x=0 ,then |f(x)-f(1)|=|f(0)-f(1)|=|0-1/2|= \frac{1}{2}\geq\frac{1}{4}=\epsilon.

                                                                                    +Thus \lim_{x\rightarrow 1^-}{f(x)}\neq f(1).

                                                                                    +Now to prove : if \lim_{x\rightarrow c}{f(x)} = f(c) ,then \lim_{x\rightarrow c}{\sqrt{f(x)}} =\sqrt{c} ,where f(x)\geq 0,when x belongs to D.

                                                                                    +For that you must consider the : |\sqrt{f(x)}-\sqrt{c}|.................................................. ..................................2

                                                                                    +Now multiply (2) by \frac{|\sqrt{f(x)}+\sqrt{c}|}{|\sqrt{f(x)}+\sqrt{c  }|} and we get:


                                                                                    \frac{|f(x)-f(c)|}{\sqrt{f(x)}+\sqrt{c}}.

                                                                                    +But  \sqrt{f(x)}+\sqrt{c}\geq\sqrt{c} ,thus :


                                                                                    \frac{|f(x)-f(c)|}{\sqrt{f(x)}+\sqrt{c}}\leq\frac{|f(x)-f(c)|}{\sqrt{c}}.................................................. .......................................3

                                                                                    +And if we want (3) smaller than ε>0 we must have :

                                                                                    |f(x)-f(c)|<\sqrt{c}.\epsilon which is possible since f is continuous at c.

                                                                                    +Hence sqrt(f) is continuous at c +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  3. #3
                                                                                    + MHF Contributor +

                                                                                    Joined
                                                                                    Aug 2006
                                                                                    Posts
                                                                                    18,605
                                                                                    Thanks
                                                                                    1574
                                                                                    Awards
                                                                                    1
                                                                                    Quote Originally Posted by noles2188 View Post
                                                                                    1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).
                                                                                    +Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.
                                                                                    The answer above is incomplete.
                                                                                    f(x) = \left\{ {\begin{array}{lr}<br />
+   {0,} & {\left| x \right| < 1}  \\   {\frac{1}{2},} & {x = 1}  \\   {1,} & {\left| x \right| > 1}  \\ \end{array} } \right.
                                                                                    +That means that \mathcal{D} = \mathbb{R}\backslash \left\{ { - 1} \right\}.
                                                                                    +It also means that f is continuous on \mathbb{R}\backslash \left\{ {1, - 1} \right\}.

                                                                                    +The mistake above is: \left| x \right| > 1\;,\;\frac{{x^n }}{{1 + x^n }} = \frac{1}<br />
+{{\left( {\frac{1}{x}} \right)^n  + 1}}. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  4. #4
                                                                                    + Banned +
                                                                                    Joined
                                                                                    Mar 2009
                                                                                    Posts
                                                                                    256
                                                                                    Thanks
                                                                                    1
                                                                                    Quote Originally Posted by Plato View Post
                                                                                    The mistake above is: \left| x \right| > 1\;,\;\frac{{x^n }}{{1 + x^n }} = \frac{1}<br />
+{{\left( {\frac{1}{x}} \right)^n + 1}}.
                                                                                    If |x|>1 ,then x<-1 or x>1 ,but for x=-2 for example the limit of ;

                                                                                    \frac{1}{\frac{1}{(-2)^n}+1} is not equal to 1 +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  5. #5
                                                                                    + MHF Contributor +
                                                                                    Opalg's Avatar
                                                                                    Joined
                                                                                    Aug 2007
                                                                                    From
                                                                                    Leeds, UK
                                                                                    Posts
                                                                                    4,041
                                                                                    Thanks
                                                                                    7
                                                                                    Quote Originally Posted by xalk View Post
                                                                                    the limit of \frac{1}{\frac{1}{(-2)^n}+1} is not equal to 1
                                                                                    Yes it is! The reason is that |a|<1\:\Rightarrow\:a^n\to0; and \bigl|\tfrac1{-2}\bigr|<1. So \frac{1}{\frac{1}{(-2)^n}+1}\to\frac1{0+1}=1 as n\to\infty. +
                                                                                    Follow Math Help Forum on Facebook and Google+

                                                                                  Similar Math Help Forum Discussions

                                                                                  1. Continuous functions
                                                                                    + Posted in the Discrete Math Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: May 22nd 2010, 05:29 PM
                                                                                  2. more continuous functions
                                                                                    + Posted in the Differential Geometry Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: October 5th 2009, 11:57 AM
                                                                                  3. continuous functions
                                                                                    + Posted in the Differential Geometry Forum +
                                                                                    Replies: 0 +
                                                                                    Last Post: October 4th 2009, 12:47 PM
                                                                                  4. Why are the functions f and g continuous?
                                                                                    + Posted in the Calculus Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: September 3rd 2009, 07:01 PM
                                                                                  5. On continuous functions
                                                                                    + Posted in the Advanced Algebra Forum +
                                                                                    Replies: 1 +
                                                                                    Last Post: April 30th 2008, 11:58 PM

                                                                                  Search Tags


                                                                                  /mathhelpforum @mathhelpforum

                                                                                  + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/xml_tag.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/xml_tag.html new file mode 100644 index 00000000..d24abbed --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html/xml_tag.html @@ -0,0 +1,373 @@ + + + + + + + + + + + CHICKS Children on the Ice - CHICKS + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + + + +
                                                                                  News Archive
                                                                                  + +

                                                                                  Just in case you have been on holiday or were unable to view our site at the time, we have saved our news stories here for you to view at your leisure.

                                                                                  + More... +
                                                                                  + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +

                                                                                  + CHICKS Children on the Ice

                                                                                  + +
                                                                                  + + + + + + + + + + + +

                                                                                  Monday morning fun on the rink

                                                                                  +

                                                                                  CHICKS Children on the Ice

                                                                                  +
                                                                                  +

                                                                                  The children at CHICKS have enjoyed six days of fabulous activities and special events to celebrate our 9000th child coming on camp since we began in 1992.

                                                                                  + +

                                                                                  Tango Camp, which started on Thursday 27th October and finishes tomorrow, Tuesday 1st November have enjoyed horse riding, spooky Halloween games and an extra treat as they enjoyed an exclusive session on the Ice in the centre of Plymouth with the Ice Angels. For most children this was the first time they experienced ice skating and some took to it like ducks to water... others not so much!

                                                                                  +

                                                                                  Every child that attends a CHICKS break has a deserving story as to why they need time away from their tough home lives. On Tango camp we have children who have been neglected, witnessed domestic abuse, suffered emotional abuse and live in severe poverty.

                                                                                  +

                                                                                  Every child has had the most incredible week, watching them on the Ice you could see their confidence grow every time they did a loop around the Rink. After their six day break CHICKS will continue to make an impact as they can write to everyone they meet time and time again through the network we operate, to date we have received over 900 letters!

                                                                                  +

                                                                                  Here are a few quotes from the children at the Ice Rink. Craig "I've never been ice skating before", Kellee "I want to be an ice dancer when I'm older", Josh "This has been my favourite part of the week" and Stephanie "My three favourite things of this week are horse riding, laser quest and ice skating".

                                                                                  +

                                                                                  Every child will leave CHICKS with happy memories, new skills and new friends. They will return home knowing that someone cares and that life has more to offer them then what it has done so far.

                                                                                  +

                                                                                  9000 disadvantaged children - thousands of happy childhood memories.

                                                                                  +

                                                                                   

                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + + + +Bookmark and Share + + + +
                                                                                  +
                                                                                  + + + +
                                                                                  Change for CHICKS
                                                                                  + +

                                                                                  changeforchicksweb

                                                                                  +

                                                                                  Throughout May we will be running our Change for CHICKS campaign. We're asking all our supporters to encourage their friends, family and colleagues to donate their small change to CHICKS. + More... +

                                                                                  + +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + diff --git a/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html_data_input.jsonl b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html_data_input.jsonl new file mode 100644 index 00000000..21da5ce9 --- /dev/null +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/html_data_input.jsonl @@ -0,0 +1,24 @@ +{"track_id": "f7b3b1b4-0b1b", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"1.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "stackoverflow_math", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"math.stackoverflow.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "mathlab_code", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"matlab_code.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "educba_com_list", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"list_parse.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "chemaxon", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"code_mix_in_list.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "mobile-utopia", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"pre_code_mixed.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "image-without-path", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"image_without_path.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "csdn-lineno", "dataset_name": "test_pipeline_suit", "url": "https://www.cnblogs.com/xu-tao/p/16324793.html","data_source_category": "HTML", "path":"csdn_lineno.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "rfc-doc", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"doc.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "legato_doc", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"legato_docs.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "oracle_doc", "dataset_name": "test_pipeline_suit", "url": "https://docs.oracle.com/en-us/iaas/tools/java/3.57.1/com/oracle/bmc/integration/model/CustomEndpointDetails.html","data_source_category": "HTML", "path":"oracle_doc.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_involve_inline_code", "dataset_name": "test_table_involve_inline_code", "url": "https://docs.oracle.com/en-us/iaas/tools/java/3.57.1/com/oracle/bmc/integration/model/CustomEndpointDetails.html","data_source_category": "HTML", "path":"table_involve_inline_code.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_tail_text", "dataset_name": "test_table_tail_text", "url": "https://dchublists.com/?do=hublist&id=hub-975&language=en","data_source_category": "HTML", "path":"table_tail_text.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_elem_include_enter", "dataset_name": "table_elem_include_enter", "url": "https://fardapaper.ir/financial-development-equity-capital","data_source_category": "HTML", "path":"test_table_elem_include_enter.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "list_empty", "dataset_name": "test_list_empty", "url": "https://productcenter.ru/products/27276/naturalnoie-krymskoie-mylo-ruchnoi-raboty-39-raznovidnostiei","data_source_category": "HTML", "path":"test_list_empty.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_include_math_p", "dataset_name": "table_include_math_p", "url": "https://math.stackexchange.com/questions/458323/is-8327-1-a-prime-number?answertab=active","data_source_category": "HTML", "path":"table_include_math_p.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_include_table_math", "dataset_name": "table_include_table_math", "url": "https://test","data_source_category": "HTML", "path":"table_include_table_math.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "test_clean_tags", "dataset_name": "test_pipeline_suit", "url": "https://math.stackexchange.com/questions/4082284/solving-for-vector-contained-in-a-diagonal-matrix","data_source_category": "HTML", "path":"test_clean_tags.html", "file_bytes": 1000, "page_layout_type":"forum", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "list_nest_three", "dataset_name": "list_nest_three", "url": "http://test.com","data_source_category": "HTML", "path":"list_nest_three.html", "file_bytes": 1000, "page_layout_type":"forum", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "table_include_entity", "dataset_name": "table_include_entity", "url": "http://math.stackexchange.com/questions/658871/perfectly-centered-break-of-a-perfectly-aligned-pool-ball-rack?answertab=active","data_source_category": "HTML", "path":"table_include_entity.html", "file_bytes": 1000, "page_layout_type":"forum", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "content_list_empty", "dataset_name": "content_list_empty", "url": "https://test.com","data_source_category": "HTML", "path":"content_list_empty.html", "file_bytes": 1000, "page_layout_type":"forum", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "exclude_complex_table", "dataset_name": "exclude_complex_table", "url": "https://test.com","data_source_category": "HTML", "path":"exclude_complex_table.html", "file_bytes": 1000, "page_layout_type":"article", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "para_is_short", "dataset_name": "para_is_short", "url": "https://test.com","data_source_category": "HTML", "path":"para_is_short.html", "file_bytes": 1000, "page_layout_type":"article", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} +{"track_id": "xml_tag", "dataset_name": "test_pipeline_suit", "url": "http://www.chicks.org.uk/index.php?option=com_content&view=article&id=342%3Achicks-children-on-the-ice&Itemid=27","data_source_category": "HTML", "path":"xml_tag.html", "file_bytes": 1000, "page_layout_type":"article", "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.main_html.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.main_html.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.main_html.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.main_html.html diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.md b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.md similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.md rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.md diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.txt b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.txt similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/1.txt rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/1.txt diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/csdn_lineno.md b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/csdn_lineno.md similarity index 98% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/csdn_lineno.md rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/csdn_lineno.md index 3b1508e9..b6d3fdaf 100644 --- a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/csdn_lineno.md +++ b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/csdn_lineno.md @@ -1,4 +1,3 @@ -``` <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); @@ -297,8 +296,4 @@ public class Dowriteservlet extends HttpServlet { public void init() throws ServletException { } -} -``` - -posted @ 2022-05-29 20:20 徐涛% 阅读( 77) -评论( 0) 编辑 收藏 举报 +} \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/oracle_doc.main_html.html b/tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/oracle_doc.main_html.html similarity index 100% rename from tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/output_expected/oracle_doc.main_html.html rename to tests/llm_web_kit/extractor/assets/extractor_chain_input/good_data/output_expected/oracle_doc.main_html.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/assets/format_table.html b/tests/llm_web_kit/extractor/html/assets/format_table.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/assets/format_table.html rename to tests/llm_web_kit/extractor/html/assets/format_table.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/custom.html b/tests/llm_web_kit/extractor/html/magic_html/assets/custom.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/custom.html rename to tests/llm_web_kit/extractor/html/magic_html/assets/custom.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/custom_config.json b/tests/llm_web_kit/extractor/html/magic_html/assets/custom_config.json similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/custom_config.json rename to tests/llm_web_kit/extractor/html/magic_html/assets/custom_config.json diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/forum.html b/tests/llm_web_kit/extractor/html/magic_html/assets/forum.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/forum.html rename to tests/llm_web_kit/extractor/html/magic_html/assets/forum.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/others.html b/tests/llm_web_kit/extractor/html/magic_html/assets/others.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/others.html rename to tests/llm_web_kit/extractor/html/magic_html/assets/others.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/weixin.html b/tests/llm_web_kit/extractor/html/magic_html/assets/weixin.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/weixin.html rename to tests/llm_web_kit/extractor/html/magic_html/assets/weixin.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/xp1_5.html b/tests/llm_web_kit/extractor/html/magic_html/assets/xp1_5.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/assets/xp1_5.html rename to tests/llm_web_kit/extractor/html/magic_html/assets/xp1_5.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/magic_html/test_general_extractor.py b/tests/llm_web_kit/extractor/html/magic_html/test_general_extractor.py similarity index 95% rename from tests/llm_web_kit/pipeline/extractor/html/magic_html/test_general_extractor.py rename to tests/llm_web_kit/extractor/html/magic_html/test_general_extractor.py index 2f5f1acb..a15a9801 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/magic_html/test_general_extractor.py +++ b/tests/llm_web_kit/extractor/html/magic_html/test_general_extractor.py @@ -2,7 +2,7 @@ import pytest -from llm_web_kit.pipeline.extractor.html.magic_html import GeneralExtractor +from llm_web_kit.extractor.html.magic_html import GeneralExtractor def test_general_extractor(): diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-0.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-0.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-0.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-0.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-1.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-1.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-1.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-1.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-2.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-2.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-2.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-2.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-3.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-3.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-3.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-3.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-4.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-4.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks-4.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks-4.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/geeksforgeeks.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/geeksforgeeks.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-0.py b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-0.py similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-0.py rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-0.py diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-1.py b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-1.py similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-1.py rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-1.py diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-2.py b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-2.py similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade-2.py rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade-2.py diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/homemade.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/homemade.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.md b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.md similarity index 98% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.md rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.md index 6ede30d9..f5b9f660 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.md +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.md @@ -54,7 +54,7 @@ your MATLAB code, add the `%#codegen` pragma to the top of your MATLAB file. When you edit your code in the MATLAB editor, the MATLAB Code Analyzer flags functions and constructs that are not supported for code generation. See Check Code Using the MATLAB Code Analyzer. When you use the MATLAB - Coder™ app, + Coder™ app, the app screens your code for code generation readiness. At the function line, you can use the Code Generation Readiness Tool. See Check Code Using the Code Generation Readiness Tool. @@ -68,7 +68,7 @@ However, running the test file can slow the code generation. It is a best practice to pass the properties to the `-args` option so that `convertToSingle` does not run the test file to determine the argument properties. If you have a MATLAB - Coder license, + Coder license, you can use `coder.getArgTypes` to determine the argument properties. For example: @@ -94,4 +94,4 @@ scfg = coder.config('single'); scfg.TestBenchName = 'mytest'; scfg.TestNumerics = true; scfg.LogIOForComparisonPlotting = true; -``` +``` \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.txt b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.txt similarity index 98% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.txt rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.txt index 3ce15baa..be6b47b1 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/mathworks.txt +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/mathworks.txt @@ -39,7 +39,7 @@ your MATLAB code, add the `%#codegen` pragma to the top of your MATLAB file. When you edit your code in the MATLAB editor, the MATLAB Code Analyzer flags functions and constructs that are not supported for code generation. See Check Code Using the MATLAB Code Analyzer. When you use the MATLAB - Coder™ app, + Coder™ app, the app screens your code for code generation readiness. At the function line, you can use the Code Generation Readiness Tool. See Check Code Using the Code Generation Readiness Tool. Use the `-args` Option to Specify Input Properties @@ -51,7 +51,7 @@ However, running the test file can slow the code generation. It is a best practice to pass the properties to the `-args` option so that `convertToSingle` does not run the test file to determine the argument properties. If you have a MATLAB - Coder license, + Coder license, you can use `coder.getArgTypes` to determine the argument properties. For example: ``` @@ -73,4 +73,4 @@ scfg = coder.config('single'); scfg.TestBenchName = 'mytest'; scfg.TestNumerics = true; scfg.LogIOForComparisonPlotting = true; -``` +``` \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-0.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-0.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-0.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-0.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-2.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-2.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-2.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-2.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-3.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-3.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-3.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-3.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-4.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-4.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-4.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-4.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-5.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-5.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-5.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-5.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-6.sh b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-6.sh similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-6.sh rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-6.sh diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-7.ts b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-7.ts similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-7.ts rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-7.ts diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-8.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-8.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-8.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-8.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-9.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-9.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs-9.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs-9.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/prismjs.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/prismjs.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-0.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-0.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-0.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-0.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-1.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-1.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-1.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-1.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-2.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-2.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-2.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-2.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-3.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-3.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-3.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-3.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-4.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-4.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-4.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-4.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-5.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-5.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-5.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-5.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-6.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-6.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-6.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-6.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-7.js b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-7.js similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react-7.js rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react-7.js diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/react.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/react.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-0.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-0.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-0.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-0.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-1.xml b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-1.xml similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-1.xml rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-1.xml diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-2.java b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-2.java similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow-2.java rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow-2.java diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/stackoverflow.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/stackoverflow.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/table-code-1.sh b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/table-code-1.sh similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/table-code-1.sh rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/table-code-1.sh diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/table-code.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/table-code.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/table-code.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/table-code.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-0.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-0.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-0.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-0.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-1.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-1.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-1.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-1.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-2.xml b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-2.xml similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-2.xml rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-2.xml diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-3.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-3.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-3.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-3.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-4.xml b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-4.xml similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-4.xml rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-4.xml diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-5.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-5.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-5.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-5.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-6.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-6.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-6.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-6.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-7.xml b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-7.xml similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-7.xml rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-7.xml diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-8.cs b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-8.cs similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-8.cs rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-8.cs diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-9 b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-9 similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-9 rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-9 diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-case-2.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-case-2.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik-case-2.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik-case-2.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik.html b/tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/cccode/telerik.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/cccode/telerik.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/figure_iframe.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/figure_iframe.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/figure_iframe.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/figure_iframe.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/no_parent_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/no_parent_img.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/no_parent_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/no_parent_img.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/object_pdf.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/object_pdf.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/object_pdf.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/object_pdf.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/picture_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/picture_img.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/picture_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/picture_img.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/svg_base64.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/svg_base64.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/svg_base64.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/svg_base64.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/svg_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/svg_img.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/svg_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/svg_img.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/table_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/table_img.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/table_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/table_img.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/unescape_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/unescape_img.html similarity index 99% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/unescape_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/unescape_img.html index e3a3c58e..7508bd96 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccimage/unescape_img.html +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccimage/unescape_img.html @@ -1231,7 +1231,7 @@
                                                                                  - 當前位置: 首頁 > 椅凳類 + 當前位置: 首頁 > 椅凳類
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/asciimath.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/asciimath.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/asciimath.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/asciimath.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/asciimath_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/asciimath_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/asciimath_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/asciimath_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/geoenergymath_img.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/geoenergymath_img.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/geoenergymath_img.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/geoenergymath_img.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/geoenergymath_img_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/geoenergymath_img_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/geoenergymath_img_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/geoenergymath_img_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html similarity index 99% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html index 6f747501..459eca7e 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_codecogs_com.html @@ -53967,9 +53967,9 @@
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_codecogs_com_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_codecogs_com_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_codecogs_com_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_codecogs_com_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/img_mimetex_cgi_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/katex_mathjax.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/katex_mathjax.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/katex_mathjax.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/katex_mathjax.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/katex_mathjax_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/katex_mathjax_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/katex_mathjax_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/katex_mathjax_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/libretexts_1_p_latex_mathjax_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/math_katex_latex_2.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_katex_latex_2.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/math_katex_latex_2.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_katex_latex_2.html diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums.html new file mode 100644 index 00000000..710805f0 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums.html @@ -0,0 +1,1948 @@ + + + + + + + + + + + + + + + + + + + + + Probability theoretic inequality | Physics Forums - The Fusion of Science and Community + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + +

                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + +
                                                                                  + + + + +
                                                                                  + + +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + Dismiss Notice + +
                                                                                  + +
                                                                                  + +
                                                                                  + Join Physics Forums Today!
                                                                                  +The friendliest, high quality science and math community on the planet! Everyone who loves science is here! +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  + +

                                                                                  + + + + + + + + +Probability theoretic inequality + + +

                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                    + + + + + + + + +
                                                                                  1. +
                                                                                    + +
                                                                                    + + + Jul 21, 2008 + + + + + #1 + + + +
                                                                                    + + + +
                                                                                    +
                                                                                    +

                                                                                    + winterfors +

                                                                                    + + + +
                                                                                    + + + User Avatar + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + + +

                                                                                    + + + + +

                                                                                    + + + + + + + +
                                                                                    +
                                                                                    + +
                                                                                    + + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    + + + +
                                                                                    + + +
                                                                                    + + + + + + + + Can anyone help me prove under what conditions on the distance function [tex]d(x_1,x_2)[/tex] the following inequality holds for any two probability distributions (represented by probability densities) [tex]p(x)[/tex] and [tex]q(x)[/tex] :
                                                                                    +
                                                                                    +[tex]2\int{\int{d^2(x_1,x_2)p(x_1)q(x_2)dx_1dx_2}
                                                                                    +\geq
                                                                                    +\int{\int{d^2(x_1,x_2)p(x_1)p(x_2)dx_1dx_2} +
                                                                                    +\int{\int{d^2(x_1,x_2)q(x_1)q(x_2)dx_1dx_2}
                                                                                    +[/tex]
                                                                                    +
                                                                                    +where [tex]d^2(x_1,x_2)[/tex] is the squared distance between [tex]x_1[/tex] and [tex]x_2[/tex] in some metric space [tex]\Theta[/tex]. All integrals are over [tex]\Theta[/tex].
                                                                                    +
                                                                                    +One can easily verify by insertion that the inequality holds for a Euclidian metric where [tex]d^2(x_1,x_2)=(x_1-x_2)^2[/tex], with equality if and only if the expectation of [tex]p(x)[/tex] and [tex]q(x)[/tex] are the same.
                                                                                    +
                                                                                    +It must surely hold for some more general class of metrics (described by [tex]d^2(x_1,x_2)[/tex]) - possibly all metrics - but I've so far failed to demonstrate it. Does anyone have an idea of how to prove it in some more general case? +
                                                                                     
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + winterfors, + Jul 21, 2008 + + + + +
                                                                                    + + +
                                                                                    + + + + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + +
                                                                                  2. + + + + +
                                                                                  3. +
                                                                                    +
                                                                                    + jcsd +
                                                                                    +
                                                                                    + + +
                                                                                  4. + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + +
                                                                                  Know someone interested in this topic? Share this thread via Reddit, + Google+, + Twitter, or + Facebook
                                                                                  + +
                                                                                  + + +
                                                                                  + +Can you offer guidance or do you also need help? + +
                                                                                  + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + +
                                                                                  +
                                                                                  + Draft saved + Draft deleted +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + + + + + + +
                                                                                  + +
                                                                                  + + + + + +

                                                                                  + + + + +
                                                                                  + + + + + + + + + + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + Similar Discussions: Probability theoretic inequality +
                                                                                  + +
                                                                                  + +
                                                                                    + + + + +
                                                                                  1. + + + + +
                                                                                  2. + + + +
                                                                                  3. + + +
                                                                                    +
                                                                                    +

                                                                                    + + A basic probability inequality + + + + (Replies: 2) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  4. + + + +
                                                                                  5. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Probability of a probability + + + + (Replies: 4) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  6. + + + +
                                                                                  7. + + +
                                                                                    +
                                                                                    +

                                                                                    + + Empirical and theoretical probability + + + + (Replies: 0) + + +

                                                                                    + + +
                                                                                    +
                                                                                    + +
                                                                                  8. + + + +
                                                                                  9. + + +
                                                                                    + +
                                                                                    + +
                                                                                  10. + + +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  + Loading... +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_1.html new file mode 100644 index 00000000..2bd920e0 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_1.html @@ -0,0 +1,12 @@ +d(x_1,x_2) +p(x) +q(x) +d^2(x_1,x_2) +x_1 +x_2 +\Theta +\Theta +d^2(x_1,x_2)=(x_1-x_2)^2 +p(x) +q(x) +d^2(x_1,x_2) \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2.html new file mode 100644 index 00000000..6ce7c59c --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2.html @@ -0,0 +1,5716 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Info - Latex Upgrade - Physics Forum Powered by MathJax v3 | Physics Forum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + + +

                                                                                  Info Latex Upgrade - Physics Forum Powered by MathJax v3

                                                                                  + + +
                                                                                  + + + +
                                                                                  + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  +
                                                                                  + + + chip + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  chip

                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  Joined Oct 2019
                                                                                  + + + + +
                                                                                  34 Posts | 39+
                                                                                  + + +
                                                                                  Washington
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  The entire LaTeX rendering system has been upgraded to MathJax v3, and we have created a tool to see a preview render of your equations before posting them.
                                                                                  +
                                                                                  +

                                                                                  Insert Math Editor​

                                                                                  In the toolbar, there is an Math Editor button, to make it easy for writing your equations in LaTeX and seeing the rendering in real time!
                                                                                  +
                                                                                  +And then you can insert the math as either a Block or Inline.
                                                                                  +
                                                                                  +Screenshots below:
                                                                                  +
                                                                                  +LaTeX Math Editor
                                                                                  +
                                                                                  +LaTeX Math Equations for Physics
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +

                                                                                  Writing Math Equations​

                                                                                  And when you want to write math equations directly in your post, you are not required to use the Insert Math button.
                                                                                  +
                                                                                  +Same as before, you can wrap your Latex equations with any of the following tags:
                                                                                  +
                                                                                  +

                                                                                  Block Math​

                                                                                  + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [MATH]      [/MATH]
                                                                                  +[LATEX]     [/LATEX]
                                                                                  +[TEX]       [/TEX]
                                                                                  +$$          $$
                                                                                  +
                                                                                  +

                                                                                  +

                                                                                  Inline Math​

                                                                                  + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [IMATH]     [/IMATH]
                                                                                  +[ILATEX]    [/ILATEX]
                                                                                  +[ITEX]      [/ITEX]
                                                                                  +##          ##
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 1 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                    + +
                                                                                    Discussion Starter
                                                                                    + + +
                                                                                  • + +
                                                                                  • + + + +
                                                                                  • + + Last edited: + +
                                                                                  • + + +
                                                                                  + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + Last edited: + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  And some example Latex Equations, with the math expressions used for writing, to see it working...
                                                                                  +
                                                                                  +Newton's Second Law of Motion
                                                                                  +[math]\vec{F} = m\vec{a}[/math]
                                                                                  +
                                                                                  + + \vec{F} = m\vec{a} + + +
                                                                                  +
                                                                                  +Gauss's Law for Electrcity
                                                                                  +[math]\nabla \cdot \vec{E} = \frac{\rho}{\varepsilon_0}[/math]
                                                                                  +
                                                                                  + + \nabla \cdot \vec{E} = \frac{\rho}{\varepsilon_0} + + +
                                                                                  +
                                                                                  +Einstein's Field Equations of General Relativity
                                                                                  +[math]G_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu}[/math]
                                                                                  +
                                                                                  + + G_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu} + + +
                                                                                  +
                                                                                  +The Dirac Equation
                                                                                  +[math](i\gamma^\mu \partial_\mu - m)\psi = 0[/math]
                                                                                  +
                                                                                  + + (i\gamma^\mu \partial_\mu - m)\psi = 0 + + +
                                                                                  +
                                                                                  +The Schrödinger Equation in Quantum Mechanics (Time-Dependent Form)
                                                                                  +[math]i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r}, t) = \hat{H}\Psi(\mathbf{r}, t)[/math]
                                                                                  +
                                                                                  + + i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r}, t) = \hat{H}\Psi(\mathbf{r}, t) + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  Long Math Equations
                                                                                  +For very long equations, it's recommended to use line breaks appropriately. But if you don't add line breaks, and the equation is extremely long (or wider than the display you're using), a horizontal scrollbar will appear below the equation, to show that you can hover your pointer over the equation and scroll horizontally...
                                                                                  +
                                                                                  +For example, here is a very long equation without the align tags used in MathJax v3:
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +P(\text{16 out of 20}) = \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\
                                                                                  +P(\text{17 out of 20}) = \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\
                                                                                  +P(\text{18 out of 20}) = \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\
                                                                                  +P(\text{19 out of 20}) = \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\
                                                                                  +P(\text{20 out of 20}) = \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  +And this is how the equation looks with the horizontal scrollbar:
                                                                                  +
                                                                                  + + +P(\text{16 out of 20}) = \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\ +P(\text{17 out of 20}) = \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\ +P(\text{18 out of 20}) = \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\ +P(\text{19 out of 20}) = \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\ +P(\text{20 out of 20}) = \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595 + + + +
                                                                                  +
                                                                                  +The better way to write the exact same equation would be to add the align tags used in MathJax v3, to recognize the \\ as line breaks:
                                                                                  +
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +\begin{align*}
                                                                                  +P(\text{16 out of 20}) &= \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\
                                                                                  +P(\text{17 out of 20}) &= \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\
                                                                                  +P(\text{18 out of 20}) &= \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\
                                                                                  +P(\text{19 out of 20}) &= \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\
                                                                                  +P(\text{20 out of 20}) &= \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595
                                                                                  +\end{align*}
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  +And then it display in a more readable format, as seen here:
                                                                                  +
                                                                                  + + +\begin{align*} +P(\text{16 out of 20}) &= \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\ +P(\text{17 out of 20}) &= \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\ +P(\text{18 out of 20}) &= \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\ +P(\text{19 out of 20}) &= \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\ +P(\text{20 out of 20}) &= \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595 +\end{align*} + + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +

                                                                                  Writing Physics Equations​

                                                                                  We have also installed a physics science package into MathJax, for physics notation and equation support.
                                                                                  +
                                                                                  +Here are a few physics-related examples:
                                                                                  +
                                                                                  +Derivatives
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\frac{d}{dx} f(x) \quad \text{versus} \quad \dv{f}{x}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \frac{d}{dx} f(x) \quad \text{versus} \quad \dv{f}{x} + + +
                                                                                  +
                                                                                  +Partial Derivatives
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\frac{\partial}{\partial x} f(x,y) \quad \text{versus} \quad \pdv{f}{x}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \frac{\partial}{\partial x} f(x,y) \quad \text{versus} \quad \pdv{f}{x} + + +
                                                                                  +
                                                                                  +Vectors
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\vec{v} \quad \text{versus} \quad \vb{v} \quad \text{and} \quad \vec{v} \cdot \vec{w} \quad \text{versus} \quad \vb{v} \vdot \vb{w}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \vec{v} \quad \text{versus} \quad \vb{v} \quad \text{and} \quad \vec{v} \cdot \vec{w} \quad \text{versus} \quad \vb{v} \vdot \vb{w} + + +
                                                                                  +
                                                                                  +Gradient, Divergence, Curl
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\vec{\nabla} \phi \quad \text{versus} \quad \grad{\phi}[/math]
                                                                                  +[math]\vec{\nabla} \cdot \vec{v} \quad \text{versus} \quad \div{\vb{v}}[/math]
                                                                                  +[math]\vec{\nabla} \times \vec{v} \quad \text{versus} \quad \curl{\vb{v}}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \vec{\nabla} \phi \quad \text{versus} \quad \grad{\phi} + + +
                                                                                  + + \vec{\nabla} \cdot \vec{v} \quad \text{versus} \quad \div{\vb{v}} + + +
                                                                                  + + \vec{\nabla} \times \vec{v} \quad \text{versus} \quad \curl{\vb{v}} + + +
                                                                                  +
                                                                                  +Bra-Ket Notation
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]\langle \psi | \phi \rangle \quad \text{versus} \quad \braket{\psi}{\phi}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + \langle \psi | \phi \rangle \quad \text{versus} \quad \braket{\psi}{\phi} + + +
                                                                                  +
                                                                                  +Commutators and Anticommutators
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math][\hat{A}, \hat{B}] \quad \text{versus} \quad \comm{\hat{A}}{\hat{B}}[/math]
                                                                                  +[math]\{\hat{A}, \hat{B}\} \quad \text{versus} \quad \acomm{\hat{A}}{\hat{B}}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + [\hat{A}, \hat{B}] \quad \text{versus} \quad \comm{\hat{A}}{\hat{B}} + + +
                                                                                  + + \{\hat{A}, \hat{B}\} \quad \text{versus} \quad \acomm{\hat{A}}{\hat{B}} + + +
                                                                                  +
                                                                                  +Matrices
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]
                                                                                  +\begin{pmatrix}
                                                                                  +a & b \\
                                                                                  +c & d
                                                                                  +\end{pmatrix} \quad \text{versus} \quad \mqty(a & b \\ c & d)
                                                                                  +[/math]
                                                                                  +
                                                                                  +

                                                                                  + + +\begin{pmatrix} +a & b \\ +c & d +\end{pmatrix} \quad \text{versus} \quad \mqty(a & b \\ c & d) + + + +
                                                                                  +
                                                                                  +Dirac Notation (Ket, Bra, Operators)
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]|\psi\rangle \quad \text{versus} \quad \ket{\psi}[/math]
                                                                                  +[math]\langle\psi| \quad \text{versus} \quad \bra{\psi}[/math]
                                                                                  +[math]\hat{H}|\psi\rangle \quad \text{versus} \quad \op{H}{\psi}[/math]
                                                                                  +
                                                                                  +

                                                                                  + + |\psi\rangle \quad \text{versus} \quad \ket{\psi} + + +
                                                                                  + + \langle\psi| \quad \text{versus} \quad \bra{\psi} + + +
                                                                                  + + \hat{H}|\psi\rangle \quad \text{versus} \quad \op{H}{\psi} + + +
                                                                                  +
                                                                                  +Quick Quadratic Equation
                                                                                  + + + + + +
                                                                                  +
                                                                                  + Code: +
                                                                                  +
                                                                                  +
                                                                                  [math]ax^2 + bx + c = 0 \quad \text{versus} \quad \qty(a x^2 + b x + c = 0)[/math]
                                                                                  +
                                                                                  +

                                                                                  + + ax^2 + bx + c = 0 \quad \text{versus} \quad \qty(a x^2 + b x + c = 0) + + +
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 1 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  This is awesome!
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + +
                                                                                  + + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + + + + + + +
                                                                                  + + + +
                                                                                  + + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + +
                                                                                  + +
                                                                                  That looks nice!
                                                                                  + +
                                                                                  + +
                                                                                   
                                                                                  + + + +
                                                                                  + + + + + + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  + + + +
                                                                                    + +
                                                                                  • Like
                                                                                  • + +
                                                                                  + + + +Reactions: + + + + + + + + + + + + + + + + + 2 users + + + + +
                                                                                  + + + + + +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + +
                                                                                  + +
                                                                                  + +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + +
                                                                                  + + + + + + + + + + + + +
                                                                                  + + + + + +
                                                                                  + + + + + + + + +
                                                                                  + + + +
                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2_1.html new file mode 100644 index 00000000..b124687d --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/math_physicsforums_2_1.html @@ -0,0 +1,20 @@ +\vec{F} = m\vec{a} +\nabla \cdot \vec{E} = \frac{\rho}{\varepsilon_0} +G_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8\pi G}{c^4} T_{\mu\nu} +(i\gamma^\mu \partial_\mu - m)\psi = 0 +i\hbar\frac{\partial}{\partial t}\Psi(\mathbf{r}, t) = \hat{H}\Psi(\mathbf{r}, t) +P(\text{16 out of 20}) = \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\P(\text{17 out of 20}) = \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\P(\text{18 out of 20}) = \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\P(\text{19 out of 20}) = \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\P(\text{20 out of 20}) = \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595 +\begin{align*}P(\text{16 out of 20}) &= \frac{20!}{16! \times 4!} \times 0.85^{16} \times 0.15^{4} = 0.182122 \\P(\text{17 out of 20}) &= \frac{20!}{17! \times 3!} \times 0.85^{17} \times 0.15^{3} = 0.242829 \\P(\text{18 out of 20}) &= \frac{20!}{18! \times 2!} \times 0.85^{18} \times 0.15^{2} = 0.229338 \\P(\text{19 out of 20}) &= \frac{20!}{19! \times 1!} \times 0.85^{19} \times 0.15^{1} = 0.136798 \\P(\text{20 out of 20}) &= \frac{20!}{20! \times 0!} \times 0.85^{20} \times 0.15^{0} = 0.0387595\end{align*} +\frac{d}{dx} f(x) \quad \text{versus} \quad \dv{f}{x} +\frac{\partial}{\partial x} f(x,y) \quad \text{versus} \quad \pdv{f}{x} +\vec{v} \quad \text{versus} \quad \vb{v} \quad \text{and} \quad \vec{v} \cdot \vec{w} \quad \text{versus} \quad \vb{v} \vdot \vb{w} +\vec{\nabla} \phi \quad \text{versus} \quad \grad{\phi} +\vec{\nabla} \cdot \vec{v} \quad \text{versus} \quad \div{\vb{v}} +\vec{\nabla} \times \vec{v} \quad \text{versus} \quad \curl{\vb{v}} +\langle \psi | \phi \rangle \quad \text{versus} \quad \braket{\psi}{\phi} +[\hat{A}, \hat{B}] \quad \text{versus} \quad \comm{\hat{A}}{\hat{B}} +\{\hat{A}, \hat{B}\} \quad \text{versus} \quad \acomm{\hat{A}}{\hat{B}} +\begin{pmatrix}a & b \\c & d\end{pmatrix} \quad \text{versus} \quad \mqty(a & b \\ c & d) +|\psi\rangle \quad \text{versus} \quad \ket{\psi} +\langle\psi| \quad \text{versus} \quad \bra{\psi} +\hat{H}|\psi\rangle \quad \text{versus} \quad \op{H}{\psi} diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml.html diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html new file mode 100644 index 00000000..131180a1 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html @@ -0,0 +1,8 @@ +x=\frac{-b±\sqrt{{b}^{2}-4ac}}{2a}\text{.} +\begin{array}{rl}\stackrel{˙}{x}& =\sigma \left(y-x\right)\\ \stackrel{˙}{y}& =\rho x-y-xz\\ \stackrel{˙}{z}& =-\beta z+xy\end{array} +{\left(\sum _{k=1}^{n}{a}_{k}{b}_{k}\right)}^{2}\le \left(\sum _{k=1}^{n}{a}_{k}^{2}\right)\left(\sum _{k=1}^{n}{b}_{k}^{2}\right) +{\mathbf{V}}_{1}×{\mathbf{V}}_{2}=|\begin{array}{ccc}\mathbf{i}& \mathbf{j}& \mathbf{k}\\ \frac{\mathrm{\partial }X}{\mathrm{\partial }u}& \frac{\mathrm{\partial }Y}{\mathrm{\partial }u}& 0\\ \frac{\mathrm{\partial }X}{\mathrm{\partial }v}& \frac{\mathrm{\partial }Y}{\mathrm{\partial }v}& 0\end{array}| +P\left(E\right)=\left(\genfrac{}{}{0}{}{n}{k}\right){p}^{k}{\left(1-p\right)}^{n-k} +\frac{1}{\left(\sqrt{\varphi \sqrt{5}}-\varphi \right){e}^{\frac{2}{5}\pi }}=1+\frac{{e}^{-2\pi }}{1+\frac{{e}^{-4\pi }}{1+\frac{{e}^{-6\pi }}{1+\frac{{e}^{-8\pi }}{1+\dots }}}} +1+\frac{{q}^{2}}{\left(1-q\right)}+\frac{{q}^{6}}{\left(1-q\right)\left(1-{q}^{2}\right)}+\cdots =\prod _{j=0}^{\mathrm{\infty }}\frac{1}{\left(1-{q}^{5j+2}\right)\left(1-{q}^{5j+3}\right)},\text{for }|q|<1. +\begin{array}{rl}\mathrm{\nabla }×\stackrel{\to }{\mathbf{B}}-\frac{1}{c}\frac{\mathrm{\partial }\stackrel{\to }{\mathbf{E}}}{\mathrm{\partial }t}& =\frac{4\pi }{c}\stackrel{\to }{\mathbf{j}}\\ \mathrm{\nabla }\cdot \stackrel{\to }{\mathbf{E}}& =4\pi \rho \\ \mathrm{\nabla }×\stackrel{\to }{\mathbf{E}}+\frac{1}{c}\frac{\mathrm{\partial }\stackrel{\to }{\mathbf{B}}}{\mathrm{\partial }t}& =\stackrel{\to }{\mathbf{0}}\\ \mathrm{\nabla }\cdot \stackrel{\to }{\mathbf{B}}& =0\end{array} diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_prefix_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathjax_tex_chtml_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html similarity index 90% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html index ece24084..d013b5f9 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathtex_script_type.html @@ -8,5 +8,7 @@ + + \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathtex_script_type_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathtex_script_type_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathtex_script_type_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/mathtex_script_type_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/stackexchange_1_span-math-container_latex_mathjax_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation_1.html b/tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation_1.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation_1.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/ccmath/wikipedia_1_math_annotation_1.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/cccode.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/cccode.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/cccode.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/cccode.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/complex_list.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/complex_list.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/complex_list.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/complex_list.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/image.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/image.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/image.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/image.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/iscctag.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/iscctag.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/iscctag.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/iscctag.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/only_table.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/only_table.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/only_table.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/only_table.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/raw_html_attr.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/raw_html_attr.html similarity index 77% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/raw_html_attr.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/raw_html_attr.html index 5b33ffa1..e90fe9f1 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/raw_html_attr.html +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/raw_html_attr.html @@ -1,5 +1,5 @@ -E=MC^2 +E=MC^2 这是python
                                                                                     
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/simple_list.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/simple_list.html
                                                                                  similarity index 100%
                                                                                  rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/simple_list.html
                                                                                  rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/simple_list.html
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/simple_para.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/simple_para.html
                                                                                  similarity index 100%
                                                                                  rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/simple_para.html
                                                                                  rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/simple_para.html
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table.html
                                                                                  similarity index 100%
                                                                                  rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table.html
                                                                                  rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table.html
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_exclude.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_exclude.html
                                                                                  similarity index 100%
                                                                                  rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_exclude.html
                                                                                  rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_exclude.html
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_after_code.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_after_code.html
                                                                                  similarity index 100%
                                                                                  rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_after_code.html
                                                                                  rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_after_code.html
                                                                                  diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_code_expect.json b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_code_expect.json
                                                                                  new file mode 100644
                                                                                  index 00000000..4f6fc9ed
                                                                                  --- /dev/null
                                                                                  +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_code_expect.json
                                                                                  @@ -0,0 +1,299 @@
                                                                                  +
                                                                                  1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br>22<br>23<br>24<br>25<br>26<br>27<br>28<br>29<br>30<br>31<br>32<br>33<br>34<br>35<br>36<br>37<br>38<br>39<br>40<br>41<br>42<br>43<br>44<br>45<br>46<br>47<br>48<br>49<br>50<br>51<br>52<br>53<br>54<br>55<br>56<br>57<br>58<br>59<br>60<br>61<br>62<br>63<br>64<br>65<br>66<br>67<br>68<br>69<br>70<br>71<br>72<br>73<br>74<br>75<br>76<br>77<br>78<br>79<br>80<br>81<br>82<br>83<br>84<br>85<br>86<br>87<br>88<br>89<br>90<br>91<br>92<br>93<br>94<br>95<br>96<br>97<br>98<br>99<br>100<br>101<br>102<br>103<br>104<br>105<br>106<br>107<br>108<br>109<br>110<br>111<br>112<br>113<br>114<br>115<br>116<br>117<br>118<br>119<br>120<br>121<br>122<br>123<br>124<br>125<br>126<br>127<br>128<br>129<br>130<br>131<br>132<br>133<br>134<br>135<br>136<br>137<br>138<br>139<br>140<br>141<br>142<br>143<br>144<br>145<br>146<br>147<br>148<br>149<br>150<br>151<br>152<br>153<br>154<br>155<br>156<br>157<br>158<br>159<br>160<br>161<br>162<br>163<br>164<br>165<br>166<br>167<br>168<br>169<br>170<br>171<br>172<br>173<br>174<br>175<br>176<br>177<br>178<br>179<br>180<br>181<br>182<br>183<br>184<br>185<br>186<br>187<br>188<br>189<br>190<br>191<br>192<br>193<br>194<br>195<br>196<br>197<br>198<br>199<br>200<br>201<br>202<br>203<br>204<br>205<br>206<br>207<br>208<br>209<br>210<br>211<br>212<br>213<br>214<br>215<br>216<br>217<br>218<br>219<br>220<br>221<br>222<br>223<br>224<br>225<br>226<br>227<br>228<br>229<br>230<br>231<br>232<br>233<br>234<br>235<br>236<br>237<br>238<br>239<br>240<br>241<br>242<br>243<br>244<br>245<br>246<br>247<br>248<br>249<br>250<br>251<br>252<br>253<br>254<br>255<br>256<br>257<br>258<br>259<br>260<br>261<br>262<br>263<br>264<br>265<br>266<br>267<br>268<br>269<br>270<br>271<br>272<br>273<br>274<br>275<br>276<br>277<br>278<br>279<br>280<br>281<br>282<br>283<br>284<br>285<br>286<br>287<br>288<br>289<br>290<br>291<br>292<br>293<br>294<br>295<br>296<br>297<br>298<br>299<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + +<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>My JSP'register.jsp'starting page</title> +</head> + +<body> +<script type="text/javascript"> +function validate(){ +if(registerForm.uname.value==""){ +alert("账号不能为空!"); +return; +} +if(registerForm.upwd.value==""){ +alert("密码不能为空!"); +return; +} +registerForm.submit(); +} +</script> + +<form name="registerForm"action="DoregServlet"method="post"> + +用户名:<input type="text"name="uname"><br> +密 码: <input type="password"name="upwd"> <br> +<input type="submit"value="注册"> +<a href="denglu.jsp">登录</a> +</form> + +</body> +</html> + + + +packagecom.servlet; + +importjava.io.IOException; +importjava.io.PrintWriter; + +importjavax.servlet.ServletException; +importjavax.servlet.http.HttpServlet; +importjavax.servlet.http.HttpServletRequest; +importjavax.servlet.http.HttpServletResponse; + +importcom.dao.UsersDao; + +publicclassservlet3extendsHttpServlet { + +publicservlet3() { +super(); +} + + +publicvoiddestroy() { +super.destroy();// Just puts "destroy" string in log +// Put your code here +} + + +publicvoiddoGet(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { +doPost (request, response); + +} + + +publicvoiddoPost(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +String uname = request.getParameter("uname"); +String upwd = request.getParameter("upwd"); +UsersDao usersDao =newUsersDao(); +inti=usersDao.reg(uname, upwd); +if(i>0){ + +response.setHeader("refresh","2;url=login.jsp"); +}else{ + +response.setHeader("refresh","2;url=reg.jsp"); +} +} + +/** +* Initialization of the servlet. <br> +* +* @throws ServletException if an error occurs +*/ +publicvoidinit()throwsServletException { +// Put your code here +} + +} + + + + + +packagecom.sf.servlet; + +importjava.io.IOException; +importjava.io.PrintWriter; + +importjavax.servlet.ServletException; +importjavax.servlet.http.HttpServlet; +importjavax.servlet.http.HttpServletRequest; +importjavax.servlet.http.HttpServletResponse; + +importcom.sf.dao.MsgDao; +importcom.sf.dao.UsersDao; + +publicclassDoregservletextendsHttpServlet { + +/** +* Constructor of the object. +*/ +publicDoregservlet() { +super(); +} + +/** +* Destruction of the servlet. <br> +*/ +publicvoiddestroy() { +super.destroy();// Just puts "destroy" string in log +// Put your code here +} + +publicvoiddoGet(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +response.setContentType("text/html"); +PrintWriter out = response.getWriter(); +request.setCharacterEncoding("utf-8"); +String uname = request.getParameter("uname"); +String upwd = request.getParameter("upwd"); + +UsersDao ud =newUsersDao(); +MsgDao md =newMsgDao(); +if(ud.register(uname, upwd) >0) { +request.getSession().setAttribute("uname", uname); +request.getRequestDispatcher("denglu.jsp").forward(request, +response); +}else{ +out.print("注册失败,请重新注册......."); +response.setHeader("refresh","3;url=reg.jsp"); +} +} +publicvoiddoPost(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +doGet(request,response); +} + +/** +* Initialization of the servlet. <br> +* +* @throws ServletException if an error occurs +*/ +publicvoidinit()throwsServletException { +// Put your code here +} + +} + + + + + +packagecom.servlet; + +importjava.io.IOException; +importjava.io.PrintWriter; + +importjavax.servlet.ServletException; +importjavax.servlet.http.HttpServlet; +importjavax.servlet.http.HttpServletRequest; +importjavax.servlet.http.HttpServletResponse; + +importcom.dao.MsgDao; + +publicclassservlet5extendsHttpServlet { + +publicservlet5() { +super(); +} + +publicvoiddestroy() { +super.destroy();// Just puts "destroy" string in log +// Put your code here +} + + +publicvoiddoGet(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +doPost(request, response); +} + + +publicvoiddoPost(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +request.setCharacterEncoding("utf-8"); + +intid=Integer.parseInt(request.getParameter("id")); +MsgDao md=newMsgDao(); +md.delMail(id); +response.getWriter().print("刪除成功....."); +response.setHeader("refresh","2;url=main.jsp"); +response.sendRedirect("main2.jsp"); +} + + +publicvoidinit()throwsServletException { + +} + +} + + + + + + + +packagecom.sf.servlet; + +importjava.io.IOException; +importjava.io.PrintWriter; + +importjavax.servlet.ServletException; +importjavax.servlet.http.HttpServlet; +importjavax.servlet.http.HttpServletRequest; +importjavax.servlet.http.HttpServletResponse; + +importcom.sf.dao.MsgDao; +importcom.sf.entity.Msg; + +publicclassDowriteservletextendsHttpServlet { + +/** +* Constructor of the object. +*/ +publicDowriteservlet() { +super(); +} + +/** +* Destruction of the servlet. <br> +*/ +publicvoiddestroy() { +super.destroy();// Just puts "destroy" string in log +// Put your code here +} + +publicvoiddoGet(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +response.setContentType("text/html"); +PrintWriter out = response.getWriter(); +request.setCharacterEncoding("utf-8"); +String uname = (String) request.getSession().getAttribute("uname"); +String sendto = request.getParameter("receiver"); +String title = request.getParameter("title"); +String content = request.getParameter("content"); + +Msg m =newMsg(); +m.setMsgcontent(content); +m.setUsername(uname); +m.setSendto(sendto); +m.setTitle(title); + +MsgDao md =newMsgDao(); +md.addMsg(m); + +out.print("发送成功....."); +response.setHeader("refresh","3;url=main.jsp"); +} + +publicvoiddoPost(HttpServletRequest request, HttpServletResponse response) +throwsServletException, IOException { + +doGet(request,response); } + +/** +* Initialization of the servlet. <br> +* +* @throws ServletException if an error occurs +*/ +publicvoidinit()throwsServletException { +} + +}
                                                                                  diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_image.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_image.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_image.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_image.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_image_expcet.json b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_image_expcet.json similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_image_expcet.json rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_image_expcet.json diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_rowspan_colspan.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_rowspan_colspan.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_include_rowspan_colspan.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_include_rowspan_colspan.html diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_code.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_code.html new file mode 100644 index 00000000..d1961838 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_code.html @@ -0,0 +1,1001 @@ + + + + + + + + + + + + + + 第十三周作业 - 徐涛% - 博客园 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +

                                                                                  + + 第十三周作业 + + + + +

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + +
                                                                                  +
                                                                                  1
                                                                                  +
                                                                                  2
                                                                                  +
                                                                                  3
                                                                                  +
                                                                                  4
                                                                                  +
                                                                                  5
                                                                                  +
                                                                                  6
                                                                                  +
                                                                                  7
                                                                                  +
                                                                                  8
                                                                                  +
                                                                                  9
                                                                                  +
                                                                                  10
                                                                                  +
                                                                                  11
                                                                                  +
                                                                                  12
                                                                                  +
                                                                                  13
                                                                                  +
                                                                                  14
                                                                                  +
                                                                                  15
                                                                                  +
                                                                                  16
                                                                                  +
                                                                                  17
                                                                                  +
                                                                                  18
                                                                                  +
                                                                                  19
                                                                                  +
                                                                                  20
                                                                                  +
                                                                                  21
                                                                                  +
                                                                                  22
                                                                                  +
                                                                                  23
                                                                                  +
                                                                                  24
                                                                                  +
                                                                                  25
                                                                                  +
                                                                                  26
                                                                                  +
                                                                                  27
                                                                                  +
                                                                                  28
                                                                                  +
                                                                                  29
                                                                                  +
                                                                                  30
                                                                                  +
                                                                                  31
                                                                                  +
                                                                                  32
                                                                                  +
                                                                                  33
                                                                                  +
                                                                                  34
                                                                                  +
                                                                                  35
                                                                                  +
                                                                                  36
                                                                                  +
                                                                                  37
                                                                                  +
                                                                                  38
                                                                                  +
                                                                                  39
                                                                                  +
                                                                                  40
                                                                                  +
                                                                                  41
                                                                                  +
                                                                                  42
                                                                                  +
                                                                                  43
                                                                                  +
                                                                                  44
                                                                                  +
                                                                                  45
                                                                                  +
                                                                                  46
                                                                                  +
                                                                                  47
                                                                                  +
                                                                                  48
                                                                                  +
                                                                                  49
                                                                                  +
                                                                                  50
                                                                                  +
                                                                                  51
                                                                                  +
                                                                                  52
                                                                                  +
                                                                                  53
                                                                                  +
                                                                                  54
                                                                                  +
                                                                                  55
                                                                                  +
                                                                                  56
                                                                                  +
                                                                                  57
                                                                                  +
                                                                                  58
                                                                                  +
                                                                                  59
                                                                                  +
                                                                                  60
                                                                                  +
                                                                                  61
                                                                                  +
                                                                                  62
                                                                                  +
                                                                                  63
                                                                                  +
                                                                                  64
                                                                                  +
                                                                                  65
                                                                                  +
                                                                                  66
                                                                                  +
                                                                                  67
                                                                                  +
                                                                                  68
                                                                                  +
                                                                                  69
                                                                                  +
                                                                                  70
                                                                                  +
                                                                                  71
                                                                                  +
                                                                                  72
                                                                                  +
                                                                                  73
                                                                                  +
                                                                                  74
                                                                                  +
                                                                                  75
                                                                                  +
                                                                                  76
                                                                                  +
                                                                                  77
                                                                                  +
                                                                                  78
                                                                                  +
                                                                                  79
                                                                                  +
                                                                                  80
                                                                                  +
                                                                                  81
                                                                                  +
                                                                                  82
                                                                                  +
                                                                                  83
                                                                                  +
                                                                                  84
                                                                                  +
                                                                                  85
                                                                                  +
                                                                                  86
                                                                                  +
                                                                                  87
                                                                                  +
                                                                                  88
                                                                                  +
                                                                                  89
                                                                                  +
                                                                                  90
                                                                                  +
                                                                                  91
                                                                                  +
                                                                                  92
                                                                                  +
                                                                                  93
                                                                                  +
                                                                                  94
                                                                                  +
                                                                                  95
                                                                                  +
                                                                                  96
                                                                                  +
                                                                                  97
                                                                                  +
                                                                                  98
                                                                                  +
                                                                                  99
                                                                                  +
                                                                                  100
                                                                                  +
                                                                                  101
                                                                                  +
                                                                                  102
                                                                                  +
                                                                                  103
                                                                                  +
                                                                                  104
                                                                                  +
                                                                                  105
                                                                                  +
                                                                                  106
                                                                                  +
                                                                                  107
                                                                                  +
                                                                                  108
                                                                                  +
                                                                                  109
                                                                                  +
                                                                                  110
                                                                                  +
                                                                                  111
                                                                                  +
                                                                                  112
                                                                                  +
                                                                                  113
                                                                                  +
                                                                                  114
                                                                                  +
                                                                                  115
                                                                                  +
                                                                                  116
                                                                                  +
                                                                                  117
                                                                                  +
                                                                                  118
                                                                                  +
                                                                                  119
                                                                                  +
                                                                                  120
                                                                                  +
                                                                                  121
                                                                                  +
                                                                                  122
                                                                                  +
                                                                                  123
                                                                                  +
                                                                                  124
                                                                                  +
                                                                                  125
                                                                                  +
                                                                                  126
                                                                                  +
                                                                                  127
                                                                                  +
                                                                                  128
                                                                                  +
                                                                                  129
                                                                                  +
                                                                                  130
                                                                                  +
                                                                                  131
                                                                                  +
                                                                                  132
                                                                                  +
                                                                                  133
                                                                                  +
                                                                                  134
                                                                                  +
                                                                                  135
                                                                                  +
                                                                                  136
                                                                                  +
                                                                                  137
                                                                                  +
                                                                                  138
                                                                                  +
                                                                                  139
                                                                                  +
                                                                                  140
                                                                                  +
                                                                                  141
                                                                                  +
                                                                                  142
                                                                                  +
                                                                                  143
                                                                                  +
                                                                                  144
                                                                                  +
                                                                                  145
                                                                                  +
                                                                                  146
                                                                                  +
                                                                                  147
                                                                                  +
                                                                                  148
                                                                                  +
                                                                                  149
                                                                                  +
                                                                                  150
                                                                                  +
                                                                                  151
                                                                                  +
                                                                                  152
                                                                                  +
                                                                                  153
                                                                                  +
                                                                                  154
                                                                                  +
                                                                                  155
                                                                                  +
                                                                                  156
                                                                                  +
                                                                                  157
                                                                                  +
                                                                                  158
                                                                                  +
                                                                                  159
                                                                                  +
                                                                                  160
                                                                                  +
                                                                                  161
                                                                                  +
                                                                                  162
                                                                                  +
                                                                                  163
                                                                                  +
                                                                                  164
                                                                                  +
                                                                                  165
                                                                                  +
                                                                                  166
                                                                                  +
                                                                                  167
                                                                                  +
                                                                                  168
                                                                                  +
                                                                                  169
                                                                                  +
                                                                                  170
                                                                                  +
                                                                                  171
                                                                                  +
                                                                                  172
                                                                                  +
                                                                                  173
                                                                                  +
                                                                                  174
                                                                                  +
                                                                                  175
                                                                                  +
                                                                                  176
                                                                                  +
                                                                                  177
                                                                                  +
                                                                                  178
                                                                                  +
                                                                                  179
                                                                                  +
                                                                                  180
                                                                                  +
                                                                                  181
                                                                                  +
                                                                                  182
                                                                                  +
                                                                                  183
                                                                                  +
                                                                                  184
                                                                                  +
                                                                                  185
                                                                                  +
                                                                                  186
                                                                                  +
                                                                                  187
                                                                                  +
                                                                                  188
                                                                                  +
                                                                                  189
                                                                                  +
                                                                                  190
                                                                                  +
                                                                                  191
                                                                                  +
                                                                                  192
                                                                                  +
                                                                                  193
                                                                                  +
                                                                                  194
                                                                                  +
                                                                                  195
                                                                                  +
                                                                                  196
                                                                                  +
                                                                                  197
                                                                                  +
                                                                                  198
                                                                                  +
                                                                                  199
                                                                                  +
                                                                                  200
                                                                                  +
                                                                                  201
                                                                                  +
                                                                                  202
                                                                                  +
                                                                                  203
                                                                                  +
                                                                                  204
                                                                                  +
                                                                                  205
                                                                                  +
                                                                                  206
                                                                                  +
                                                                                  207
                                                                                  +
                                                                                  208
                                                                                  +
                                                                                  209
                                                                                  +
                                                                                  210
                                                                                  +
                                                                                  211
                                                                                  +
                                                                                  212
                                                                                  +
                                                                                  213
                                                                                  +
                                                                                  214
                                                                                  +
                                                                                  215
                                                                                  +
                                                                                  216
                                                                                  +
                                                                                  217
                                                                                  +
                                                                                  218
                                                                                  +
                                                                                  219
                                                                                  +
                                                                                  220
                                                                                  +
                                                                                  221
                                                                                  +
                                                                                  222
                                                                                  +
                                                                                  223
                                                                                  +
                                                                                  224
                                                                                  +
                                                                                  225
                                                                                  +
                                                                                  226
                                                                                  +
                                                                                  227
                                                                                  +
                                                                                  228
                                                                                  +
                                                                                  229
                                                                                  +
                                                                                  230
                                                                                  +
                                                                                  231
                                                                                  +
                                                                                  232
                                                                                  +
                                                                                  233
                                                                                  +
                                                                                  234
                                                                                  +
                                                                                  235
                                                                                  +
                                                                                  236
                                                                                  +
                                                                                  237
                                                                                  +
                                                                                  238
                                                                                  +
                                                                                  239
                                                                                  +
                                                                                  240
                                                                                  +
                                                                                  241
                                                                                  +
                                                                                  242
                                                                                  +
                                                                                  243
                                                                                  +
                                                                                  244
                                                                                  +
                                                                                  245
                                                                                  +
                                                                                  246
                                                                                  +
                                                                                  247
                                                                                  +
                                                                                  248
                                                                                  +
                                                                                  249
                                                                                  +
                                                                                  250
                                                                                  +
                                                                                  251
                                                                                  +
                                                                                  252
                                                                                  +
                                                                                  253
                                                                                  +
                                                                                  254
                                                                                  +
                                                                                  255
                                                                                  +
                                                                                  256
                                                                                  +
                                                                                  257
                                                                                  +
                                                                                  258
                                                                                  +
                                                                                  259
                                                                                  +
                                                                                  260
                                                                                  +
                                                                                  261
                                                                                  +
                                                                                  262
                                                                                  +
                                                                                  263
                                                                                  +
                                                                                  264
                                                                                  +
                                                                                  265
                                                                                  +
                                                                                  266
                                                                                  +
                                                                                  267
                                                                                  +
                                                                                  268
                                                                                  +
                                                                                  269
                                                                                  +
                                                                                  270
                                                                                  +
                                                                                  271
                                                                                  +
                                                                                  272
                                                                                  +
                                                                                  273
                                                                                  +
                                                                                  274
                                                                                  +
                                                                                  275
                                                                                  +
                                                                                  276
                                                                                  +
                                                                                  277
                                                                                  +
                                                                                  278
                                                                                  +
                                                                                  279
                                                                                  +
                                                                                  280
                                                                                  +
                                                                                  281
                                                                                  +
                                                                                  282
                                                                                  +
                                                                                  283
                                                                                  +
                                                                                  284
                                                                                  +
                                                                                  285
                                                                                  +
                                                                                  286
                                                                                  +
                                                                                  287
                                                                                  +
                                                                                  288
                                                                                  +
                                                                                  289
                                                                                  +
                                                                                  290
                                                                                  +
                                                                                  291
                                                                                  +
                                                                                  292
                                                                                  +
                                                                                  293
                                                                                  +
                                                                                  294
                                                                                  +
                                                                                  295
                                                                                  +
                                                                                  296
                                                                                  +
                                                                                  297
                                                                                  +
                                                                                  298
                                                                                  +
                                                                                  299
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
                                                                                  +
                                                                                  <%
                                                                                  +
                                                                                  String path = request.getContextPath();
                                                                                  +
                                                                                  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                                                                                  +
                                                                                  %>
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                                                                  +
                                                                                  <html>
                                                                                  +
                                                                                    <head>
                                                                                  +
                                                                                      <title>My JSP 'register.jsp' starting page</title>   
                                                                                  +
                                                                                    </head>
                                                                                  +
                                                                                    
                                                                                  +
                                                                                    <body>
                                                                                  +
                                                                                    <script type="text/javascript">
                                                                                  +
                                                                                          function validate(){
                                                                                  +
                                                                                              if(registerForm.uname.value==""){
                                                                                  +
                                                                                                  alert("账号不能为空!");
                                                                                  +
                                                                                                  return;
                                                                                  +
                                                                                              }
                                                                                  +
                                                                                              if(registerForm.upwd.value==""){
                                                                                  +
                                                                                                  alert("密码不能为空!");
                                                                                  +
                                                                                                  return;
                                                                                  +
                                                                                              }
                                                                                  +
                                                                                              registerForm.submit();
                                                                                  +
                                                                                          }
                                                                                  +
                                                                                      </script>
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      <form  name="registerForm" action="DoregServlet" method="post">
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          用户名:<input type="text" name="uname"><br>
                                                                                  +
                                                                                          密   码: <input type="password" name="upwd"> <br>
                                                                                  +
                                                                                          <input type="submit" value="注册" >
                                                                                  +
                                                                                          <a href="denglu.jsp">登录</a>
                                                                                  +
                                                                                      </form>
                                                                                  +
                                                                                       
                                                                                  +
                                                                                    </body>
                                                                                  +
                                                                                  </html>
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  package com.servlet;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import java.io.IOException;
                                                                                  +
                                                                                  import java.io.PrintWriter;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import javax.servlet.ServletException;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServlet;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletRequest;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletResponse;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import com.dao.UsersDao;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  public class servlet3 extends HttpServlet {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public servlet3() {
                                                                                  +
                                                                                          super();
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      public void destroy() {
                                                                                  +
                                                                                          super.destroy(); // Just puts "destroy" string in log
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                          doPost (request, response);
                                                                                  +
                                                                                           
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      public void doPost(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          String uname = request.getParameter("uname");
                                                                                  +
                                                                                          String upwd = request.getParameter("upwd");
                                                                                  +
                                                                                          UsersDao usersDao = new UsersDao();
                                                                                  +
                                                                                          int i=usersDao.reg(uname, upwd);
                                                                                  +
                                                                                          if(i>0){
                                                                                  +
                                                                                           
                                                                                  +
                                                                                              response.setHeader("refresh""2;url=login.jsp");
                                                                                  +
                                                                                          }else{
                                                                                  +
                                                                                       
                                                                                  +
                                                                                              response.setHeader("refresh""2;url=reg.jsp");
                                                                                  +
                                                                                          }
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Initialization of the servlet. <br>
                                                                                  +
                                                                                       *
                                                                                  +
                                                                                       * @throws ServletException if an error occurs
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public void init() throws ServletException {
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  package com.sf.servlet;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import java.io.IOException;
                                                                                  +
                                                                                  import java.io.PrintWriter;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import javax.servlet.ServletException;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServlet;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletRequest;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletResponse;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import com.sf.dao.MsgDao;
                                                                                  +
                                                                                  import com.sf.dao.UsersDao;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  public class Doregservlet extends HttpServlet {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Constructor of the object.
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public Doregservlet() {
                                                                                  +
                                                                                          super();
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Destruction of the servlet. <br>
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public void destroy() {
                                                                                  +
                                                                                          super.destroy(); // Just puts "destroy" string in log
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          response.setContentType("text/html");
                                                                                  +
                                                                                          PrintWriter out = response.getWriter();
                                                                                  +
                                                                                          request.setCharacterEncoding("utf-8");
                                                                                  +
                                                                                          String uname = request.getParameter("uname");
                                                                                  +
                                                                                          String upwd = request.getParameter("upwd");
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          UsersDao ud = new UsersDao();
                                                                                  +
                                                                                          MsgDao md = new MsgDao();
                                                                                  +
                                                                                          if (ud.register(uname, upwd) > 0) {
                                                                                  +
                                                                                              request.getSession().setAttribute("uname", uname);
                                                                                  +
                                                                                              request.getRequestDispatcher("denglu.jsp").forward(request,
                                                                                  +
                                                                                                      response);
                                                                                  +
                                                                                          else {
                                                                                  +
                                                                                              out.print("注册失败,请重新注册.......");
                                                                                  +
                                                                                              response.setHeader("refresh""3;url=reg.jsp");
                                                                                  +
                                                                                          }
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                      public void doPost(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          doGet(request,response);
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Initialization of the servlet. <br>
                                                                                  +
                                                                                       *
                                                                                  +
                                                                                       * @throws ServletException if an error occurs
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public void init() throws ServletException {
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  package com.servlet;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import java.io.IOException;
                                                                                  +
                                                                                  import java.io.PrintWriter;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import javax.servlet.ServletException;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServlet;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletRequest;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletResponse;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import com.dao.MsgDao;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  public class servlet5 extends HttpServlet {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public servlet5() {
                                                                                  +
                                                                                          super();
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public void destroy() {
                                                                                  +
                                                                                          super.destroy(); // Just puts "destroy" string in log
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          doPost(request,  response);
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      public void doPost(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          request.setCharacterEncoding("utf-8");
                                                                                  +
                                                                                            
                                                                                  +
                                                                                          int id=Integer.parseInt(request.getParameter("id"));
                                                                                  +
                                                                                          MsgDao md=new MsgDao();
                                                                                  +
                                                                                          md.delMail(id);   
                                                                                  +
                                                                                          response.getWriter().print("刪除成功.....");
                                                                                  +
                                                                                          response.setHeader("refresh""2;url=main.jsp");
                                                                                  +
                                                                                          response.sendRedirect("main2.jsp");
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      public void init() throws ServletException {
                                                                                  +
                                                                                       
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                    
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  package com.sf.servlet;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import java.io.IOException;
                                                                                  +
                                                                                  import java.io.PrintWriter;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import javax.servlet.ServletException;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServlet;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletRequest;
                                                                                  +
                                                                                  import javax.servlet.http.HttpServletResponse;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  import com.sf.dao.MsgDao;
                                                                                  +
                                                                                  import com.sf.entity.Msg;
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  public class Dowriteservlet extends HttpServlet {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Constructor of the object.
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public Dowriteservlet() {
                                                                                  +
                                                                                          super();
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Destruction of the servlet. <br>
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public void destroy() {
                                                                                  +
                                                                                          super.destroy(); // Just puts "destroy" string in log
                                                                                  +
                                                                                          // Put your code here
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          response.setContentType("text/html");
                                                                                  +
                                                                                          PrintWriter out = response.getWriter();
                                                                                  +
                                                                                          request.setCharacterEncoding("utf-8");
                                                                                  +
                                                                                          String uname = (String) request.getSession().getAttribute("uname");
                                                                                  +
                                                                                          String sendto = request.getParameter("receiver");
                                                                                  +
                                                                                          String title = request.getParameter("title");
                                                                                  +
                                                                                          String content = request.getParameter("content");
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          Msg m = new Msg();
                                                                                  +
                                                                                          m.setMsgcontent(content);
                                                                                  +
                                                                                          m.setUsername(uname);
                                                                                  +
                                                                                          m.setSendto(sendto);
                                                                                  +
                                                                                          m.setTitle(title);
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          MsgDao md = new MsgDao();
                                                                                  +
                                                                                          md.addMsg(m);
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          out.print("发送成功.....");
                                                                                  +
                                                                                          response.setHeader("refresh""3;url=main.jsp");
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      public void doPost(HttpServletRequest request, HttpServletResponse response)
                                                                                  +
                                                                                              throws ServletException, IOException {
                                                                                  +
                                                                                   
                                                                                  +
                                                                                          doGet(request,response);     }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                      /**
                                                                                  +
                                                                                       * Initialization of the servlet. <br>
                                                                                  +
                                                                                       *
                                                                                  +
                                                                                       * @throws ServletException if an error occurs
                                                                                  +
                                                                                       */
                                                                                  +
                                                                                      public void init() throws ServletException {
                                                                                  +
                                                                                      }
                                                                                  +
                                                                                   
                                                                                  +
                                                                                  }
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  posted @ +2022-05-29 20:20  +徐涛%  +阅读(70)  +评论(0)  +编辑  +收藏  +举报 +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_complex_code.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_complex_code.html new file mode 100644 index 00000000..b929d7e0 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_complex_code.html @@ -0,0 +1,237 @@ + + + + ClientNetworkWrapper.java (Example JavaDoc) + + + + + + + + + + + + + + +
                                                                                  +

                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  FileDocCategorySizeDatePackage
                                                                                  ClientNetworkWrapper.javaAPI DocExample2389Thu Nov 08 00:23:44 GMT 2001com.ora.rmibook.chapter3
                                                                                  +

                                                                                  ClientNetworkWrapper

                                                                                  + public class ClientNetworkWrapper extends NetworkBaseClass implements + PrinterConstants + + + + +
                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + + + + + + + + + + + + + +
                                                                                  Fields Summary
                                                                                  private String +
                                                                                  _serverMachine
                                                                                  +
                                                                                  +
                                                                                  private int +
                                                                                  _serverPort
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  Constructors Summary
                                                                                  public ClientNetworkWrapper()
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        this (DEFAULT_SERVER_NAME, DEFAULT_SERVER_PORT);
                                                                                  +    
                                                                                  Test Test Test
                                                                                  ABC
                                                                                  +DEF
                                                                                  TEST TEST TEST
                                                                                  +
                                                                                  +
                                                                                  public ClientNetworkWrapper(String + serverMachine, int serverPort) +
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        _serverMachine = serverMachine;
                                                                                  +        _serverPort = serverPort;
                                                                                  +    
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + +
                                                                                  Methods Summary
                                                                                  private voidreadStatusFromSocket(java.net.Socket + connection) +
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        InputStream inputStream = connection.getInputStream();
                                                                                  +        DataInputStream dataInputStream = new DataInputStream(inputStream);
                                                                                  +        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                                                                                  +        boolean response = dataInputStream.readBoolean();
                                                                                  +
                                                                                  +        if (response) {
                                                                                  +            return;
                                                                                  +        }
                                                                                  +        PrinterException error = new PrinterException(inputStream);
                                                                                  +
                                                                                  +        throw error;
                                                                                  +    
                                                                                  +
                                                                                  +
                                                                                  public voidsendDocumentToPrinter(java.io.InputStream actualDocument) +
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        sendDocumentToPrinter(actualDocument, DEFAULT_DOCUMENT_TYPE,
                                                                                  +            DEFAULT_PRINT_TWO_SIDED, DEFAULT_PRINT_QUALITY);
                                                                                  +    
                                                                                  +
                                                                                  +
                                                                                  public voidsendDocumentToPrinter(java.io.InputStream actualDocument, int documentType, boolean printTwoSided, + int printQuality) +
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        DocumentDescription documentToSend;
                                                                                  +
                                                                                  +        try {
                                                                                  +            documentToSend = new DocumentDescription(actualDocument, documentType, printTwoSided, printQuality);
                                                                                  +        } catch (IOException e) {
                                                                                  +            throw new ConnectionException();
                                                                                  +        }
                                                                                  +        sendDocumentToPrinter(documentToSend);
                                                                                  +    
                                                                                  +
                                                                                  +
                                                                                  public voidsendDocumentToPrinter(DocumentDescription documentDescription) +
                                                                                  +

                                                                                  + + + + +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  +        Socket connection = null;
                                                                                  +
                                                                                  +        try {
                                                                                  +            connection = new Socket(_serverMachine, _serverPort);
                                                                                  +            documentDescription.writeToStream(connection.getOutputStream());
                                                                                  +            readStatusFromSocket(connection);
                                                                                  +        } catch (IOException e) {
                                                                                  +            e.printStackTrace();
                                                                                  +            throw new ConnectionException();
                                                                                  +        }
                                                                                  +        closeSocket(connection);
                                                                                  +    
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_involve_equation.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_equation.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_involve_equation.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_involve_equation.html diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_simple_cc.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_simple_cc.html new file mode 100644 index 00000000..965db617 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_simple_cc.html @@ -0,0 +1 @@ +\n\n\n\n\n\t\n\t\n\t\n\t\n\n\t\n\tMiaflow крем для лица: купить в Северске, цены в интернет-аптеке - 1bad.ru\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\n\n\n\n\n\n
                                                                                  \n\t\t\t\t\t\n\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n
                                                                                  Выберите свой город:
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  Выберите из списка:
                                                                                  \n
                                                                                    \n
                                                                                  • Абакан
                                                                                  • \n
                                                                                  • Ачинск
                                                                                  • \n
                                                                                  • Альметьевск
                                                                                  • \n
                                                                                  • Ангарск
                                                                                  • \n
                                                                                  • Архангельск
                                                                                  • \n
                                                                                  • Армавир
                                                                                  • \n
                                                                                  • Артём
                                                                                  • \n
                                                                                  • Арзамас
                                                                                  • \n
                                                                                  • Астрахань
                                                                                  • \n
                                                                                  • Балаково
                                                                                  • \n
                                                                                  • Балашиха
                                                                                  • \n
                                                                                  • Барнаул
                                                                                  • \n
                                                                                  • Батайск
                                                                                  • \n
                                                                                  • Белгород
                                                                                  • \n
                                                                                  • Бердск
                                                                                  • \n
                                                                                  • Березники
                                                                                  • \n
                                                                                  • Бийск
                                                                                  • \n
                                                                                  • Благовещенск
                                                                                  • \n
                                                                                  • Братск
                                                                                  • \n
                                                                                  • Брянск
                                                                                  • \n
                                                                                  • Чебоксары
                                                                                  • \n
                                                                                  • Челябинск
                                                                                  • \n
                                                                                  • Череповец
                                                                                  • \n
                                                                                  • Черкесск
                                                                                  • \n
                                                                                  • Чита
                                                                                  • \n
                                                                                  • Дербент
                                                                                  • \n
                                                                                  • Димитровград
                                                                                  • \n
                                                                                  • Долгопрудный
                                                                                  • \n
                                                                                  • Домодедово
                                                                                  • \n
                                                                                  • Дзержинск
                                                                                  • \n
                                                                                  • Екатеринбург
                                                                                  • \n
                                                                                  • Елец
                                                                                  • \n
                                                                                  • Электросталь
                                                                                  • \n
                                                                                  • Элиста
                                                                                  • \n
                                                                                  • Энгельс
                                                                                  • \n
                                                                                  • Ессентуки
                                                                                  • \n
                                                                                  • Евпатория
                                                                                  • \n
                                                                                  • Грозный
                                                                                  • \n
                                                                                  • Хабаровск
                                                                                  • \n
                                                                                  • Хасавюрт
                                                                                  • \n
                                                                                  • Химки
                                                                                  • \n
                                                                                  • Иркутск
                                                                                  • \n
                                                                                  • Иваново
                                                                                  • \n
                                                                                  • Ижевск
                                                                                  • \n
                                                                                  • Йошкар-Ола
                                                                                  • \n
                                                                                  • Калининград
                                                                                  • \n
                                                                                  • Калуга
                                                                                  • \n
                                                                                  • Каменск-Уральский
                                                                                  • \n
                                                                                  • Камышин
                                                                                  • \n
                                                                                  • Каспийск
                                                                                  • \n
                                                                                  • Казань
                                                                                  • \n
                                                                                  • Кемерово
                                                                                  • \n
                                                                                  • Керчь
                                                                                  • \n
                                                                                  • Киров
                                                                                  • \n
                                                                                  • Кисловодск
                                                                                  • \n
                                                                                  • Коломна
                                                                                  • \n
                                                                                  • Комсомольск-на-Амуре
                                                                                  • \n
                                                                                  • Копейск
                                                                                  • \n
                                                                                  • Королёв
                                                                                  • \n
                                                                                  • Кострома
                                                                                  • \n
                                                                                  • Ковров
                                                                                  • \n
                                                                                  • Краснодар
                                                                                  • \n
                                                                                  • Красногорск
                                                                                  • \n
                                                                                  • Красноярск
                                                                                  • \n
                                                                                  • Курган
                                                                                  • \n
                                                                                  • Курск
                                                                                  • \n
                                                                                  • Кызыл
                                                                                  • \n
                                                                                  • Липецк
                                                                                  • \n
                                                                                  • Люберцы
                                                                                  • \n
                                                                                  • Магнитогорск
                                                                                  • \n
                                                                                  • Махачкала
                                                                                  • \n
                                                                                  • Майкоп
                                                                                  • \n
                                                                                  • Миасс
                                                                                  • \n
                                                                                  • Мурманск
                                                                                  • \n
                                                                                  • Муром
                                                                                  • \n
                                                                                  • Мытищи
                                                                                  • \n
                                                                                  • Набережные Челны
                                                                                  • \n
                                                                                  • Находка
                                                                                  • \n
                                                                                  • Нальчик
                                                                                  • \n
                                                                                  • Назрань
                                                                                  • \n
                                                                                  • Нефтекамск
                                                                                  • \n
                                                                                  • Нефтеюганск
                                                                                  • \n
                                                                                  • Невинномысск
                                                                                  • \n
                                                                                  • Нижнекамск
                                                                                  • \n
                                                                                  • Нижневартовск
                                                                                  • \n
                                                                                  • Нижний Новгород
                                                                                  • \n
                                                                                  • Нижний Тагил
                                                                                  • \n
                                                                                  • Ногинск
                                                                                  • \n
                                                                                  • Норильск
                                                                                  • \n
                                                                                  • Новочебоксарск
                                                                                  • \n
                                                                                  • Новочеркасск
                                                                                  • \n
                                                                                  • Новокуйбышевск
                                                                                  • \n
                                                                                  • Новокузнецк
                                                                                  • \n
                                                                                  • Новомосковск
                                                                                  • \n
                                                                                  • Новороссийск
                                                                                  • \n
                                                                                  • Новошахтинск
                                                                                  • \n
                                                                                  • Новосибирск
                                                                                  • \n
                                                                                  • Новый Уренгой
                                                                                  • \n
                                                                                  • Ноябрьск
                                                                                  • \n
                                                                                  • Обнинск
                                                                                  • \n
                                                                                  • Одинцово
                                                                                  • \n
                                                                                  • Октябрьский
                                                                                  • \n
                                                                                  • Омск
                                                                                  • \n
                                                                                  • Орехово-Зуево
                                                                                  • \n
                                                                                  • Оренбург
                                                                                  • \n
                                                                                  • Орск
                                                                                  • \n
                                                                                  • Орёл
                                                                                  • \n
                                                                                  • Пенза
                                                                                  • \n
                                                                                  • Пермь
                                                                                  • \n
                                                                                  • Первоуральск
                                                                                  • \n
                                                                                  • Петропавловск-Камчатский
                                                                                  • \n
                                                                                  • Петрозаводск
                                                                                  • \n
                                                                                  • Подольск
                                                                                  • \n
                                                                                  • Прокопьевск
                                                                                  • \n
                                                                                  • Псков
                                                                                  • \n
                                                                                  • Пушкино
                                                                                  • \n
                                                                                  • Пятигорск
                                                                                  • \n
                                                                                  • Раменское
                                                                                  • \n
                                                                                  • Реутов
                                                                                  • \n
                                                                                  • Ростов-на-Дону
                                                                                  • \n
                                                                                  • Рубцовск
                                                                                  • \n
                                                                                  • Рязань
                                                                                  • \n
                                                                                  • Рыбинск
                                                                                  • \n
                                                                                  • Салават
                                                                                  • \n
                                                                                  • Самара
                                                                                  • \n
                                                                                  • Санкт-Петербург
                                                                                  • \n
                                                                                  • Саранск
                                                                                  • \n
                                                                                  • Саратов
                                                                                  • \n
                                                                                  • Сергиев Посад
                                                                                  • \n
                                                                                  • Серпухов
                                                                                  • \n
                                                                                  • Севастополь
                                                                                  • \n
                                                                                  • Северодвинск
                                                                                  • \n
                                                                                  • Северск
                                                                                  • \n
                                                                                  • Шахты
                                                                                  • \n
                                                                                  • Щёлково
                                                                                  • \n
                                                                                  • Симферополь
                                                                                  • \n
                                                                                  • Смоленск
                                                                                  • \n
                                                                                  • Сочи
                                                                                  • \n
                                                                                  • Старый Оскол
                                                                                  • \n
                                                                                  • Ставрополь
                                                                                  • \n
                                                                                  • Стерлитамак
                                                                                  • \n
                                                                                  • Сургут
                                                                                  • \n
                                                                                  • Сыктывкар
                                                                                  • \n
                                                                                  • Сызрань
                                                                                  • \n
                                                                                  • Таганрог
                                                                                  • \n
                                                                                  • Тамбов
                                                                                  • \n
                                                                                  • Тольятти
                                                                                  • \n
                                                                                  • Томск
                                                                                  • \n
                                                                                  • Тула
                                                                                  • \n
                                                                                  • Тверь
                                                                                  • \n
                                                                                  • Тюмень
                                                                                  • \n
                                                                                  • Уфа
                                                                                  • \n
                                                                                  • Улан-Удэ
                                                                                  • \n
                                                                                  • Ульяновск
                                                                                  • \n
                                                                                  • Уссурийск
                                                                                  • \n
                                                                                  • Великий Новгород
                                                                                  • \n
                                                                                  • Владикавказ
                                                                                  • \n
                                                                                  • Владимир
                                                                                  • \n
                                                                                  • Владивосток
                                                                                  • \n
                                                                                  • Волгодонск
                                                                                  • \n
                                                                                  • Волгоград
                                                                                  • \n
                                                                                  • Вологда
                                                                                  • \n
                                                                                  • Волжский
                                                                                  • \n
                                                                                  • Воронеж
                                                                                  • \n
                                                                                  • Якутск
                                                                                  • \n
                                                                                  • Ярославль
                                                                                  • \n
                                                                                  • Южно-Сахалинск
                                                                                  • \n
                                                                                  • Жуковский
                                                                                  • \n
                                                                                  • Златоуст
                                                                                  • \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n
                                                                                  \n\n\n\n
                                                                                  \n
                                                                                  Не нашли свой город?
                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n\t\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tHot line8 800 752 18 22\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \t\t\n\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t2\n\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\n\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\n
                                                                                  \n
                                                                                  \n\n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\n
                                                                                  \t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  Miaflow в Северске

                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  Рейтинг 5.00 из 5 на основе опроса 3 пользователей
                                                                                  \t\t\t\t\t\t\t\t(3 отзыва клиентов)\n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                    В наличии
                                                                                  \n
                                                                                  \n\t\t\t
                                                                                  \n\t
                                                                                  84 
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\t

                                                                                  Miaflow — это инновационный крем для омоложения лица, разработанный с использованием передовых технологий. Его уникальная формула, насыщенная ценными компонентами природы, обеспечивает интенсивный уход за кожей, возвращая ей молодость и сияние.

                                                                                  \n
                                                                                  \n\t\t\t\t
                                                                                  Заказать
                                                                                  \n\n
                                                                                  \n\n\t\n\t\n\tКатегория: Препараты для омоложения\n\t\n\t\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  * Не является лекарственным средством

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Оплата\"\n
                                                                                  \n

                                                                                  Оплата:

                                                                                  \n

                                                                                  при получении, наличными или банковской картой

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Доставка\"\n
                                                                                  \n

                                                                                  Доставка в Северске:

                                                                                  \n

                                                                                  1 - 7 дней, почтой или транспортными компаниями

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Поделиться: 
                                                                                  \t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\n
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\n\t\t\t\n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  Заказать\n\t\t\tMiaflow\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  Преимущества

                                                                                  \n
                                                                                    \n
                                                                                  • Уменьшение морщин и линий
                                                                                  • \n
                                                                                  • Повышение упругости и эластичности кожи
                                                                                  • \n
                                                                                  • Омолаживающий эффект с первого применения
                                                                                  • \n
                                                                                  • Защита от вредного воздействия окружающей среды
                                                                                  • \n
                                                                                  • Глубокое увлажнение и питание
                                                                                  • \n
                                                                                  \n

                                                                                  Принцип действия Miaflow

                                                                                  \n

                                                                                  Miaflow активирует естественные процессы обновления кожи, восстанавливая ее структуру и придавая заметный лифтинг-эффект. Это достигается благодаря уникальной комбинации активных ингредиентов.

                                                                                  \n

                                                                                  Состав Miaflow:

                                                                                  \n
                                                                                    \n
                                                                                  1. Концентрат пантов алтайского марала: Стимулирует обновление клеток, укрепляет структуру кожи.
                                                                                  2. \n
                                                                                  3. Концентрат трепанга: Обеспечивает увлажнение и смягчение, борется с признаками усталости.
                                                                                  4. \n
                                                                                  5. Каменное масло: Питает и улучшает тонус кожи.
                                                                                  6. \n
                                                                                  7. Живица кедровая и лиственничная: Прекрасные антисептики, поддерживают чистоту пор, способствуют заживлению.
                                                                                  8. \n
                                                                                  9. Эфирные масла кедра, тыквы, конопли, пихты, облепихи, чайного дерева, гвоздики: Обеспечивают ароматерапевтический эффект и усиливают регенерацию кожи.
                                                                                  10. \n
                                                                                  \n

                                                                                  Клинические исследования

                                                                                  \n

                                                                                  Проведенные исследования показали, что более 90% участников заметили улучшение состояния кожи после использования Miaflow. Восстановление упругости, сокращение морщин, и природное сияние — вот результаты, подтвержденные клинически.

                                                                                  \n

                                                                                  Показания к применению

                                                                                  \n
                                                                                    \n
                                                                                  • Сухая и увядающая кожа
                                                                                  • \n
                                                                                  • Первые признаки старения
                                                                                  • \n
                                                                                  • Потеря упругости и эластичности
                                                                                  • \n
                                                                                  \n

                                                                                  Способ применения Miaflow

                                                                                  \n

                                                                                  Наносите крем на чистую кожу лица и шеи массажными движениями до полного впитывания. Используйте утром и вечером для достижения максимального эффекта.

                                                                                  \n

                                                                                  Противопоказания Miaflow

                                                                                  \n

                                                                                  Не рекомендуется использовать при индивидуальной непереносимости к компонентам. Перед применением рекомендуется провести тест на небольшом участке кожи. В случае раздражения прекратите использование.

                                                                                  \n\t\t\t\t\t\t\t\t

                                                                                  Где купить Miaflow?

                                                                                  \n

                                                                                  Miaflow не продается в обычных аптеках в Северске и других регионах России. Однако, вы можете купить его у нас на сайте по выгодной цене 84  с удобной доставкой. Успешно достигните своих целей с данным средством!

                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t \n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  Рейтинг:
                                                                                  Рейтинг 5.00 из 5 на основе опроса 3 пользователей
                                                                                  Тип товара: Препараты для омоложения
                                                                                  Форма:Крем
                                                                                  Объем:50 мл
                                                                                  Рецепт:Отпускается без рецепта
                                                                                  Способ хранения:Хранить при температуре 4-20°
                                                                                  Примечание:Беречь от детей
                                                                                  Оплата:Наличными/банковской картой
                                                                                  Доступность в Северске:В наличии
                                                                                  Доставка:2-7 Дней
                                                                                  Цена:84 
                                                                                  \n
                                                                                  \n\t\t\t\t\t\t\t\\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  3 отзывов о Miaflow

                                                                                  \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                  1. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЕлена Евстегнеева \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Моя кожа претерпела настоящую революцию с Miaflow! Уже через неделю заметила, как морщины стали менее заметными, а цвет лица стал более ровным. Крем приятно наносится, быстро впитывается, и самое главное — результат на лице!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  2. \n
                                                                                  3. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЕрмаков Иван \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Совершенно случайно попробовал, и теперь я не могу себе представить свой уход без него. Кожа стала более упругой, а яркие следы усталости просто исчезли. Отличный продукт, с которым я чувствую себя настоящим джентльменом!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  4. \n
                                                                                  5. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЦветкова Ксения \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Мне было сложно найти подходящий уход для кожи после 50, но этот крем превзошел все мои ожидания! Мои друзья даже спрашивают, что я делаю, чтобы выглядеть так молодо. Этот крем — настоящее волшебство для кожи, и я рекомендую его каждой женщине!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  6. \n\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Средний рейтинг

                                                                                  \n\t\t\t\t\t\t

                                                                                  5.00

                                                                                  \n\t\t\t\t\t\t
                                                                                  Оценка 5.00 из 5
                                                                                  \t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t3 Отзыв\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  5
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  100%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  4
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  3
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  2
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  1
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\tНапишите отзыв

                                                                                  Ваш адрес email не будет опубликован. Обязательные поля помечены *

                                                                                  \n

                                                                                  \n

                                                                                  \n\n

                                                                                  \t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \"Miaflow\"
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tMiaflow\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t84 ₽\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n


                                                                                  \n

                                                                                  \n

                                                                                  Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                  \n


                                                                                  \n

                                                                                  \n
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tMiaflow\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t84 ₽\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \"Miaflow\"
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n


                                                                                  \n

                                                                                  \n

                                                                                  Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                  \n


                                                                                  \n

                                                                                  \n
                                                                                  \t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\n\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\t
                                                                                  \n\n\t\t\t\t\t

                                                                                  Сопутствующие товары

                                                                                  \n\t\t\t\t\n\t\t
                                                                                    \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                    -25%
                                                                                    \t\t\t
                                                                                    \n\"Venzen\"\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t1,990  1,490 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tVenzen\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t1490 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Venzen\"\n\t\t\t\t\t\t\t\t\tsrc=\"https://1bad.ru/wp-content/uploads/2022/09/venzen.jpg
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Night\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t149 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tNight Miracle\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t149.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Night
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Молодильный\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t149 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tМолодильный спас\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t149.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Молодильный
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Zenza\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t147 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tZenza Cream\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t147.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Zenza
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\n
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \t\t\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n
                                                                                  \t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\tЧто Вы ищете?\n\t\t\t\t
                                                                                  Закрыть
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t\t\t\n\t\t\t\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t\t\n\t\t
                                                                                  \t\n\t
                                                                                  \n\n\n
                                                                                  \n\n\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t

                                                                                  Вся информация на сайте - справочная. Перед применением лекарственных препаратов проконсультируйтесь с врачом. Дистанционная продажа БАД и лекарственных средств не осуществляется.

                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t

                                                                                  © 2023 1bad.ru 18+. Все права защищены.

                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t

                                                                                  Адрес: г. Северск, ул. Курчатова, 11a

                                                                                  \n\t\t\t\t\t\t

                                                                                  Телефон: 8 800 752 18 22

                                                                                  \n\t\t\t\t\t\t

                                                                                  Почта: seversk@1bad.ru

                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\n\t\t\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  • \r\n
                                                                                  • \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\t\tSelect the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
                                                                                    \r\n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • Image
                                                                                  • SKU
                                                                                  • Rating
                                                                                  • Price
                                                                                  • Stock
                                                                                  • Availability
                                                                                  • Add to cart
                                                                                  • Description
                                                                                  • Content
                                                                                  • Weight
                                                                                  • Dimensions
                                                                                  • Additional information
                                                                                  • Attributes
                                                                                  • Custom attributes
                                                                                  • Custom fields
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t
                                                                                  \r\n\t\t\t\t\t\t\t\t\t\tClick outside to hide the compare bar
                                                                                  \r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\tCompare
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Compare\r\n \r\n × \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Let's Compare!\r\n Continue shopping\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \n\n\n\n\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_simple_compex.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_simple_compex.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_simple_compex.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_simple_compex.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json similarity index 99% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json index f1c6da6a..5bb85151 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_complex_res.json @@ -1,8 +1,9 @@ { - "type": "table", + "type": "complex_table", "raw_content": "<table><caption>ফেব্রুয়ারি ২০২৪</caption><thead><tr><th>সোম</th><th>মঙ্গল</th><th>বুধ</th><th>বৃহ</th><th>শুক্র</th><th>শনি</th><th>রবি</th></tr></thead><tfoot><tr><td colspan=\\\"3\\\">« জানুয়ারি</td><td></td><td colspan=\\\"3\\\"></td></tr></tfoot><tbody><tr><td colspan=\\\"3\\\"></td><td>১</td><td>২</td><td>৩</td><td>৪</td></tr><tr><td>৫</td><td>৬</td><td>৭</td><td>৮</td><td>৯</td><td>১০</td><td>১১</td></tr><tr><td>১২</td><td>১৩</td><td>১৪</td><td>১৫</td><td>১৬</td><td>১৭</td><td>১৮</td></tr><tr><td>১৯</td><td>২০</td><td>২১</td><td>২২</td><td>২৩</td><td>২৪</td><td>২৫</td></tr><tr><td>২৬</td><td>২৭</td><td>২৮</td><td>২৯</td><td colspan=\\\"3\\\"></td></tr></tbody></table>", "content": { "html": "
                                                                                  ফেব্রুয়ারি ২০২৪
                                                                                  সোমমঙ্গলবুধবৃহশুক্রশনিরবি
                                                                                  « জানুয়ারি
                                                                                  ১০১১
                                                                                  ১২১৩১৪১৫১৬১৭১৮
                                                                                  ১৯২০২১২২২৩২৪২৫
                                                                                  ২৬২৭২৮২৯
                                                                                  ", - "is_complex": true + "is_complex": true, + "table_nest_level": null } } diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple.html diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json new file mode 100644 index 00000000..357f2843 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json @@ -0,0 +1 @@ +{"type": "simple_table", "raw_content": "<table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table>
                                                                                  12
                                                                                  34
                                                                                  12
                                                                                  34
                                                                                  ", "is_complex": false}} \ No newline at end of file diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html new file mode 100644 index 00000000..7420841b --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html @@ -0,0 +1,172 @@ +美国营运库存月率月度八月-2020年10月16日全球经济日历 - 知识是一种生活方式
                                                                                  美国营运库存月率月度八月-2020年10月16日全球经济日历

                                                                                  美国营运库存月率月度八月

                                                                                  时间国家事件完成值预测值前值
                                                                                  22:00美国美国营运库存月率(%)(月度)(八月)0.3%-5.5%0.4%
                                                                                  22:00美国美国除汽车外零售库存(八月)0.5%0.9%
                                                                                  22:00美国美国营运库存月率(%)(月度)(八月)0.1%0.4%
                                                                                  22:00美国美国密歇根大学现况指数(十月)87.888.5
                                                                                  22:00美国美国密歇根大学消费者信心指数(十月)80.480.5
                                                                                  22:00美国美国密歇根大学消费者预期指数(十月)75.676.5
                                                                                  22:00美国美国营运库存月率(%)(月度)(八月)0.1%-5.5%0.4%
                                                                                  22:00美国美国密歇根大学消费者信心指数(十月)80.481.0
                                                                                  22:00美国美国密歇根大学现况指数(十月)84.987.888.5
                                                                                  22:00美国美国密歇根大学消费者信心指数(十月)81.280.480.5
                                                                                  22:00美国美国密歇根大学消费者预期指数(十月)78.875.676.5
                                                                                  22:00美国美国密歇根大学5-10年期通胀率预期(%)(十月)2.40%2.70%
                                                                                  22:00美国美国密歇根大学1年期通胀率预期(十月)2.7%2.6%
                                                                                  21:15美国美国产能利用率(%)(九月)71.5%72.0%71.9%
                                                                                  21:15美国美国工业产出月率(%)(月度)(九月)-0.6%0.4%0.5%
                                                                                  21:15美国美国制造业产出月率(%)(月度)(九月)-0.3%1.2%0.7%
                                                                                  21:15美国美国工业产出月率(%)(月度)(九月)0.4%0.5%
                                                                                  21:15美国美国工业产出年率(%)(年度)(九月)-7.28%-7.01%
                                                                                  21:15美国美国制造业产出月率(%)(月度)(九月)1.0%0.7%
                                                                                  20:30美国美国核心零售销售月率(%)(月度)(九月)0.7%0.5%
                                                                                  20:30美国美国零售销售月率(%)(月度)(九月)0.6%0.7%
                                                                                  20:30加拿大加拿大制造业装船月率(%)(月度)(八月)7.0%-1.4%
                                                                                  20:30美国美国零售业预期月率(%)(月度)(九月)-0.1%0.3%
                                                                                  20:30加拿大加拿大制造业装船月率(%)(月度)(八月)7.0%-2.0%
                                                                                  20:30美国美国零售业预期月率(%)(月度)(九月)-0.1%0.2%
                                                                                  20:30美国美国零售销售年率(年度)(九月)5.36%2.77%
                                                                                  20:30加拿大加拿大制造业装船月率(%)(月度)(八月)-2.0%7.2%-1.4%
                                                                                  20:30加拿大加拿大海外投资者净买入加拿大证券(加元)(八月)15.50B-8.49B
                                                                                  20:30美国美国零售业预期月率(%)(月度)(九月)1.4%-0.3%0.2%
                                                                                  20:30美国美国核心零售销售月率(%)(月度)(九月)1.5%0.5%0.5%
                                                                                  20:30美国美国除去天然气与汽车零售销售月率(%)(月度)(九月)1.5%0.5%
                                                                                  20:30美国美国零售销售月率(%)(月度)(九月)1.9%0.6%0.7%
                                                                                  20:30加拿大加拿大投资者净买入海外证券(加元)(八月)5.74B1.31B
                                                                                  20:20印度印度出口额(美元)(九月)22.70B
                                                                                  20:20印度印度进口额(美元)(九月)29.47B
                                                                                  20:20印度印度贸易帐(卢比)(九月)6.77B3.30B
                                                                                  19:30印度印度外汇储备(美元)551.51B545.64B
                                                                                  17:00欧元区欧元区贸易帐(欧元)(八月)14.7B27.7B15.1B
                                                                                  17:00欧元区欧元区CPI月率(%)(月度)(九月)0.1%-0.4%0.1%
                                                                                  17:00欧元区欧元区不包括能源和食品HICP年率(年度)(九月)0.4%0.4%0.4%
                                                                                  17:00欧元区欧元区不包括能源和食品HICP年率(年度)(九月)0.4%0.4%
                                                                                  17:00欧元区欧元区CPI年率(%)(年度)(九月)-0.3%-0.3%
                                                                                  17:00欧元区欧元区未季调核心CPI年率(年度)(九月)0.2%0.2%
                                                                                  17:00欧元区欧元区CPI年率(%)(年度)(九月)-0.3%-0.3%-0.3%
                                                                                  17:00欧元区欧元区剔除烟草CPI年率(%)(年度)(九月)-0.5%-0.3%
                                                                                  17:00欧元区欧元区贸易帐(欧元)(八月)27.9B15.1B
                                                                                  17:00欧元区欧元区剔除烟草CPI月率(%)(月度)(九月)0.1%-0.4%
                                                                                  17:00欧元区欧元区未季调核心CPI年率(年度)(九月)0.2%0.2%0.2%
                                                                                  17:00欧元区欧元区核心CPI月率(%)(月度)(九月)0.2%0.2%0.2%
                                                                                  17:00意大利意大利对欧盟贸易帐(欧元)(八月)0.35B3.00B
                                                                                  17:00意大利意大利贸易帐(亿欧元)(八月)3.928B9.689B
                                                                                  17:00欧元区欧元区贸易帐(欧元)(八月)14.7B27.9B15.1B
                                                                                  17:00欧元区欧元区不包括能源和食品HICP月率(月度)(九月)0.1%-0.5%0.1%
                                                                                  16:37中国中国实际外商直接投资年率(%)(九月)5.20%2.60%
                                                                                  16:00意大利意大利调和CPI年率(%)(年度)(九月)-1.0%-0.9%-0.9%
                                                                                  16:00意大利意大利调和CPI月率(%)(月度)(九月)0.9%1.0%1.0%
                                                                                  16:00意大利意大利CPI年率(%)(年度)(九月)-0.6%-0.5%-0.5%
                                                                                  16:00意大利意大利CPI月率(%)(月度)(九月)-0.7%-0.6%-0.6%
                                                                                  16:00意大利意大利不包括烟草CPI月率(月度)(九月)-0.6%-0.7%
                                                                                  16:00意大利意大利CPI月率(%)(月度)(九月)-0.6%-0.6%
                                                                                  14:00英国英国新车登记数月率(月度)(九月)276.1%-50.1%
                                                                                  14:00法国法国新车登记数月率(年度)(九月)-3.0%-19.8%
                                                                                  14:00法国法国新车登记数月率(月度)(九月)62.4%-42.1%
                                                                                  14:00德国德国新车登记数月率(月度)(九月)5.6%-20.3%
                                                                                  14:00德国德国新车登记数月率(年度)(九月)8.4%-20.0%
                                                                                  14:00意大利意大利新车登记数月率(月度)(九月)75.8%-35.0%
                                                                                  14:00意大利意大利新车登记数月率(年度)(九月)9.5%-0.4%
                                                                                  14:00英国英国新车登记数月率(年度)(九月)-4.4%-5.8%
                                                                                  10:00新西兰新西兰政府债券海外投资者所持比例(%)(九月)41.70%41.90%
                                                                                  10:00日本日本汤森路透/益普索主要消费者信心指数(十月)39.5436.72
                                                                                  10:00中国中国汤森路透/益普索主要消费者信心指数(十月)78.7966.69
                                                                                  08:30新加坡新加坡贸易帐(新加坡元)3.100B5.800B
                                                                                  08:30新加坡新加坡非石油出口额月率(%)(月度)(九月)-11.30%10.50%-3.00%
                                                                                  08:30新加坡新加坡非石油出口额月率(%)(月度)(九月)10.50%-3.00%
                                                                                  08:30新加坡新加坡非石油出口额年率(%)(年度)(九月)7.70%10.80%
                                                                                  08:30新加坡新加坡非石油出口额年率(%)(年度)(九月)5.90%7.70%10.80%
                                                                                  08:00澳大利亚澳大利亚HIA新屋销售月率(%)(月度)-14.4%
                                                                                  08:00澳大利亚澳大利亚HIA新屋销售月率(%)(月度)3.8%3.6%
                                                                                  07:00韩国韩国失业率(九月)3.9%3.2%
                                                                                  05:30新西兰新西兰制造业PMI(九月)54.050.7
                                                                                  05:00美国美国证监会卡什卡利(Kashkari)讲话
                                                                                  05:00韩国韩国出口物价指数年率(%)(年度)(九月)-6.2%-6.7%
                                                                                  05:00韩国韩国进口物价指数年率(%)(年度)(九月)-11.5%-10.5%
                                                                                  01:38印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-22.40%
                                                                                  01:38印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B1.98B
                                                                                  01:38印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
                                                                                  01:38印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
                                                                                  01:38印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
                                                                                  01:38印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-7.20%
                                                                                  01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
                                                                                  01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
                                                                                  01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)2.15%1.60%
                                                                                  01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
                                                                                  00:58印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
                                                                                  00:58印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
                                                                                  00:58印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
                                                                                  00:41印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
                                                                                  00:41印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
                                                                                  00:41印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
                                                                                  00:00欧元区欧洲央行行长拉加德(ChristineLagarde)讲话

                                                                                  相关文章链接:

                                                                                  知识乱象
                                                                                  中共中央政治局召开会议审议《成-2020年10月16日新闻联播
                                                                                  美国四周期国债拍卖-2020年10月15日全球经济日历
                                                                                  习近平在广东考察时强调以更大魄-2020年10月15日新闻联播

                                                                                  上一篇
                                                                                  下一篇
                                                                                  + + + + \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/title.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/title.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/title.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/title.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/with_parent_nodes.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/with_parent_nodes.html similarity index 100% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/with_parent_nodes.html rename to tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/with_parent_nodes.html diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_code.py b/tests/llm_web_kit/extractor/html/recognizer/test_code.py similarity index 89% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_code.py rename to tests/llm_web_kit/extractor/html/recognizer/test_code.py index 33eaed18..ba8b3f38 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_code.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_code.py @@ -1,12 +1,12 @@ import unittest from pathlib import Path +from llm_web_kit.config.cfg_reader import load_pipe_tpl +from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory +from llm_web_kit.extractor.html.recognizer.cccode import CodeRecognizer +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag from llm_web_kit.input.datajson import DataJson from llm_web_kit.libs.html_utils import get_element_text, html_to_element -from llm_web_kit.pipeline.extractor.html.recognizer.cccode import \ - CodeRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag -from llm_web_kit.pipeline.pipeline_suit import PipelineSuit TEST_CASES = [ { @@ -203,9 +203,7 @@ class TestCodeRecognizer(unittest.TestCase): def setUp(self): self.rec = CodeRecognizer() - self.pipeline_config = base_dir.parent.parent.parent.joinpath( - 'assets', 'html_pipe_normal.jsonc' - ) + self.chain_config = load_pipe_tpl('html') def compare_code(self, expect: str, answer: str) -> None: self.assertEqual(expect, answer) @@ -216,7 +214,8 @@ def compare_code(self, expect: str, answer: str) -> None: # self.assertEqual(x, y) def test_inline_code_output(self): - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) raw_html = base_dir.joinpath('assets/cccode/mathworks.html').read_text() input_data = DataJson( { @@ -230,7 +229,7 @@ def test_inline_code_output(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list().to_mm_md().strip('\n') expect = base_dir.joinpath('assets/cccode/mathworks.md').read_text().strip('\n') self.assertEqual(expect, answer) @@ -246,12 +245,12 @@ def test_code_rec(self): base_url = test_case['input'][1] print(base_url) raw_html = raw_html_path.read_text() - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - parts = [ - part[0] - for part in parts - if CCTag.CC_CODE in part[0] or CCTag.CC_CODE_INLINE in part[0] - ] + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + # parts = [ + # part[0] + # for part in parts + # if CCTag.CC_CODE in part[0] or CCTag.CC_CODE_INLINE in part[0] + # ] # for part in parts: # part_el = html_to_element(part) # answer = get_element_text(part_el).strip() @@ -260,7 +259,7 @@ def test_code_rec(self): # print("--------------------------------------------------") answers = [] for part in parts: - part_el = html_to_element(part) + part_el = part[0] cccodes = part_el.xpath(f'.//{CCTag.CC_CODE}') + part_el.xpath( f'.//{CCTag.CC_CODE_INLINE}' ) @@ -287,7 +286,8 @@ def test_code_rec(self): self.compare_code(expect, answer) def test_inclusion(self): - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) raw_html = base_dir.joinpath('assets/cccode/telerik-case-2.html').read_text() input_data = DataJson( { @@ -301,7 +301,7 @@ def test_inclusion(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list() count = 0 for page in answer: @@ -316,7 +316,8 @@ def test_to_md_first_line_spaces(self): • Visualize solutions to help move your organization forward
                                                                                  """ - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) input_data = DataJson( { 'track_id': 'f7b3b1b4-0b1b', @@ -329,7 +330,7 @@ def test_to_md_first_line_spaces(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list().to_mm_md() self.assertEqual( answer, @@ -346,6 +347,7 @@ def test_to_md_first_line_spaces(self): http://terra.polydev.org/config/development/config-system.html CC-MAIN-2024-30/segments/1720763514387.30/warc/CC-MAIN-20240712094214-20240712124214-00117.warc.gz?bytes=23736586,11582 """ + def test_lineno(self): html = """
                                                                                   1{
                                                                                    2   "type": "ZOO",
                                                                                  @@ -363,7 +365,8 @@ def test_lineno(self):
                                                                                   14}
                                                                                   
                                                                                  """ - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) input_data = DataJson( { 'track_id': 'f7b3b1b4-0b1b', @@ -376,7 +379,7 @@ def test_lineno(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list().to_mm_md() self.assertEqual(answer, """``` @@ -413,7 +416,8 @@ def test_lineno_2(self):
                                                                                  100import com.dao.UsersDao;
                                                                                  """ - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) input_data = DataJson( { 'track_id': 'f7b3b1b4-0b1b', @@ -426,7 +430,7 @@ def test_lineno_2(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list().to_mm_md() self.assertEqual(answer, """``` @@ -473,7 +477,8 @@ def test_lineno_3(self):
                                                                                  import com.dao.UsersDao;
                                                                                  """ - pipeline = PipelineSuit(self.pipeline_config.as_posix()) + chain = ExtractSimpleFactory.create(self.chain_config) + self.assertIsNotNone(chain) input_data = DataJson( { 'track_id': 'f7b3b1b4-0b1b', @@ -486,7 +491,7 @@ def test_lineno_3(self): } ) - resp = pipeline.extract(input_data) + resp = chain.extract(input_data) answer = resp.get_content_list().to_mm_md() self.assertEqual(answer, """``` @@ -503,3 +508,28 @@ def test_lineno_3(self): import com.dao.UsersDao; ``` """) + + def test_lineno_4(self): + """行内代码尝试寻找行号删除导致代码节点顺序发生变化。 原代码路径为:/div[2]/code, /div[3]/code + 在删除行号后为:/div[1]/cccode, /div[2]/code.""" + html = """
                                                                                  +

                                                                                  1

                                                                                  +

                                                                                  2

                                                                                  +

                                                                                  3

                                                                                  +

                                                                                  4

                                                                                  +

                                                                                  5

                                                                                  +

                                                                                  +
                                                                                  This is inline code.
                                                                                  +
                                                                                  +line one
                                                                                  +line two
                                                                                  +line three
                                                                                  +line four
                                                                                  +line five
                                                                                  +
                                                                                  +
                                                                                  +A +
                                                                                  +""" + # 无须检查内容,只要不爆错就可以了 + _ = self.rec.recognize('', [(html_to_element(html), html_to_element(html))], html) diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_image.py b/tests/llm_web_kit/extractor/html/recognizer/test_image.py similarity index 89% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_image.py rename to tests/llm_web_kit/extractor/html/recognizer/test_image.py index dfb649a2..9f374848 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_image.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_image.py @@ -1,9 +1,9 @@ import unittest from pathlib import Path -from llm_web_kit.pipeline.extractor.html.recognizer.image import \ - ImageRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.extractor.html.recognizer.image import ImageRecognizer +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.libs.html_utils import html_to_element TEST_CASES_HTML = [ { @@ -77,8 +77,15 @@ 'data': None, 'alt': 'Układanie wykładzin', 'title': None, 'caption': None}}, 'alt': 'Układanie wykładzin', 'img_url': 'http://15.demooo.pl/wp-content/uploads/2022/08/ukladanie-wykladzin.svg' - } + }, + { + 'url': 'xxx', + 'parsed_content': """Układanie wykładzin""", + 'html': '...', + 'expected': 31031400, + }, ] base_dir = Path(__file__).parent @@ -92,7 +99,7 @@ def test_recognize(self): raw_html_path = base_dir.joinpath(test_case['input']) base_url = test_case['base_url'] raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.img_recognizer.recognize(base_url, [(raw_html, raw_html)], raw_html) + parts = self.img_recognizer.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) self.assertEqual(len(parts), test_case['expected']) ccimg_datas = [ccimg[0] for ccimg in parts if CCTag.CC_IMAGE in ccimg[0] and 'by="svg"' not in ccimg[0]] if ccimg_datas: @@ -102,8 +109,11 @@ def test_recognize(self): def test_to_content_list_node(self): for test_case in TEST_CC_CASE: - res = self.img_recognizer.to_content_list_node(test_case['url'], test_case['parsed_content'], - test_case['html']) - self.assertEqual(res, test_case['expected']) - self.assertEqual(res['content']['alt'], test_case['alt']) - self.assertEqual(res['content']['url'], test_case['img_url']) + try: + res = self.img_recognizer.to_content_list_node(test_case['url'], html_to_element(test_case['parsed_content']), + test_case['html']) + self.assertEqual(res, test_case['expected']) + self.assertEqual(res['content']['alt'], test_case['alt']) + self.assertEqual(res['content']['url'], test_case['img_url']) + except Exception as e: + self.assertEqual(e.error_code, test_case['expected']) diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_list.py b/tests/llm_web_kit/extractor/html/recognizer/test_list.py similarity index 69% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_list.py rename to tests/llm_web_kit/extractor/html/recognizer/test_list.py index b6c0a7f2..0696618f 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_list.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_list.py @@ -1,7 +1,8 @@ import os import unittest -from llm_web_kit.pipeline.extractor.html.recognizer.list import ListRecognizer +from llm_web_kit.extractor.html.recognizer.list import ListRecognizer +from llm_web_kit.libs.html_utils import html_to_element class TestSimpleListRecognize(unittest.TestCase): @@ -17,10 +18,10 @@ def setUp(self): self.__complex_list_content = file.read() def test_simple_list(self): - html_part = self.__list_recognize.recognize('http://url.com', [(self.__simple_list_content, self.__complex_list_content)], self.__simple_list_content) + html_part = self.__list_recognize.recognize('http://url.com', [(html_to_element(self.__simple_list_content), html_to_element(self.__complex_list_content))], self.__simple_list_content) assert len(html_part) == 6 def test_complex_list(self): # TODO: Fix this test - html_part = self.__list_recognize.recognize('http://url.com', [(self.__simple_list_content, self.__complex_list_content)], self.__complex_list_content) + html_part = self.__list_recognize.recognize('http://url.com', [(html_to_element(self.__simple_list_content), html_to_element(self.__complex_list_content))], self.__complex_list_content) assert len(html_part) == 6 diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_math.py b/tests/llm_web_kit/extractor/html/recognizer/test_math.py similarity index 65% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_math.py rename to tests/llm_web_kit/extractor/html/recognizer/test_math.py index f1aa336c..eb5fbbf4 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_math.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_math.py @@ -1,13 +1,10 @@ import unittest from pathlib import Path -from llm_web_kit.exception.exception import HtmlMathRecognizerExp -from llm_web_kit.libs.html_utils import html_to_element -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import \ - CCMATH -from llm_web_kit.pipeline.extractor.html.recognizer.ccmath import \ - MathRecognizer -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.exception.exception import HtmlMathRecognizerException +from llm_web_kit.extractor.html.recognizer.ccmath import CCMATH, MathRecognizer +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.libs.html_utils import element_to_html, html_to_element TEST_CASES = [ # 基本公式测试用例 @@ -57,6 +54,17 @@ '

                                                                                  x=6

                                                                                  ') ] }, + { + 'input': [ + ('

                                                                                  $x = 5$,$$x=6$$,$x=4$

                                                                                  ', + '

                                                                                  $x = 5$,$$x=6$$,$x=4$

                                                                                  ') + ], + 'raw_html': '

                                                                                  $x = 5$,$$x=6$$,$x=4$

                                                                                  ', + 'expected': [ + ('

                                                                                  x = 5,$$x=6$$,x=4

                                                                                  ', + '

                                                                                  x = 5,$$x=6$$,x=4

                                                                                  '), + ] + }, { 'input': [ ('

                                                                                  By substituting $$x$$ with $$t - \\dfrac{b}{3a}$$, the general

                                                                                  ', @@ -76,6 +84,30 @@ '

                                                                                  , the general

                                                                                  ') ] }, + { + 'input': [ + ('', '') + ], + 'raw_html': '', + 'expected': [ + ('x^2 + y^2 = z^2', 'x^2 + y^2 = z^2') + ] + }, + { + 'input': [ + ('', '') + ], + 'raw_html': '', + 'expected': [] + }, + { + 'input': [ + ('

                                                                                  保证生活,可能会影响自己的身心健康。当然,在 不打工的情况下考虑创业, 但是创业是有风险的,在自己没有经济$ $③收入的情况下,考虑打工也会让自己的压力倍增,所以是否选择打工,需要根据自己的实际情况决定!

                                                                                  ', '

                                                                                  保证生活,可能会影响自己的身心健康。当然,在 不打工的情况下考虑创业, 但是创业是有风险的,在自己没有经济$ $③收入的情况下,考虑打工也会让自己的压力倍增,所以是否选择打工,需要根据自己的实际情况决定!

                                                                                  ') + ], + 'raw_html': '

                                                                                  保证生活,可能会影响自己的身心健康。当然,在 不打工的情况下考虑创业, 但是创业是有风险的,在自己没有经济$ $③收入的情况下,考虑打工也会让自己的压力倍增,所以是否选择打工,需要根据自己的实际情况决定!

                                                                                  ', + 'expected': [('

                                                                                  保证生活,可能会影响自己的身心健康。当然,在 不打工的情况下考虑创业, 但是创业是有风险的,在自己没有经济$ $③收入的情况下,考虑打工也会让自己的压力倍增,所以是否选择打工,需要根据自己的实际情况决定!

                                                                                  ', '

                                                                                  保证生活,可能会影响自己的身心健康。当然,在 不打工的情况下考虑创业, 但是创业是有风险的,在自己没有经济$ $③收入的情况下,考虑打工也会让自己的压力倍增,所以是否选择打工,需要根据自己的实际情况决定!

                                                                                  ')] + } + ] TEST_CASES_HTML = [ @@ -153,6 +185,20 @@ 'base_url': 'https://mathjax.github.io/MathJax-demos-web/tex-chtml.html', 'expected': 'assets/ccmath/mathjax-mml-chtml_prefix_1.html' }, + { + 'input': [ + 'assets/ccmath/math_physicsforums.html', + ], + 'base_url': 'https://www.physicsforums.com/threads/probability-theoretic-inequality.246150/', + 'expected': 'assets/ccmath/math_physicsforums_1.html' + }, + { + 'input': [ + 'assets/ccmath/math_physicsforums_2.html', + ], + 'base_url': 'https://physicshelpforum.com/t/latex-upgrade-physics-forum-powered-by-mathjax-v3.17489/', + 'expected': 'assets/ccmath/math_physicsforums_2_1.html' + } ] TEST_EQUATION_TYPE = [ @@ -195,6 +241,14 @@ { 'input': r'

                                                                                  $$x=5$$,$x=6$

                                                                                  ', 'expected': [('ccmath-interline', 'latex'), ('ccmath-inline', 'latex')] + }, + { + 'input': r'

                                                                                  [tex]\frac{1}{4} Log(x-1)=Log((x-1)^{1\over{4}})= Log(\sqrt[4]{x-1})[/tex]

                                                                                  ', + 'expected': [('ccmath-interline', 'latex')] + }, + { + 'input': r'

                                                                                  abc [itex]x^2[/itex] abc

                                                                                  ', + 'expected': [('ccmath-inline', 'latex')] } ] @@ -217,29 +271,6 @@ } ] -TEST_GET_MATH_RENDER = [ - { - 'input': [ - 'assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html' - ], - 'base_url': 'https://worldbuilding.stackexchange.com/questions/162264/is-there-a-safe-but-weird-distance-from-black-hole-merger', - 'expected': 'mathjax', - }, - { - 'input': [ - 'assets/ccmath/libretexts_1_p_latex_mathjax.html', - ], - 'base_url': 'https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers', - 'expected': 'mathjax', - }, - { - 'input': [ - 'assets/ccmath/math_katex_latex_2.html', - ], - 'base_url': 'https://www.intmath.com/cg5/katex-mathjax-comparison.php', - 'expected': 'katex', - } -] TEST_WRAP_MATH = [ { @@ -279,9 +310,49 @@ { 'input': r'\[a^2 + b^2 = c^2\]', 'expected': r'a^2 + b^2 = c^2' + }, + { + 'input': r'`E=mc^2`', + 'expected': r'E=mc^2' + }, + { + 'input': '', + 'expected': '' + }, + { + 'input': r'
                                                                                  \begin{align} a^2+b=c\end{align}\
                                                                                  ', + 'url': 'mathhelpforum.com', + 'expected': r'\begin{align} a^2+b=c\end{align}' + }, + { + 'input': r'
                                                                                  dz=\frac{1}{2}\frac{dx}{\cos ^2 x}
                                                                                  ', + 'url': 'mathhelpforum.com', + 'expected': r'dz=\frac{1}{2}\frac{dx}{\cos ^2 x}' + }, + { + 'input': r'
                                                                                  \begin{align} a^2+b=c\end{align}\
                                                                                  ', + 'expected': r'
                                                                                  \begin{align} a^2+b=c\end{align}\
                                                                                  ' + } +] + +TEST_FIX_MATHML_SUPERSCRIPT = [ + { + 'input': r'(1+x)2', + 'expected': r'(1+x)2' } ] +TEST_MML_TO_LATEX = [ + { + 'input': r'3x1+(1+x)2', + 'expected': r'$\sqrt{3x-1}+{\left(1+x\right)}^{2}$' + }, + { + 'input': '''(k=1 + nakbk)2''', + 'expected': r'${\left(\sum _{k=1}^{n}{a}_{k}{b}_{k}\right)}^{2}$' + } +] base_dir = Path(__file__).parent @@ -294,33 +365,33 @@ def test_math_recognizer(self): with self.subTest(input=test_case['input'], raw_html=test_case['raw_html']): output_html = self.math_recognizer.recognize( 'https://www.baidu.com', - test_case['input'], + [(html_to_element(test_case['input'][0][0]), html_to_element(test_case['input'][0][1]))], test_case['raw_html'] ) - print(output_html) expect_len = len(test_case['expected']) self.assertEqual(len(output_html), len(test_case['expected']), msg=f'result is: {len(output_html)}, expected is: {expect_len}') for i in range(len(output_html)): expect = test_case['expected'][i][0] - print(output_html[i][0]) - print(expect) - self.assertEqual(output_html[i][0], expect, msg=f'result is: {output_html[i][0]}, expected is: {expect}') + self.assertEqual(element_to_html(output_html[i][0]), expect, msg=f'result is: {output_html[i][0]}, expected is: {expect}') def test_math_recognizer_html(self): for test_case in TEST_CASES_HTML: raw_html_path = base_dir.joinpath(test_case['input'][0]) - print('raw_html_path::::::::', raw_html_path) + # print('raw_html_path::::::::', raw_html_path) base_url = test_case['base_url'] raw_html = raw_html_path.read_text() - parts = self.math_recognizer.recognize(base_url, [(raw_html, raw_html)], raw_html) + parts = self.math_recognizer.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) # print(parts) # 将parts列表中第一个元素拼接保存到文件,带随机数 # import random # with open('parts'+str(random.randint(1, 100))+".html", 'w') as f: # for part in parts: # f.write(str(part[0])) - parts = [part[0] for part in parts if CCTag.CC_MATH_INTERLINE in part[0]] - print(len(parts)) + # 检查行间公式抽取正确性 + new_parts = [] + for part in parts: + new_parts.append((element_to_html(part[0]), element_to_html(part[1]))) + parts = [part[0] for part in new_parts if CCTag.CC_MATH_INTERLINE in part[0]] expect_text = base_dir.joinpath(test_case['expected']).read_text().strip() expect_formulas = [formula for formula in expect_text.split('\n') if formula] self.assertEqual(len(parts), len(expect_formulas)) @@ -330,11 +401,15 @@ def test_math_recognizer_html(self): a_result = a_tree.xpath(f'.//{CCTag.CC_MATH_INTERLINE}')[0] answer = a_result.text.replace('\n', '').strip() # print('part::::::::', part) - print('expect::::::::', expect) - print('answer::::::::', answer) + # print('expect::::::::', expect) + # print('answer::::::::', answer) # answers.append(answer) self.assertEqual(expect, answer) + # print('answers::::::::', answers) # self.write_to_html(answers, test_case['input'][0]) + # 检查行内公式抽取正确性 + if test_case.get('expected_inline', None): + parts = [part[0] for part in parts if CCTag.CC_MATH_INLINE in part[0]] def write_to_html(self, answers, file_name): file_name = file_name.split('.')[0] @@ -348,9 +423,11 @@ def test_to_content_list_node(self): with self.subTest(input=test_case['input']): output_node = self.math_recognizer.to_content_list_node( test_case['input'][0], - test_case['input'][1], + html_to_element(test_case['input'][1]), test_case['input'][2] ) + print('output_node::::::::', output_node) + print(test_case['expected']) self.assertEqual(output_node, test_case['expected']) # 测试没有ccmath标签的情况 @@ -359,10 +436,10 @@ def test_to_content_list_node(self): '
                                                                                  Some math content
                                                                                  ', '
                                                                                  Some math content
                                                                                  ' ) - with self.assertRaises(HtmlMathRecognizerExp) as exc_info: + with self.assertRaises(HtmlMathRecognizerException) as exc_info: self.math_recognizer.to_content_list_node( invalid_content[0], - invalid_content[1], + html_to_element(invalid_content[1]), invalid_content[2] ) self.assertIn('No ccmath element found in content', str(exc_info.exception)) @@ -384,13 +461,6 @@ def test_get_equation_type(self): self.assertEqual(tag_math_type_list[i][0], expect0, msg=f'result is: {tag_math_type_list[i][0]}, expected is: {expect0}') self.assertEqual(tag_math_type_list[i][1], expect1, msg=f'result is: {tag_math_type_list[i][1]}, expected is: {expect1}') - def test_get_math_render(self): - for test_case in TEST_GET_MATH_RENDER: - raw_html_path = base_dir.joinpath(test_case['input'][0]) - raw_html = raw_html_path.read_text() - output_render = self.ccmath.get_math_render(raw_html) - self.assertEqual(output_render, test_case['expected']) - def test_wrap_math(self): for test_case in TEST_WRAP_MATH: with self.subTest(input=test_case['input']): @@ -400,14 +470,29 @@ def test_wrap_math(self): def test_wrap_math_md(self): for test_case in TEST_WRAP_MATH_MD: with self.subTest(input=test_case['input']): + self.ccmath.url = test_case.get('url', '') output_math = self.ccmath.wrap_math_md(test_case['input']) self.assertEqual(output_math, test_case['expected']) + def test_fix_mathml_superscript(self): + for test_case in TEST_FIX_MATHML_SUPERSCRIPT: + with self.subTest(input=test_case['input']): + output_math = self.ccmath.fix_mathml_superscript(test_case['input']) + output_math_clean = ''.join(output_math.split()) + expected_clean = ''.join(test_case['expected'].split()) + self.assertEqual(output_math_clean, expected_clean) + + def test_mml_to_latex(self): + for test_case in TEST_MML_TO_LATEX: + with self.subTest(input=test_case['input']): + output_math = self.ccmath.mml_to_latex(test_case['input']) + self.assertEqual(output_math, test_case['expected']) + if __name__ == '__main__': r = TestMathRecognizer() r.setUp() - r.test_math_recognizer() + # r.test_math_recognizer() r.test_math_recognizer_html() # r.test_math_recognizer() # r.test_to_content_list_node() @@ -424,6 +509,6 @@ def test_wrap_math_md(self): # c = TestCCMATH() # c.setUp() - # c.test_get_equation_type() + # c.test_mml_to_latex() # c.test_wrap_math() # c.test_wrap_math_md() diff --git a/tests/llm_web_kit/extractor/html/recognizer/test_math_render.py b/tests/llm_web_kit/extractor/html/recognizer/test_math_render.py new file mode 100644 index 00000000..85846b46 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/test_math_render.py @@ -0,0 +1,1104 @@ +import re +import unittest +import warnings +from pathlib import Path + +from llm_web_kit.extractor.html.recognizer.cc_math.common import MathType +from llm_web_kit.extractor.html.recognizer.cc_math.render.katex import \ + KaTeXRender +from llm_web_kit.extractor.html.recognizer.cc_math.render.mathjax import \ + MathJaxRender +from llm_web_kit.extractor.html.recognizer.cc_math.render.render import ( + BaseMathRender, MathRenderType) +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.libs.html_utils import element_to_html, html_to_element + +# 忽略来自 lark 库的废弃警告 +warnings.filterwarnings('ignore', category=DeprecationWarning, module='lark.utils') + +display_pattern = re.compile('\\$\\$(.*?)\\$\\$|\\\\\\[(.*?)\\\\\\]|\\\\\\\\\\[(.*?)\\\\\\\\\\]', re.DOTALL) +inline_pattern = re.compile('\\$(.*?)\\$|\\\\\\((.*?)\\\\\\)|\\\\\\\\\\((.*?)\\\\\\\\\\)', re.DOTALL) +base_dir = Path(__file__).parent + +TEST_GET_MATH_RENDER = [ + { + 'input': [ + 'assets/ccmath/stackexchange_1_span-math-container_latex_mathjax.html' + ], + 'base_url': 'https://worldbuilding.stackexchange.com/questions/162264/is-there-a-safe-but-weird-distance-from-black-hole-merger', + 'expected': 'mathjax', + 'is_customized_options': False + }, + { + 'input': [ + 'assets/ccmath/libretexts_1_p_latex_mathjax.html', + ], + 'base_url': 'https://math.libretexts.org/Under_Construction/Purgatory/Remixer_University/Username%3A_pseeburger/MTH_098_Elementary_Algebra/1%3A_Foundations/1.5%3A_Multiply_and_Divide_Integers', + 'expected': 'mathjax', + 'is_customized_options': False + }, + { + 'input': [ + 'assets/ccmath/math_katex_latex_2.html', + ], + 'base_url': 'https://www.intmath.com/cg5/katex-mathjax-comparison.php', + 'expected': 'katex', + 'is_customized_options': False + }, + { + 'input': [ + 'assets/ccmath/math_physicsforums.html', + ], + 'base_url': 'https://www.physicsforums.com/threads/probability-theoretic-inequality.246150/', + 'expected': 'mathjax', + 'is_customized_options': True + }, + { + 'input': [ + 'assets/ccmath/wikipedia_1_math_annotation.html', + ], + 'base_url': 'https://en.m.wikipedia.org/wiki/Variance', + 'expected': None, + 'is_customized_options': False + } +] + + +class TestMathRender(unittest.TestCase): + """测试数学公式渲染器的各种情况.""" + + def setUp(self): + """设置测试环境.""" + self.mathjax_render = MathJaxRender() + self.katex_render = KaTeXRender() + + def test_empty_text(self): + """测试空文本的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  ') + + # 测试空文本 + result = self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + self.assertEqual(result, None) + + # 测试None + result = self.mathjax_render._process_math_in_text(parent, None, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + self.assertEqual(result, None) + self.assertEqual(element_to_html(parent), '
                                                                                  ') + + def test_no_match(self): + """测试没有匹配的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  This is a text without any math formula.
                                                                                  ') + + # 测试没有匹配的文本 + result = self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + self.assertEqual(result, parent.text) + self.assertEqual(element_to_html(parent), '
                                                                                  This is a text without any math formula.
                                                                                  ') + + # 测试只有一个分隔符的情况 + parent.text = 'This is a text with only one $ delimiter.' + result = self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + self.assertEqual(result, parent.text) + self.assertEqual(element_to_html(parent), '
                                                                                  This is a text with only one $ delimiter.
                                                                                  ') + + def test_single_inline_formula(self): + """测试单个行内公式的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  This is an inline formula: $a^2 + b^2 = c^2$ in text.
                                                                                  ') + + # 测试单个行内公式 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + + # 验证结果 + print('single_inline_formula:', element_to_html(parent)) + self.assertEqual(element_to_html(parent), '
                                                                                  This is an inline formula: a^2 + b^2 = c^2 in text.
                                                                                  ') + self.assertEqual(parent.text, 'This is an inline formula: ') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, ' in text.') + self.assertEqual(parent[0].get('type'), MathType.LATEX) + self.assertEqual(parent[0].get('by'), 'mathjax') + self.assertEqual(parent[0].get('html'), '$a^2 + b^2 = c^2$') + + def test_single_display_formula(self): + """测试单个行间公式的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  This is a display formula: $$a^2 + b^2 = c^2$$ in text.
                                                                                  ') + + # 测试单个行间公式 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$\\$(.*?)\\$\\$', re.DOTALL), True, False) + + # 验证结果 + self.assertEqual(element_to_html(parent), '
                                                                                  This is a display formula: a^2 + b^2 = c^2 in text.
                                                                                  ') + self.assertEqual(parent.text, 'This is a display formula: ') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INTERLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, ' in text.') + self.assertEqual(parent[0].get('type'), MathType.LATEX) + self.assertEqual(parent[0].get('by'), 'mathjax') + self.assertEqual(parent[0].get('html'), '$$a^2 + b^2 = c^2$$') + + def test_multiple_formulas(self): + """测试多个公式的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  Formula 1: $a^2$ and formula 2: $b^2$ and formula 3: $c^2$.
                                                                                  ') + + # 测试多个公式 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + + # 验证结果 + print('multiple_formulas:', element_to_html(parent)) + self.assertEqual(element_to_html(parent), '
                                                                                  Formula 1: a^2 and formula 2: b^2 and formula 3: c^2.
                                                                                  ') + self.assertEqual(parent.text, 'Formula 1: ') + self.assertEqual(len(parent), 3) + + # 检查第一个公式 + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2') + self.assertEqual(parent[0].tail, ' and formula 2: ') + + # 检查第二个公式 + self.assertEqual(parent[1].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[1].text, 'b^2') + self.assertEqual(parent[1].tail, ' and formula 3: ') + + # 检查第三个公式 + self.assertEqual(parent[2].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[2].text, 'c^2') + self.assertEqual(parent[2].tail, '.') + + def test_formula_at_beginning(self): + """测试公式在文本开头的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  $a^2 + b^2 = c^2$ is the Pythagorean theorem.
                                                                                  ') + + # 测试公式在开头 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + + # 验证结果 + self.assertEqual(element_to_html(parent), '
                                                                                  a^2 + b^2 = c^2 is the Pythagorean theorem.
                                                                                  ') + self.assertEqual(parent.text, '') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, ' is the Pythagorean theorem.') + + def test_formula_at_end(self): + """测试公式在文本末尾的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  The Pythagorean theorem is $a^2 + b^2 = c^2$
                                                                                  ') + + # 测试公式在末尾 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + + # 验证结果 + self.assertEqual(element_to_html(parent), '
                                                                                  The Pythagorean theorem is a^2 + b^2 = c^2
                                                                                  ') + self.assertEqual(parent.text, 'The Pythagorean theorem is ') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, '') + + def test_only_formula(self): + """测试只有公式的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + + # 测试只有公式 + self.mathjax_render._process_math_in_text(parent, parent.text, re.compile('\\$(.*?)\\$', re.DOTALL), False, False) + + # 验证结果 + self.assertEqual(element_to_html(parent), '
                                                                                  a^2 + b^2 = c^2
                                                                                  ') + self.assertEqual(parent.text, '') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, '') + + def test_tail_text(self): + """测试处理tail文本的情况.""" + # 创建一个带有子元素的HTML元素 + parent = html_to_element('
                                                                                  This is a span
                                                                                  ') + child = parent[0] + + # 设置child.tail包含数学公式 + child.tail = 'This is a tail text with formula: $a^2 + b^2 = c^2$ end.' + + # 使用_process_math_in_text方法处理tail文本中的公式 + self.mathjax_render._process_math_in_text(child, child.tail, inline_pattern, False, True) + + # 验证结果 + self.assertEqual(child.tail, 'This is a tail text with formula: ') + self.assertEqual(len(parent), 2) + self.assertEqual(parent[1].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[1].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[1].tail, ' end.') + self.assertEqual(element_to_html(parent), '
                                                                                  This is a spanThis is a tail text with formula: a^2 + b^2 = c^2 end.
                                                                                  ') + + def test_multiple_formulas_in_tail(self): + """测试tail文本中有多个公式的情况.""" + # 创建一个带有子元素的HTML元素 + parent = html_to_element('
                                                                                  This is a span
                                                                                  ') + child = parent[0] + + # 设置child.tail包含多个数学公式 + child.tail = 'Formula 1: $a^2$ and formula 2: $b^2$ and formula 3: $c^2$.' + + # 使用_find_math_in_element方法处理tail文本中的公式 + self.mathjax_render._find_math_in_element(child, inline_pattern, display_pattern) + + # 验证结果 + self.assertEqual(child.tail, 'Formula 1: ') + self.assertEqual(len(parent), 4) # 原始span + 3个公式节点 + + # 检查第一个公式 + self.assertEqual(parent[1].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[1].text, 'a^2') + self.assertEqual(parent[1].tail, ' and formula 2: ') + + # 检查第二个公式 + self.assertEqual(parent[2].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[2].text, 'b^2') + self.assertEqual(parent[2].tail, ' and formula 3: ') + + # 检查第三个公式 + self.assertEqual(parent[3].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[3].text, 'c^2') + self.assertEqual(parent[3].tail, '.') + + # 检查完整HTML + expected_html = '
                                                                                  This is a spanFormula 1: a^2 and formula 2: b^2 and formula 3: c^2.
                                                                                  ' + self.assertEqual(element_to_html(parent), expected_html) + + def test_different_delimiters(self): + """测试不同的分隔符.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  Inline: \\(a^2 + b^2 = c^2\\) and display: \\[a^2 + b^2 = c^2\\]
                                                                                  ') + + # 处理行内公式 + self.mathjax_render._process_math_in_text(parent, parent.text, inline_pattern, False, False) + + # 验证结果 + self.assertEqual(parent.text, 'Inline: ') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[0].tail, ' and display: \\[a^2 + b^2 = c^2\\]') + + # 检查中间HTML + mid_html = '
                                                                                  Inline: a^2 + b^2 = c^2 and display: \\[a^2 + b^2 = c^2\\]
                                                                                  ' + self.assertEqual(element_to_html(parent), mid_html) + + # 处理tail的行间公式 + self.mathjax_render._process_math_in_text(parent[0], parent[0].tail, display_pattern, True, True) + + # 验证结果 + self.assertEqual(parent[0].tail, ' and display: ') + self.assertEqual(len(parent), 2) + self.assertEqual(parent[1].tag, CCTag.CC_MATH_INTERLINE) + self.assertEqual(parent[1].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent[1].tail, '') + + # 检查最终HTML + final_html = '
                                                                                  Inline: a^2 + b^2 = c^2 and display: a^2 + b^2 = c^2
                                                                                  ' + self.assertEqual(element_to_html(parent), final_html) + + def test_different_delimiters_element(self): + parent = html_to_element('
                                                                                  Inline: \\(a^2 + b^2 = c^2\\) and display: \\[a^2 + b^2 = c^2\\]
                                                                                  ') + self.mathjax_render._find_math_in_element(parent, inline_pattern, display_pattern) + + # 检查最终HTML + final_html = '
                                                                                  Inline: a^2 + b^2 = c^2 and display: a^2 + b^2 = c^2
                                                                                  ' + self.assertEqual(element_to_html(parent), final_html) + + def test_tex_itex_delimiters(self): + """测试[tex]和[itex]分隔符.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  Display: [tex]a^2 + b^2 = c^2[/tex] and inline: [itex]a^2 + b^2 = c^2[/itex]
                                                                                  ') + + # 测试[tex]分隔符 + inline_pattern = re.compile('\\[itex\\](.*?)\\[\\/itex\\]', re.DOTALL) + display_pattern = re.compile('\\[tex\\](.*?)\\[\\/tex\\]', re.DOTALL) + + self.mathjax_render._find_math_in_element(parent, inline_pattern, display_pattern) + + # 检查最终HTML + final_html = '
                                                                                  Display: a^2 + b^2 = c^2 and inline: a^2 + b^2 = c^2
                                                                                  ' + self.assertEqual(element_to_html(parent), final_html) + + # def test_katex_render(self): + # """测试KaTeX渲染器.""" + # # 创建一个简单的HTML元素 + # parent = html_to_element('
                                                                                  This is a KaTeX formula: $a^2 + b^2 = c^2$ in text.
                                                                                  ') + + # # 测试KaTeX渲染器 + # self.katex_render._process_math_in_text(parent, parent.text, inline_pattern, False, False) + + # # 验证结果 + # self.assertEqual(parent.text, 'This is a KaTeX formula: ') + # self.assertEqual(len(parent), 1) + # self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + # self.assertEqual(parent[0].text, 'a^2 + b^2 = c^2') + # self.assertEqual(parent[0].tail, ' in text.') + # self.assertEqual(parent[0].get('type'), MathType.LATEX) + # self.assertEqual(parent[0].get('by'), 'katex') + # self.assertEqual(parent[0].get('html'), '$a^2 + b^2 = c^2$') + + # # 检查HTML + # expected_html = '
                                                                                  This is a KaTeX formula: a^2 + b^2 = c^2 in text.
                                                                                  ' + # self.assertEqual(element_to_html(parent), expected_html) + + def test_empty_formula(self): + """测试空公式的情况.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  This is an empty formula: $$ in text.
                                                                                  ') + + # 测试空公式 + self.mathjax_render._process_math_in_text(parent, parent.text, inline_pattern, False, False) + + # 验证结果 - 应该保持原文本不变 + self.assertEqual(parent.text, 'This is an empty formula: $$ in text.') + self.assertEqual(len(parent), 0) + + # 检查HTML - 应该保持原HTML不变 + expected_html = '
                                                                                  This is an empty formula: $$ in text.
                                                                                  ' + self.assertEqual(element_to_html(parent), expected_html) + + def test_nested_elements(self): + """测试嵌套元素的情况.""" + # 创建一个嵌套的HTML元素 + parent = html_to_element('

                                                                                  Paragraph with formula: $a^2$ Span text with formula: $b^2$ end.

                                                                                  ') + + # 处理p.text + self.mathjax_render._find_math_in_element(parent, inline_pattern, display_pattern) + + # 检查最终HTML + final_html = '

                                                                                  Paragraph with formula: a^2 Span text with formula: b^2 end.

                                                                                  ' + self.assertEqual(element_to_html(parent), final_html) + + def test_find_math_method(self): + """测试find_math方法.""" + # 创建一个HTML树 + html = """ +
                                                                                  +

                                                                                  Paragraph with inline formula: $a^2 + b^2 = c^2$ and display formula: $$E = mc^2$$

                                                                                  +

                                                                                  Another paragraph with [tex]\\frac{1}{2}[/tex] formula.

                                                                                  +
                                                                                  + """ + root = html_to_element(html) + + # 使用find_math方法处理 + self.mathjax_render.find_math(root) + + # 验证结果 + p1 = root[0] + p2 = root[1] + + # 检查第一个段落 + self.assertEqual(p1.text, 'Paragraph with inline formula: ') + self.assertEqual(len(p1), 2) + self.assertEqual(p1[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(p1[0].text, 'a^2 + b^2 = c^2') + self.assertEqual(p1[0].tail, ' and display formula: ') + self.assertEqual(p1[1].tag, CCTag.CC_MATH_INTERLINE) + self.assertEqual(p1[1].text, 'E = mc^2') + self.assertEqual(p1[1].tail, '') + + # 检查第二个段落 + self.assertEqual(p2.text, 'Another paragraph with [tex]\\frac{1}{2}[/tex] formula.') + self.assertEqual(len(p2), 0) + + # 检查完整HTML + print('test_find_math_method expected_html:', element_to_html(root)) + expected_html = """
                                                                                  +

                                                                                  Paragraph with inline formula: a^2 + b^2 = c^2 and display formula: E = mc^2

                                                                                  +

                                                                                  Another paragraph with [tex]\\frac{1}{2}[/tex] formula.

                                                                                  +
                                                                                  + """ + self.assertEqual(element_to_html(root), expected_html) + + def test_br_tags(self): + """测试
                                                                                  标签的处理.""" + # 测试带有
                                                                                  标签的文本 + html = '
                                                                                  Line 1
                                                                                  $a^2 + b^2 = c^2$
                                                                                  Line 3
                                                                                  ' + + # 将文本设置为parent的HTML内容 + parent_with_br = html_to_element(html) + + # 使用find_math方法处理 + self.mathjax_render.find_math(parent_with_br) + + # 验证结果 -
                                                                                  标签应该被保留 + self.assertEqual(parent_with_br.text, 'Line 1') + self.assertEqual(len(parent_with_br), 3) + self.assertEqual(parent_with_br[0].tag, 'br') + self.assertEqual(parent_with_br[0].tail, '') + self.assertEqual(parent_with_br[1].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent_with_br[1].text, 'a^2 + b^2 = c^2') + self.assertEqual(parent_with_br[1].tail, '') + self.assertEqual(parent_with_br[2].tag, 'br') + self.assertEqual(parent_with_br[2].tail, 'Line 3') + + # 检查HTML + expected_html = '
                                                                                  Line 1
                                                                                  a^2 + b^2 = c^2
                                                                                  Line 3
                                                                                  ' + self.assertEqual(element_to_html(parent_with_br), expected_html) + + def test_text_preservation(self): + """测试文本保留问题.""" + # 创建一个简单的HTML元素 + parent = html_to_element('
                                                                                  Prefix text $formula$ suffix text.
                                                                                  ') + + # 测试前缀文本保留 + result = self.mathjax_render._process_math_in_text(parent, parent.text, inline_pattern, False, False) + + # 打印调试信息 + print('text_preservation result:', result) + print('text_preservation parent.text:', parent.text) + print('text_preservation HTML:', element_to_html(parent)) + + # 验证结果 + self.assertEqual(result, 'Prefix text ') + self.assertEqual(parent.text, 'Prefix text ') + self.assertEqual(len(parent), 1) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'formula') + self.assertEqual(parent[0].tail, ' suffix text.') + + # 检查HTML - 确保前缀和后缀文本都被保留 + expected_html = '
                                                                                  Prefix text formula suffix text.
                                                                                  ' + self.assertEqual(element_to_html(parent), expected_html) + + # 重置测试环境 + parent = html_to_element('
                                                                                  Text1 $formula1$ middle text $formula2$ text3.
                                                                                  ') + + # 测试多个公式之间的文本保留 + result = self.mathjax_render._process_math_in_text(parent, parent.text, inline_pattern, False, False) + + # 打印调试信息 + print('multiple_formulas_text_preservation result:', result) + print('multiple_formulas_text_preservation parent.text:', parent.text) + print('multiple_formulas_text_preservation HTML:', element_to_html(parent)) + + # 验证结果 + self.assertEqual(result, 'Text1 ') + self.assertEqual(parent.text, 'Text1 ') + self.assertEqual(len(parent), 2) + self.assertEqual(parent[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[0].text, 'formula1') + self.assertEqual(parent[0].tail, ' middle text ') + self.assertEqual(parent[1].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(parent[1].text, 'formula2') + self.assertEqual(parent[1].tail, ' text3.') + + # 检查HTML - 确保所有文本段都被保留 + expected_html = '
                                                                                  Text1 formula1 middle text formula2 text3.
                                                                                  ' + self.assertEqual(element_to_html(parent), expected_html) + + def test_mathjax_get_options(self): + """测试 MathJax 渲染器的 get_options 方法.""" + # 测试默认配置 + html_default = """ + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + options_default = self.mathjax_render.get_options(html_default) + self.assertEqual(options_default['inlineMath'], []) + self.assertEqual(options_default['displayMath'], []) + self.assertEqual(options_default['version'], '2.7.5') + self.assertEqual(options_default['config'], '') + + # 测试带有配置的 MathJax + html_with_config = """ + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + options_with_config = self.mathjax_render.get_options(html_with_config) + self.assertEqual(len(options_with_config['inlineMath']), 2) + self.assertEqual(options_with_config['inlineMath'][0], ['$', '$']) + self.assertEqual(options_with_config['inlineMath'][1], ['\\(', '\\)']) + self.assertEqual(len(options_with_config['displayMath']), 2) + self.assertEqual(options_with_config['displayMath'][0], ['$$', '$$']) + self.assertEqual(options_with_config['displayMath'][1], ['\\[', '\\]']) + self.assertEqual(options_with_config['version'], '2.7.5') + self.assertEqual(options_with_config['config'], 'TeX-MML-AM_CHTML') + self.assertEqual(len(options_with_config['extensions']), 2) + self.assertEqual(options_with_config['extensions'][0], 'tex2jax.js') + self.assertEqual(options_with_config['extensions'][1], 'TeX/AMSmath.js') + + # 测试最新版本的 MathJax + html_latest = """ + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + options_latest = self.mathjax_render.get_options(html_latest) + self.assertEqual(options_latest['version'], 'latest') + + # 测试自定义配置 + html_custom = """ + + + + + + +

                                                                                  Some math: [itex]E=mc^2[/itex]

                                                                                  + + + """ + options_custom = self.mathjax_render.get_options(html_custom) + self.assertEqual(len(options_custom['inlineMath']), 1) + self.assertEqual(options_custom['inlineMath'][0], ['[itex]', '[/itex]']) + self.assertEqual(len(options_custom['displayMath']), 1) + self.assertEqual(options_custom['displayMath'][0], ['[tex]', '[/tex]']) + self.assertTrue(self.mathjax_render.is_customized_options()) + + def test_katex_get_options(self): + """测试 KaTeX 渲染器的 get_options 方法.""" + # 测试默认配置 + html_default = """ + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + options_default = self.katex_render.get_options(html_default) + self.assertEqual(options_default['version'], '0.13.11') + self.assertEqual(options_default['auto_render'], False) + self.assertEqual(options_default['delimiters'], []) + + # 测试带有自动渲染的 KaTeX + html_auto_render = """ + + + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + options_auto_render = self.katex_render.get_options(html_auto_render) + self.assertEqual(options_auto_render['version'], '0.13.11') + self.assertEqual(options_auto_render['auto_render'], True) + self.assertEqual(options_auto_render['throw_on_error'], False) + self.assertEqual(options_auto_render['error_color'], '#CC0000') + self.assertEqual(options_auto_render['display_mode'], False) + self.assertEqual(len(options_auto_render['delimiters']), 3) + self.assertEqual(options_auto_render['delimiters'][0]['left'], '$$') + self.assertEqual(options_auto_render['delimiters'][0]['right'], '$$') + self.assertEqual(options_auto_render['delimiters'][0]['display'], True) + self.assertEqual(options_auto_render['delimiters'][1]['left'], '$') + self.assertEqual(options_auto_render['delimiters'][1]['right'], '$') + self.assertEqual(options_auto_render['delimiters'][1]['display'], False) + + # # 测试自定义配置 + # html_custom = """ + # + # + # + # + # + # + # + # + #

                                                                                  Some math: [math]E=mc^2[/math]

                                                                                  + # + # + # """ + # options_custom = self.katex_render.get_options(html_custom) + # self.assertEqual(options_custom['auto_render'], True) + # self.assertEqual(options_custom['throw_on_error'], True) + # self.assertEqual(options_custom['display_mode'], True) + # self.assertEqual(len(options_custom['delimiters']), 1) + # self.assertEqual(options_custom['delimiters'][0]['left'], '[math]') + # self.assertEqual(options_custom['delimiters'][0]['right'], '[/math]') + # self.assertEqual(options_custom['delimiters'][0]['display'], True) + + def test_mathjax_should_ignore_element(self): + """测试 _should_ignore_element 方法.""" + # 测试带有忽略类的元素 + ignore_element = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + self.assertTrue(self.mathjax_render._should_ignore_element(ignore_element)) + + # 测试带有处理类的元素 + process_element = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + self.assertFalse(self.mathjax_render._should_ignore_element(process_element)) + + # 测试普通元素 + normal_element = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + self.assertFalse(self.mathjax_render._should_ignore_element(normal_element)) + + # 测试嵌套元素 - 父元素带有忽略类 + parent_ignore_html = """ +
                                                                                  +

                                                                                  This formula should be ignored: $a^2 + b^2 = c^2$

                                                                                  +
                                                                                  + """ + parent_ignore_tree = html_to_element(parent_ignore_html) + child_element = parent_ignore_tree[0] # 获取 p 元素 + self.assertTrue(self.mathjax_render._should_ignore_element(child_element)) + + # 测试嵌套元素 - 子元素带有处理类,父元素带有忽略类 + mixed_html = """ +
                                                                                  +

                                                                                  This formula should be processed: $a^2 + b^2 = c^2$

                                                                                  +
                                                                                  + """ + mixed_tree = html_to_element(mixed_html) + mixed_child = mixed_tree[0] # 获取 p 元素 + self.assertFalse(self.mathjax_render._should_ignore_element(mixed_child)) + + # 测试多级嵌套 - 祖父元素带有忽略类 + nested_html = """ +
                                                                                  +
                                                                                  +

                                                                                  This formula should be ignored: $a^2 + b^2 = c^2$

                                                                                  +
                                                                                  +
                                                                                  + """ + nested_tree = html_to_element(nested_html) + section_element = nested_tree[0] # 获取 section 元素 + p_element = section_element[0] # 获取 p 元素 + self.assertTrue(self.mathjax_render._should_ignore_element(p_element)) + + # 测试带有多个类的元素 + multi_class_element = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + self.assertTrue(self.mathjax_render._should_ignore_element(multi_class_element)) + + # 测试带有多个类的元素,包括处理类 + multi_class_process = html_to_element('
                                                                                  $a^2 + b^2 = c^2$
                                                                                  ') + self.assertFalse(self.mathjax_render._should_ignore_element(multi_class_process)) + + def test_mathjax_find_math_with_ignore(self): + """测试带有忽略类的元素的 find_math 方法.""" + # 创建一个带有忽略类的 HTML + ignore_html = """ +
                                                                                  +

                                                                                  This formula should be processed: $a^2 + b^2 = c^2$

                                                                                  +

                                                                                  This formula should be ignored: $x^2 + y^2 = z^2$

                                                                                  +
                                                                                  +

                                                                                  This formula should also be ignored: $E = mc^2$

                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  This formula should be processed: $F = ma$

                                                                                  +

                                                                                  This formula should be processed even if parent is ignored: $P = IV$

                                                                                  +
                                                                                  +
                                                                                  + """ + root = html_to_element(ignore_html) + + # 使用 find_math 方法处理 + self.mathjax_render.find_math(root) + + # 验证结果 + # 第一个段落应该被处理 + p1 = root[0] + self.assertEqual(p1.text, 'This formula should be processed: ') + self.assertEqual(len(p1), 1) + self.assertEqual(p1[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(p1[0].text, 'a^2 + b^2 = c^2') + + # 第二个段落(带有忽略类)不应该被处理 + p2 = root[1] + self.assertEqual(p2.text, 'This formula should be ignored: $x^2 + y^2 = z^2$') + self.assertEqual(len(p2), 0) + + # 第三个部分(带有忽略类)不应该被处理 + section1 = root[2] + p3 = section1[0] + self.assertEqual(p3.text, 'This formula should also be ignored: $E = mc^2$') + self.assertEqual(len(p3), 0) + + # 第四个部分的第一个段落应该被处理 + section2 = root[3] + p4 = section2[0] + self.assertEqual(p4.text, 'This formula should be processed: ') + self.assertEqual(len(p4), 1) + self.assertEqual(p4[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(p4[0].text, 'F = ma') + + # 第四个部分的第二个段落(带有处理类)应该被处理 + p5 = section2[1] + self.assertEqual(p5.text, 'This formula should be processed even if parent is ignored: ') + self.assertEqual(len(p5), 1) + self.assertEqual(p5[0].tag, CCTag.CC_MATH_INLINE) + self.assertEqual(p5[0].text, 'P = IV') + + # 检查HTML - 确保所有文本段都被保留 + excepted_html = """
                                                                                  +

                                                                                  This formula should be processed: a^2 + b^2 = c^2

                                                                                  +

                                                                                  This formula should be ignored: $x^2 + y^2 = z^2$

                                                                                  +
                                                                                  +

                                                                                  This formula should also be ignored: $E = mc^2$

                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  This formula should be processed: F = ma

                                                                                  +

                                                                                  This formula should be processed even if parent is ignored: P = IV

                                                                                  +
                                                                                  +
                                                                                  + """ + self.assertEqual(element_to_html(root), excepted_html) + + def test_detect_render_type(self): + """测试检测渲染器类型的方法.""" + from llm_web_kit.extractor.html.recognizer.cc_math.render.render import \ + BaseMathRender + + # 测试 MathJax 渲染器检测 + mathjax_html = """ + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + base_render = BaseMathRender() + mathjax_render = base_render.get_math_render(mathjax_html) + self.assertIsNotNone(mathjax_render) + self.assertEqual(mathjax_render.get_render_type(), 'mathjax') + + # 测试 KaTeX 渲染器检测 + katex_html = """ + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + katex_render = base_render.get_math_render(katex_html) + self.assertIsNotNone(katex_render) + self.assertEqual(katex_render.get_render_type(), 'katex') + + # 测试同时包含 MathJax 和 KaTeX 的情况(应该优先检测 KaTeX) + mixed_html = """ + + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + mixed_render = base_render.get_math_render(mixed_html) + self.assertIsNotNone(mixed_render) + self.assertEqual(mixed_render.get_render_type(), 'katex') + + # 测试没有渲染器的情况 + no_render_html = """ + + + No Math Renderer + + +

                                                                                  Some text without math

                                                                                  + + + """ + no_render = base_render.get_math_render(no_render_html) + self.assertIsInstance(no_render, BaseMathRender) + self.assertIsNone(no_render.get_render_type()) + + # 测试不同版本的 MathJax + mathjax3_html = """ + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + mathjax3_render = base_render.get_math_render(mathjax3_html) + self.assertIsNotNone(mathjax3_render) + self.assertEqual(mathjax3_render.get_render_type(), 'mathjax') + + # 测试 MathJax 的 CDN 变体 + mathjax_cdn_html = """ + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + mathjax_cdn_render = base_render.get_math_render(mathjax_cdn_html) + self.assertIsNotNone(mathjax_cdn_render) + self.assertEqual(mathjax_cdn_render.get_render_type(), 'mathjax') + + # 测试 KaTeX 的自动渲染扩展 + katex_auto_html = """ + + + + + + + +

                                                                                  Some math: $E=mc^2$

                                                                                  + + + """ + katex_auto_render = base_render.get_math_render(katex_auto_html) + self.assertIsNotNone(katex_auto_render) + self.assertEqual(katex_auto_render.get_render_type(), 'katex') + + # 测试无效的 HTML + invalid_html = 'This is not valid HTML' + invalid_render = base_render.get_math_render(invalid_html) + self.assertIsInstance(invalid_render, BaseMathRender) + + # 测试空 HTML + empty_html = '' + empty_render = base_render.get_math_render(empty_html) + self.assertIsNone(empty_render) + + def test_detect_render_type_from_files(self): + """测试从文件中检测渲染器类型.""" + from llm_web_kit.extractor.html.recognizer.cc_math.render.render import \ + BaseMathRender + + # 使用 TEST_GET_MATH_RENDER 中的测试用例 + for test_case in TEST_GET_MATH_RENDER: + input_files = test_case['input'] + expected_type = test_case['expected'] + + # 跳过不存在的文件 + if not all(base_dir.joinpath(file).exists() for file in input_files): + continue + + # 读取文件内容 + html_content = '' + for file in input_files: + file_path = base_dir.joinpath(file) + if file_path.exists(): + with open(file_path, 'r', encoding='utf-8') as f: + html_content += f.read() + + # 检测渲染器类型 + base_render = BaseMathRender() + render = base_render.get_math_render(html_content) + + # 验证结果 + if expected_type is None: + self.assertIsInstance(render, BaseMathRender) + self.assertIsNone(render.get_render_type()) + else: + self.assertIsNotNone(render) + self.assertEqual(render.get_render_type(), expected_type) + + # 检查是否为自定义选项 + is_customized = test_case['is_customized_options'] + if expected_type == 'mathjax': + self.assertEqual(render.is_customized_options(), is_customized) + + def test_detect_render_type_none(self): + """测试检测空HTML树.""" + self.assertIsNone(BaseMathRender.detect_render_type(None)) + + def test_detect_render_type_empty(self): + """测试检测空内容的HTML.""" + tree = html_to_element('') + self.assertIsNone(BaseMathRender.detect_render_type(tree)) + + def test_detect_render_type_katex(self): + """测试检测KaTeX渲染器.""" + # 测试常规KaTeX链接 + html = """ + + + + + + + """ + tree = html_to_element(html) + self.assertEqual( + BaseMathRender.detect_render_type(tree), + MathRenderType.KATEX + ) + + # 测试自定义KaTeX链接 + html = """ + + + + + + + """ + tree = html_to_element(html) + self.assertEqual( + BaseMathRender.detect_render_type(tree), + MathRenderType.KATEX + ) + + def test_detect_render_type_mathjax(self): + """测试检测MathJax渲染器.""" + # 测试常规MathJax脚本 + html = """ + + + + + + + """ + tree = html_to_element(html) + self.assertEqual( + BaseMathRender.detect_render_type(tree), + MathRenderType.MATHJAX + ) + + # 测试AsciiMath脚本 + html = """ + + + + + + + """ + tree = html_to_element(html) + self.assertEqual( + BaseMathRender.detect_render_type(tree), + MathRenderType.MATHJAX + ) + + def test_detect_render_type_mixed(self): + """测试同时存在多个渲染器的情况.""" + html = """ + + + + + + + + """ + tree = html_to_element(html) + # 应该返回第一个检测到的渲染器类型 + self.assertEqual( + BaseMathRender.detect_render_type(tree), + MathRenderType.KATEX + ) + + def test_create_render_none(self): + """测试创建渲染器(无渲染器类型).""" + tree = html_to_element('') + render = BaseMathRender.create_render(tree) + self.assertIsInstance(render, BaseMathRender) + + def test_create_render_katex(self): + """测试创建KaTeX渲染器.""" + html = """ + + + + + + + """ + tree = html_to_element(html) + render = BaseMathRender.create_render(tree) + self.assertIsInstance(render, KaTeXRender) + + def test_create_render_mathjax(self): + """测试创建MathJax渲染器.""" + html = """ + + + + + + + """ + tree = html_to_element(html) + render = BaseMathRender.create_render(tree) + self.assertIsInstance(render, MathJaxRender) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_para.py b/tests/llm_web_kit/extractor/html/recognizer/test_para.py similarity index 85% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_para.py rename to tests/llm_web_kit/extractor/html/recognizer/test_para.py index 8a6af7d5..adb38c59 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_para.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_para.py @@ -2,9 +2,8 @@ import os import unittest +from llm_web_kit.extractor.html.recognizer.text import TextParagraphRecognizer from llm_web_kit.libs.html_utils import html_to_element -from llm_web_kit.pipeline.extractor.html.recognizer.text import \ - TextParagraphRecognizer class TestTextParagraphRecognizer(unittest.TestCase): @@ -21,21 +20,21 @@ def test_recognize_simple_para(self): html = f.read() # 执行识别 - result = self.recognizer.recognize('', [(html, html)], html) + result = self.recognizer.recognize('', [(html_to_element(html), html_to_element(html))], html) # 验证结果 self.assertEqual(len(result), 2) # 应该识别出2个段落 # 验证第一个段落 first_para = result[0][0] - ccel = html_to_element(first_para) + ccel = first_para jso = json.loads(ccel.text) self.assertEqual(jso[0]['c'], '质量方程') self.assertEqual(jso[0]['t'], 'text') # 验证第二个段落 second_para = result[1][0] - text = html_to_element(second_para).text + text = second_para.text jso = json.loads(text) self.assertEqual(jso[0]['c'], '爱因斯坦的方程') self.assertEqual(jso[0]['t'], 'text') diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_recognizer.py b/tests/llm_web_kit/extractor/html/recognizer/test_recognizer.py similarity index 58% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_recognizer.py rename to tests/llm_web_kit/extractor/html/recognizer/test_recognizer.py index 6ba06774..86b303e6 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_recognizer.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_recognizer.py @@ -1,8 +1,9 @@ import os import unittest -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import \ +from llm_web_kit.extractor.html.recognizer.recognizer import \ BaseHTMLElementRecognizer +from llm_web_kit.libs.html_utils import element_to_html, html_to_element class TestBaseHTMLElementRecognizer(unittest.TestCase): @@ -10,51 +11,50 @@ def test_html_split_by_tags_1(self): with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/image.html', 'r') as file: html_content = file.read() - result = BaseHTMLElementRecognizer.html_split_by_tags(html_content, ['img']) + result = BaseHTMLElementRecognizer.html_split_by_tags(html_to_element(html_content), ['img']) assert len(result) == 7 def test_html_split_by_tags_2(self): with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/cccode.html', 'r') as file: html_content = file.read() - result = BaseHTMLElementRecognizer.html_split_by_tags(html_content, ['cccode']) + result = BaseHTMLElementRecognizer.html_split_by_tags(html_to_element(html_content), ['cccode']) assert len(result) == 3 def test_html_split_by_tags_3(self): with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/raw_html_attr.html', 'r') as file: html_content = file.read() - - result = BaseHTMLElementRecognizer.html_split_by_tags(html_content, ['ccmath']) + result = BaseHTMLElementRecognizer.html_split_by_tags(html_to_element(html_content), ['ccmath']) assert len(result) == 2 - assert result[0][1] == '$E=MC^2$' + assert element_to_html(result[0][1]) == '$E=MC^2$' def test_html_split_by_tags_with_parent_nodes(self): """测试是否能够正确带上父节点.""" with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/with_parent_nodes.html', 'r') as file: html_content = file.read() - result_with_parent = BaseHTMLElementRecognizer.html_split_by_tags(html_content, 'cccode') + result_with_parent = BaseHTMLElementRecognizer.html_split_by_tags(html_to_element(html_content), 'cccode') assert len(result_with_parent) == 7 - assert result_with_parent[0][0] == """
                                                                                  + assert element_to_html(result_with_parent[0][0]) == """
                                                                                  这里是text 这里是span
                                                                                  """ - assert result_with_parent[2][0] == '
                                                                                  print("BBBBBB")
                                                                                  ' - assert result_with_parent[3][0] == """
                                                                                  + assert element_to_html(result_with_parent[2][0]) == '
                                                                                  print("BBBBBB")
                                                                                  ' + assert element_to_html(result_with_parent[3][0]) == """
                                                                                  这里是tail

                                                                                  这里是div text 这里是span2

                                                                                  """ - result = BaseHTMLElementRecognizer.html_split_by_tags(html_content, 'cccode') + result = BaseHTMLElementRecognizer.html_split_by_tags(html_to_element(html_content), 'cccode') assert len(result) == 7 def test_is_cctag(self): with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/iscctag.html', 'r') as file: html_content = file.read() - assert BaseHTMLElementRecognizer.is_cc_html(html_content, 'cccode') - assert BaseHTMLElementRecognizer.is_cc_html(html_content, 'ccmath') - assert BaseHTMLElementRecognizer.is_cc_html(html_content, 'ccimage') - assert not BaseHTMLElementRecognizer.is_cc_html(html_content, 'ccvideo') - assert not BaseHTMLElementRecognizer.is_cc_html(html_content, 'cctitle') - assert BaseHTMLElementRecognizer.is_cc_html(html_content, ['cccode', 'ccxxx']) + assert BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), 'cccode') + assert BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), 'ccmath') + assert BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), 'ccimage') + assert not BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), 'ccvideo') + assert not BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), 'cctitle') + assert BaseHTMLElementRecognizer.is_cc_html(html_to_element(html_content), ['cccode', 'ccxxx']) diff --git a/tests/llm_web_kit/extractor/html/recognizer/test_table.py b/tests/llm_web_kit/extractor/html/recognizer/test_table.py new file mode 100644 index 00000000..2470c060 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/test_table.py @@ -0,0 +1,197 @@ +import json +import unittest +from pathlib import Path + +from llm_web_kit.extractor.html.recognizer.recognizer import CCTag +from llm_web_kit.extractor.html.recognizer.table import TableRecognizer +from llm_web_kit.libs.html_utils import html_to_element + +TEST_CASES = [ + { + 'input': ( + 'assets/recognizer/table.html', + 'assets/recognizer/table_exclude.html', + 'assets/recognizer/only_table.html', + 'assets/recognizer/table_simple_compex.html', + 'assets/recognizer/table_to_content_list_simple.html', + 'assets/recognizer/table_to_content_list_complex.html', + 'assets/recognizer/table_include_image.html', + 'assets/recognizer/table_simple_cc.html', + 'assets/recognizer/table_include_rowspan_colspan.html', + 'assets/recognizer/table_involve_equation.html', + 'assets/recognizer/table_include_after_code.html', + 'assets/recognizer/table_involve_code.html', + 'assets/recognizer/table_involve_complex_code.html' + + ), + 'expected': [ + ('assets/recognizer/table_to_content_list_simple_res.json'), + ('assets/recognizer/table_to_content_list_complex_res.json'), + ('assets/recognizer/table_include_image_expcet.json'), + ('assets/recognizer/table_include_code_expect.json') + ], + } +] + +base_dir = Path(__file__).parent + + +class TestTableRecognizer(unittest.TestCase): + def setUp(self): + self.rec = TableRecognizer() + + def test_involve_cctale(self): + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][0]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text() + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + self.assertEqual(len(parts), 4) + + def test_not_involve_table(self): + """不包含表格.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][1]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + self.assertEqual(len(parts), 1) + + def test_only_involve_table(self): + """只包含表格的Html解析.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][2]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text() + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + self.assertEqual(len(parts), 2) + table_body = parts[1][0].text_content() + assert table_body == r'
                                                                                  Mrs S Hindle
                                                                                  ShowCCRCC
                                                                                  Driffield 5th October 2006CH. Ricksbury Royal HeroCH. Keyingham Branwell
                                                                                  Manchester 16th January 2008CH. Lochbuie GeordieMerryoth Maeve
                                                                                  Darlington 20th September 2009CH. Maibee Make BelieveCH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012CH. Loranka Sherrie BabyDear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014Brymarden Carolina SunriseCh. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014Ch. Charnell Clematis of SalegreenCH. Byermoor Queens Maid
                                                                                  ' + + def test_table_include_img_label(self): + """table是否包含img标签.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][6]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text() + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + assert len(parts) == 3 + simple_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}')[0] + simple_table_type = simple_table_tag.attrib + assert simple_table_type['table_type'] == 'simple' + + def test_cc_simple_table(self): + """cc中简单表格.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][7]) + base_url = test_case['input'][8] + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + assert len(parts) == 3 + content = parts[1][0].text_content() + assert content == r'
                                                                                  Рейтинг:Рейтинг 5.00 из 5 на основе опроса 3 пользователей
                                                                                  Тип товара:Препараты для омоложения
                                                                                  Форма:Крем
                                                                                  Объем:50 мл
                                                                                  Рецепт:Отпускается без рецепта
                                                                                  Способ хранения:Хранить при температуре 4-20°
                                                                                  Примечание:Беречь от детей
                                                                                  Оплата:Наличными/банковской картой
                                                                                  Доступность в Северске:В наличии
                                                                                  Доставка:2-7 Дней
                                                                                  Цена:84 ₽
                                                                                  ' + + def test_cc_complex_table(self): + """cc跨行跨列的表格.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][8]) + base_url = test_case['input'][8] + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + assert len(parts) == 3 + content = parts[1][0].text_content() + assert content == r'
                                                                                  ফেব্রুয়ারি ২০২৪
                                                                                  সোমমঙ্গলবুধবৃহশুক্রশনিরবি
                                                                                  « জানুয়ারি
                                                                                  ১০১১
                                                                                  ১২১৩১৪১৫১৬১৭১৮
                                                                                  ১৯২০২১২২২৩২৪২৫
                                                                                  ২৬২৭২৮২৯
                                                                                  ' + table_type = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}')[0] + assert table_type.attrib['table_type'] == 'complex' + + def test_simple_complex_table(self): + """包含简单和复杂table.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][3]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + simple_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}')[0] + simple_table_type = simple_table_tag.attrib + assert simple_table_type['table_type'] == 'simple' + assert simple_table_type == {'table_type': 'simple', 'table_nest_level': '1', 'html': '\n \n \n \n \n \n \n \n \n
                                                                                  12
                                                                                  34
                                                                                  \n\n'} + complex_table_tag = parts[2][0].xpath(f'.//{CCTag.CC_TABLE}')[0] + complex_table_type = complex_table_tag.attrib + assert complex_table_type['table_type'] == 'complex' + assert complex_table_type == {'table_type': 'complex', 'table_nest_level': '1', 'html': '\n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  123
                                                                                  4
                                                                                  567
                                                                                  \n '} + + def test_table_to_content_list_node_simple(self): + """测试table的 to content list node方法.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][4]) + base_url = test_case['input'][1] + raw_html = raw_html_path.read_text(encoding='utf-8') + parsed_content = raw_html + result = self.rec.to_content_list_node(base_url, html_to_element(parsed_content), raw_html) + expect = base_dir.joinpath(test_case['expected'][0]) + expect_json = expect.read_text(encoding='utf-8') + print(result) + assert result['type'] == json.loads(expect_json)['type'] + assert result['content']['is_complex'] == json.loads(expect_json)['content']['is_complex'] + assert result['raw_content'] == json.loads(expect_json)['raw_content'] + self.assertTrue(result['content']['html'].startswith('')) + self.assertTrue(result['content']['html'].endswith('
                                                                                  ')) + + def test_table_to_content_list_node_complex(self): + """测试table的 complex table to content list node方法.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][5]) + expect_path = base_dir.joinpath(test_case['expected'][1]) + raw_html = raw_html_path.read_text(encoding='utf-8') + result = self.rec.to_content_list_node(expect_path, html_to_element(raw_html), raw_html) + fr = open(expect_path, 'r', encoding='utf-8') + expect_result = json.loads(fr.read()) + assert result == expect_result + + def test_table_involve_equation(self): + """involve equation table,待解决嵌套问题.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][9]) + base_url = 'https://en.m.wikipedia.org/wiki/Variance' + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + complex_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}') + assert complex_table_tag[0].text == r'
                                                                                  Name of the probability distributionProbability distribution functionMeanVariance
                                                                                  Binomial distribution${\displaystyle \Pr \,(X=k)={\binom {n}{k}}p^{k}(1-p)^{n-k}}$${\displaystyle np}$${\displaystyle np(1-p)}$
                                                                                  Geometric distribution${\displaystyle \Pr \,(X=k)=(1-p)^{k-1}p}$${\displaystyle {\frac {1}{p}}}$${\displaystyle {\frac {(1-p)}{p^{2}}}}$
                                                                                  Normal distribution${\displaystyle f\left(x\mid \mu ,\sigma ^{2}\right)={\frac {1}{\sqrt {2\pi \sigma ^{2}}}}e^{-{\frac {(x-\mu )^{2}}{2\sigma ^{2}}}}}$${\displaystyle \mu }$${\displaystyle \sigma ^{2}}$
                                                                                  Uniform distribution (continuous)${\displaystyle f(x\mid a,b)={\begin{cases}{\frac {1}{b-a}}&{\text{for }}a\leq x\leq b,\\[3pt]0&{\text{for }}xb\end{cases}}}$${\displaystyle {\frac {a+b}{2}}}$${\displaystyle {\frac {(b-a)^{2}}{12}}}$
                                                                                  Exponential distribution${\displaystyle f(x\mid \lambda )=\lambda e^{-\lambda x}}$${\displaystyle {\frac {1}{\lambda }}}$${\displaystyle {\frac {1}{\lambda ^{2}}}}$
                                                                                  Poisson distribution${\displaystyle f(k\mid \lambda )={\frac {e^{-\lambda }\lambda ^{k}}{k!}}}$${\displaystyle \lambda }$${\displaystyle \lambda }$
                                                                                  ' + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + complex_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}') + assert complex_table_tag[0].text == r'
                                                                                  Name of the probability distributionProbability distribution functionMeanVariance
                                                                                  Binomial distribution${\displaystyle \Pr \,(X=k)={\binom {n}{k}}p^{k}(1-p)^{n-k}}$${\displaystyle np}$${\displaystyle np(1-p)}$
                                                                                  Geometric distribution${\displaystyle \Pr \,(X=k)=(1-p)^{k-1}p}$${\displaystyle {\frac {1}{p}}}$${\displaystyle {\frac {(1-p)}{p^{2}}}}$
                                                                                  Normal distribution${\displaystyle f\left(x\mid \mu ,\sigma ^{2}\right)={\frac {1}{\sqrt {2\pi \sigma ^{2}}}}e^{-{\frac {(x-\mu )^{2}}{2\sigma ^{2}}}}}$${\displaystyle \mu }$${\displaystyle \sigma ^{2}}$
                                                                                  Uniform distribution (continuous)${\displaystyle f(x\mid a,b)={\begin{cases}{\frac {1}{b-a}}&{\text{for }}a\leq x\leq b,\\[3pt]0&{\text{for }}xb\end{cases}}}$${\displaystyle {\frac {a+b}{2}}}$${\displaystyle {\frac {(b-a)^{2}}{12}}}$
                                                                                  Exponential distribution${\displaystyle f(x\mid \lambda )=\lambda e^{-\lambda x}}$${\displaystyle {\frac {1}{\lambda }}}$${\displaystyle {\frac {1}{\lambda ^{2}}}}$
                                                                                  Poisson distribution${\displaystyle f(k\mid \lambda )={\frac {e^{-\lambda }\lambda ^{k}}{k!}}}$${\displaystyle \lambda }$${\displaystyle \lambda }$
                                                                                  ' + + def test_table_involve_after_code(self): + """test table involve code, code被提取出去了,过滤掉空的和坏的table.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][10]) + base_url = 'https://en.m.wikipedia.org/wiki/Variance' + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + assert parts[0][0].xpath(f'.//{CCTag.CC_TABLE}')[0].text is None + + @unittest.skip(reason='在code模块解决了table嵌套多行代码问题') + def test_table_involve_code(self): + """table involve code.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][11]) + base_url = 'https://en.m.wikipedia.org/wiki/Variance' + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + complex_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}') + expect_path = base_dir.joinpath(test_case['expected'][3]) + content = open(expect_path, 'r', encoding='utf-8').read() + assert complex_table_tag[0].text == content.strip('\n') + + @unittest.skip(reason='在code模块解决了这个问题') + def test_table_involve_complex_code(self): + """table involve complex code.""" + for test_case in TEST_CASES: + raw_html_path = base_dir.joinpath(test_case['input'][12]) + base_url = 'https://en.m.wikipedia.org/wiki/Variance' + raw_html = raw_html_path.read_text(encoding='utf-8') + parts = self.rec.recognize(base_url, [(html_to_element(raw_html), html_to_element(raw_html))], raw_html) + complex_table_tag = parts[1][0].xpath(f'.//{CCTag.CC_TABLE}') + expect_path = base_dir.joinpath(test_case['expected'][3]) + content = open(expect_path, 'r', encoding='utf-8').read() + assert complex_table_tag[0].text == content.strip('\n') diff --git a/tests/llm_web_kit/extractor/html/recognizer/test_text.py b/tests/llm_web_kit/extractor/html/recognizer/test_text.py new file mode 100644 index 00000000..f38732c3 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/test_text.py @@ -0,0 +1,201 @@ +# 测试text识别器 +import os +import unittest +from pathlib import Path + +from llm_web_kit.config.cfg_reader import load_pipe_tpl +from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory +from llm_web_kit.extractor.html.recognizer.recognizer import \ + BaseHTMLElementRecognizer +from llm_web_kit.extractor.html.recognizer.text import TextParagraphRecognizer +from llm_web_kit.input.datajson import DataJson +from llm_web_kit.libs.html_utils import element_to_html, html_to_element + + +class TestTextParagraphRecognize(unittest.TestCase): + def setUp(self): + self.text_recognize = TextParagraphRecognizer() + # Config for HTML extraction + self.config = load_pipe_tpl('html-test') + + def test_text_1(self): + """ + 测试1 s3://llm-pdf-text-1/qa/quyuan/output/part-67c01310620e-000064.jsonl + Returns: + + """ + with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/text.html', 'r') as file: + html_content = file.read() + assert self.text_recognize._TextParagraphRecognizer__combine_text('知识乱象\n', + '中共中央政治局召开会议审议《成-2020年10月16日新闻联播', + 'zh') == '知识乱象\n中共中央政治局召开会议审议《成-2020年10月16日新闻联播' + result = self.text_recognize.recognize('http://www.baidu.com', [(html_to_element(html_content), html_to_element(html_content))], html_content) + assert '知识乱象\\n\\n 中共中央政治局' in element_to_html(result[908][0]) + + def test_text_2(self): + """ + 测试2 s3://llm-pdf-text-1/qa/quyuan/output/part-67c01310620e-004720.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://www.aircraftspruce.com/catalog/pnpages/AT108AR-5_32.php', + 'data_source_category': 'HTML', + 'path': 'text2.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert 'Selecting Rivet Sets:\n\n To develop maximum power' in content_md + + def test_text_3(self): + """ + 测试3 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-001066.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://www.physicsforums.com/threads/how-do-convex-mirrors-affect-image-location-and-size.240850/', + 'data_source_category': 'HTML', + 'path': 'text3.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert "1. The problem statement, all variables and given/known data\n\n A woman of height 1.7 meters stands directly in front of a convex mirror 2.0 meters away. The mirror has a radius of curvature, R=-50cm. Find the location and size of a woman's image using the ray diagram and mirror/lens equation.\n\n\n\n----------\n\n\n\n 2. The speed of light in a material is 2.50x10^8 meters per second. What is the index of refraction of the material?\n\n\n\n\n\n 2. Relevant equations\n\n\n\n\n\n\n\n 3. The attempt at a solution\n\n 1. di=22.22\n\n\n\n 2. Dont know" in content_md + + def test_text_4(self): + """ + 测试4 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-000050.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://www.physicsforums.com/threads/isnt-the-normal-acceleration-always-towards-the-center.157291/', + 'data_source_category': 'HTML', + 'path': 'text4.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert '1. The problem statement, all variables and given/known data\n\n 2. Relevant equations\n\n\n\n See attachment\n\n\n\n 3. The attempt at a solution\n\n I solved the problem' in content_md + + def test_text_5(self): + """ + 测试5 s3://llm-pdf-text-1/qa/quyuan/output/part-67c01310620e-007988.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://shopnado.com.au/product/rigo-ride-on-car-tractor-toy-kids-electric-cars-12v-battery-child-toddlers-blue/', + 'data_source_category': 'HTML', + 'path': 'text5.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert 'Please Note:\n\n 1. Charge the battery on receiving even if it will not be used soon.\n\n 2. Charge the battery EVERY MONTH if not in use for long periods to prevent over-discharging of the battery. This can cause irreparable damage to it.' in content_md + + def test_text_6(self): + """ + 测试6 s3://llm-pdf-text-1/qa/quyuan/output/part-67c01310620e-012288.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://adelanta.biz/kuplu-knigi/the-experience-of-russian-bibliography-copikova-part-2-l/', + 'data_source_category': 'HTML', + 'path': 'text6.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert '1813 года\n\n5864. Лабиринт волшебства, или удивительные приключения восточных принцев, сочинение В. Протопоповича; Москва, 1786 г. - в 8°.\n\n\n\n 5865. Лакировальщик' in content_md + + def test_text_7(self): + """ + 测试7 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-001871.jsonl + ps:badcase未保留行是因为走的cc + Returns: + + """ + with open(Path(__file__).parent.parent.parent / 'assets/extractor_chain_input/good_data/html/text7.html', 'r') as file: + html_content = file.read() + result = self.text_recognize.recognize('http://www.baidu.com', [(html_to_element(html_content), html_to_element(html_content))], html_content) + assert '1) A man takes 5 hrs and 45 mins to walk to a certain place and ride back' in element_to_html(result[51][0]) and BaseHTMLElementRecognizer.is_cc_html(result[51][0]) + + def test_text_8(self): + """ + 测试8 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-001477.jsonl + ps:badcase未保留行是因为走的cc + Returns: + + """ + with open(Path(__file__).parent.parent.parent / 'assets/extractor_chain_input/good_data/html/text8.html', 'r') as file: + html_content = file.read() + result = self.text_recognize.recognize('http://www.baidu.com', [(html_to_element(html_content), html_to_element(html_content))], html_content) + assert "40xy\' -ln(x^8) = 0\\n\\n\\n\\n Initial Condition: y(1)=31\\n\\n\\n\\n Work:" in element_to_html(result[54][0]) and BaseHTMLElementRecognizer.is_cc_html(result[54][0]) + + def test_text_9(self): + """ + 测试9 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-000073.jsonl + ps:badcase未保留行是因为走的cc + Returns: + + """ + with open(Path(__file__).parent.parent.parent / 'assets/extractor_chain_input/good_data/html/text9.html', 'r') as file: + html_content = file.read() + result = self.text_recognize.recognize('http://www.baidu.com', [(html_to_element(html_content), html_to_element(html_content))], html_content) + assert '1) Consider the formula f(x)=lim(n-->infinity)((x^n)/(1+x^n)).\\n\\n Let D={x:f(x) is an element of R}. Calculate f(x) for all x elements of D and determine where f: D-->R is continuous.\\n\\n\\n\\n 2) Let f: D-->R and suppose that f(x) greater than equal 0 for all x elements of D. Define sqrt(f)-->R by (sqrt(f))(x) = sqrt(f(x)). If f is continuous at c elements of D, prove that sqrt(f) is continuous at c.' in element_to_html(result[50][0]) and BaseHTMLElementRecognizer.is_cc_html(result[50][0]) + + def test_text_10(self): + """ + 测试10 s3://llm-pdf-text-1/qa/quyuan/mathout/part-67c05902108f-000620.jsonl + Returns: + + """ + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = { + 'track_id': 'text_md', + 'dataset_name': 'text_md', + 'url': 'https://www.physicsforums.com/threads/questions-about-parallel-worlds-by-michio-kaku-the-big-bang.612643/', + 'data_source_category': 'HTML', + 'path': 'text10.html', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'} + } + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert 'So far I have 2 sets of questions (but I\'m onlin in the 2nd chapter now\n\n![:smile:]( "Smile :smile:")\n\n)\n\n\n\n 1)\n\n In the book' in content_md diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_title.py b/tests/llm_web_kit/extractor/html/recognizer/test_title.py similarity index 58% rename from tests/llm_web_kit/pipeline/extractor/html/recognizer/test_title.py rename to tests/llm_web_kit/extractor/html/recognizer/test_title.py index 6d5e0532..8cc8eeeb 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_title.py +++ b/tests/llm_web_kit/extractor/html/recognizer/test_title.py @@ -3,8 +3,8 @@ import pytest -from llm_web_kit.pipeline.extractor.html.recognizer.title import \ - TitleRecognizer +from llm_web_kit.extractor.html.recognizer.title import TitleRecognizer +from llm_web_kit.libs.html_utils import element_to_html @pytest.fixture @@ -18,9 +18,9 @@ def test_title_recognizer(title_recognizer): result = title_recognizer.recognize('http://www.baidu.com', [(html_content, html_content)], html_content) assert len(result) == 10 - assert result[0][0] == """大模型好,大模型棒1""" - assert result[6][0] == """大模型好,大模型棒5 大模型很棒""" @@ -28,5 +28,5 @@ def test_title_tails_and_levels(title_recognizer): html_content = """

                                                                                  TEST:import *TEST

                                                                                  Tail

                                                                                  aaa

                                                                                  """ result = title_recognizer.recognize('http://www.baidu.com', [(html_content, html_content)], html_content) assert len(result) == 2 - assert result[0][0] == '
                                                                                  TEST: `import *` TEST
                                                                                  ' + assert element_to_html(result[0][0]) == '
                                                                                  TEST: `import *` TEST
                                                                                  ' pass diff --git a/tests/llm_web_kit/pipeline/extractor/html/test_ContentListStaticsPostExtractor.py b/tests/llm_web_kit/extractor/html/test_ContentListStaticsPostExtractor.py similarity index 94% rename from tests/llm_web_kit/pipeline/extractor/html/test_ContentListStaticsPostExtractor.py rename to tests/llm_web_kit/extractor/html/test_ContentListStaticsPostExtractor.py index 860c3c4e..cd7196c9 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/test_ContentListStaticsPostExtractor.py +++ b/tests/llm_web_kit/extractor/html/test_ContentListStaticsPostExtractor.py @@ -1,8 +1,8 @@ import unittest -from llm_web_kit.input.datajson import DataJson, DataJsonKey -from llm_web_kit.pipeline.extractor.html.post_extractor import \ +from llm_web_kit.extractor.html.post_extractor import \ ContentListStaticsPostExtractor +from llm_web_kit.input.datajson import DataJson, DataJsonKey class TestContentListStaticsPostExtractor(unittest.TestCase): @@ -54,7 +54,7 @@ def setUp(self): } }, { - 'type': 'table', + 'type': 'complex_table', 'raw_content': '', 'content': { 'html': '
                                                                                  12
                                                                                  ', @@ -75,5 +75,5 @@ def test_content_list_statics_post_extractor(self): self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('paragraph.text'), 2) self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('paragraph.equation-inline'), 1) self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('equation-interline'), 1) - self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('table'), 1) - self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('table.complex'), 1) + self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('complex_table'), 1) + self.assertEqual(data_json.get(DataJsonKey.METAINFO, {}).get(DataJsonKey.STATICS, {}).get('complex_table.complex'), 1) diff --git a/tests/llm_web_kit/extractor/html/test_HTMLFileFormatCleanTagsPreExtractor.py b/tests/llm_web_kit/extractor/html/test_HTMLFileFormatCleanTagsPreExtractor.py new file mode 100644 index 00000000..88fb6abf --- /dev/null +++ b/tests/llm_web_kit/extractor/html/test_HTMLFileFormatCleanTagsPreExtractor.py @@ -0,0 +1,132 @@ +import unittest + +from llm_web_kit.extractor.html.pre_extractor import \ + HTMLFileFormatCleanTagsPreExtractor +from llm_web_kit.input.datajson import DataJson + +TEST_CASES = [ + # 基本测试:保留不匹配的内容 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', + 'html': '
                                                                                  visible content
                                                                                  ', + }, + 'expected_html': '
                                                                                  visible content
                                                                                  ' + }, + + # 测试广告标签移除 - class以advert开头 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', + 'html': '

                                                                                  正常内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  正常内容

                                                                                  ' + }, + + # 测试广告标签移除 - id以advert开头 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://anysite.org/article', + 'html': '

                                                                                  正常内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  正常内容

                                                                                  ' + }, + + # 测试广告标签移除 - name以advert开头 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://blog.example.com/post', + 'html': '
                                                                                  赞助商信息

                                                                                  正常内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  正常内容

                                                                                  ' + }, + + # 测试display:none样式移除 - 带空格 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', + 'html': '
                                                                                  隐藏内容

                                                                                  可见内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  可见内容

                                                                                  ' + }, + + # 测试display:none样式移除 - 不带空格 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', + 'html': '
                                                                                  隐藏内容

                                                                                  可见内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  可见内容

                                                                                  ' + }, + + # 测试url匹配 - stackexchange.com的d-none类 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://stats.stackexchange.com/questions/11544/testing-for-stability-in-a-time-series/11750', # stackexchange.com子域名 + 'html': '隐藏内容

                                                                                  可见内容

                                                                                  ', + }, + 'expected_html': '

                                                                                  可见内容

                                                                                  ' + }, + + # 测试特定网站规则 - 非stackexchange网站不应移除d-none类 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', # 非stackexchange网站 + 'html': '这个不应该被移除

                                                                                  可见内容

                                                                                  ', + }, + 'expected_html': '这个不应该被移除

                                                                                  可见内容

                                                                                  ' + }, + + # 测试多规则组合 - 同时包含多种需要移除的元素 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://stackexchange.com/questions', + 'html': '''

                                                                                  正常内容1

                                                                                  隐藏内容

                                                                                  正常内容2

                                                                                  stackexchange隐藏内容

                                                                                  正常内容3

                                                                                  ''', + }, + 'expected_html': '''

                                                                                  正常内容1

                                                                                  正常内容2

                                                                                  正常内容3

                                                                                  ''' + }, + + # 测试保留tail文本 + { + 'input': { + 'content_list': [], + 'data_source_category': 'html', + 'url': 'https://example.com/page', + 'html': '这是tail文本

                                                                                  正常内容

                                                                                  ', + }, + 'expected_html': '这是tail文本

                                                                                  正常内容

                                                                                  ' + } +] + + +class TestHTMLFileFormatCleanTagsPreExtractor(unittest.TestCase): + def setUp(self): + self.extractor = HTMLFileFormatCleanTagsPreExtractor({}) + + def test_clean_invisible_tags(self): + for test_case in TEST_CASES: + data_json = DataJson(test_case['input']) + self.extractor.pre_extract(data_json) + self.assertEqual(data_json['html'], test_case['expected_html']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/pipeline/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py b/tests/llm_web_kit/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py similarity index 95% rename from tests/llm_web_kit/pipeline/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py rename to tests/llm_web_kit/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py index 5d8cff1c..46a55840 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py +++ b/tests/llm_web_kit/extractor/html/test_HTMLPreExtractor_RemoveFormatTable.py @@ -1,9 +1,9 @@ import unittest from pathlib import Path -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.html.pre_extractor import \ +from llm_web_kit.extractor.html.pre_extractor import \ HTMLFileFormatFilterTablePreExtractor +from llm_web_kit.input.datajson import DataJson TEST_CASES = [ { diff --git a/tests/llm_web_kit/pipeline/extractor/html/test_HTMLStripSpacePostExtractor.py b/tests/llm_web_kit/extractor/html/test_HTMLStripSpacePostExtractor.py similarity index 96% rename from tests/llm_web_kit/pipeline/extractor/html/test_HTMLStripSpacePostExtractor.py rename to tests/llm_web_kit/extractor/html/test_HTMLStripSpacePostExtractor.py index bad0d33b..52d19855 100644 --- a/tests/llm_web_kit/pipeline/extractor/html/test_HTMLStripSpacePostExtractor.py +++ b/tests/llm_web_kit/extractor/html/test_HTMLStripSpacePostExtractor.py @@ -1,8 +1,8 @@ import unittest -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.extractor.html.post_extractor import \ +from llm_web_kit.extractor.html.post_extractor import \ HTMLStripSpacePostExtractor +from llm_web_kit.input.datajson import DataJson class TestHTMLStripSpacePostExtractor(unittest.TestCase): @@ -58,7 +58,7 @@ def test_space_post_extractor(self): self.assertEqual(text_1_processed, text_1_expected) text_2_processed = processed[0][0]['content']['items'][0][0][1]['c'] - text_2_expected = 'E=mc^2 ' + text_2_expected = 'E=mc^2 ' self.assertEqual(text_2_processed, text_2_expected) text_3_processed = processed[0][0]['content']['items'][0][0][2]['c'] @@ -71,7 +71,7 @@ def test_space_post_extractor(self): self.assertEqual(text_4_processed, text_4_expected) text_5_processed = processed[0][1]['content'][1]['c'] - text_5_expected = 'E=mc^2 ' + text_5_expected = 'E=mc^2 ' self.assertEqual(text_5_processed, text_5_expected) text_6_processed = processed[0][1]['content'][2]['c'] diff --git a/tests/llm_web_kit/pipeline/test_pipeline_suit.py b/tests/llm_web_kit/extractor/test_extractor_chain.py similarity index 50% rename from tests/llm_web_kit/pipeline/test_pipeline_suit.py rename to tests/llm_web_kit/extractor/test_extractor_chain.py index 9de8d71c..6502dcfa 100644 --- a/tests/llm_web_kit/pipeline/test_pipeline_suit.py +++ b/tests/llm_web_kit/extractor/test_extractor_chain.py @@ -1,8 +1,8 @@ """ -测试pipeline_suit.py, 集成测试: +测试extractor_chain.py, 集成测试: 测试方法是: 1. 设定一个场景:从一些散落的html中提取content_list -2. 定义test_pipline_suit_html.jsonc,定义pipeline的执行顺序和模块,数据路径 +2. 定义extractor_pipe的config配置文件,定义chain的执行顺序和模块,数据路径 3. 准备一些html文件,按照零散html的输入标准组织成jsonl数据 4. 执行解析,得到content_list,并比对期望结果 @@ -16,11 +16,11 @@ from lxml import html +from llm_web_kit.config.cfg_reader import load_pipe_tpl +from llm_web_kit.extractor.extractor_chain import ExtractSimpleFactory +from llm_web_kit.extractor.html.recognizer.cc_math.common import MathType from llm_web_kit.input.datajson import DataJson from llm_web_kit.libs.doc_element_type import DocElementType, ParagraphTextType -from llm_web_kit.pipeline.extractor.html.recognizer.cc_math.common import \ - MathType -from llm_web_kit.pipeline.pipeline_suit import PipelineSuit def normalize_html(html_string:str) -> str: @@ -30,39 +30,23 @@ def normalize_html(html_string:str) -> str: return html.tostring(tree, pretty_print=True, encoding='utf-8').strip() -class TestPipelineSuitHTML(unittest.TestCase): - """Test pipeline suit with HTML data.""" +class TestExtractorChain(unittest.TestCase): + """Test extractor suit with HTML data.""" def setUp(self): """Set up test fixtures.""" self.base_path = os.path.dirname(os.path.abspath(__file__)) - self.html_data_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/html_data_input.jsonl' - ) - self.pipeline_config = os.path.join( - self.base_path, - 'assets/pipline_suit_input/html_pipeline_formatter_disable.jsonc' - ) - self.md_output_file_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/output_expected/1.md' - ) - self.txt_output_file_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/output_expected/1.txt' - ) + self.html_data_path = os.path.join(self.base_path, 'assets/extractor_chain_input/good_data/html_data_input.jsonl') + self.md_output_file_path = os.path.join(self.base_path, 'assets/extractor_chain_input/good_data/output_expected/1.md') + self.txt_output_file_path = os.path.join(self.base_path, 'assets/extractor_chain_input/good_data/output_expected/1.txt') self.main_html_output_file_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/output_expected/1.main_html.html' + self.base_path, 'assets/extractor_chain_input/good_data/output_expected/1.main_html.html' ) self.csdn_lineno_output_file_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/output_expected/csdn_lineno.md' + self.base_path, 'assets/extractor_chain_input/good_data/output_expected/csdn_lineno.md' ) self.oracle_doc_main_html_path = os.path.join( - self.base_path, - 'assets/pipline_suit_input/good_data/output_expected/oracle_doc.main_html.html' + self.base_path, 'assets/extractor_chain_input/good_data/output_expected/oracle_doc.main_html.html' ) self.md_expected_content = open(self.md_output_file_path, 'r').read() @@ -76,19 +60,22 @@ def setUp(self): for line in f: self.data_json.append(json.loads(line.strip())) - assert len(self.data_json) == 11 + assert len(self.data_json) == 24 + + # Config for HTML extraction + self.config = load_pipe_tpl('html-test') def test_html_pipeline(self): - """Test HTML pipeline with sample data.""" - # Initialize pipeline - pipeline = PipelineSuit(self.pipeline_config) - self.assertIsNotNone(pipeline) + """Test HTML extractor with sample data.""" + # Initialize extractor + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) test_data = self.data_json[0] # Create DataJson from test data input_data = DataJson(test_data) # Test extraction - result = pipeline.extract(input_data) + result = chain.extract(input_data) # Verify basic properties self.assertEqual(result.get_dataset_name(), 'test_pipeline_suit') @@ -118,13 +105,13 @@ def test_html_pipeline(self): # 然后是simple table html_content = html_content_list[4] - self.assertEqual(html_content['type'], DocElementType.TABLE) + self.assertEqual(html_content['type'], DocElementType.SIMPLE_TABLE) self.assertEqual(html_content['content']['is_complex'], False) assert html_content['content']['html'].startswith('FunctionDescriptionExample`print()`Prints a message to the console.`print("Hello, World!")``len()`Returns the length of an object.`len([1, 2, 3])``range()`Generates a sequence of numbers.`range(1, 10)`""" + + def test_table_tail_text(self): + """table的tail文本保留.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[12] + # Create DataJson from test data + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert '| ID: 975' in content_md + + def test_table_element_include_enter(self): + """table的元素中间有换行.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[13] + # Create DataJson from test data + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + assert """| عنوان فارسی | توسعه مالی و هزینه سرمایه حقوق سهامداران: شواهدی از چین | +|---|---| +| عنوان انگلیسی | Financial development and the cost of equity capital: Evidence from China | +| کلمات کلیدی : |   توسعه مالی؛ هزینه سرمایه حقوق سهامداران؛ قانون و امور مالی؛ چین | +| درسهای مرتبط | حسابداری |""" in content_md + + def test_list_empty(self): + """list抽取为空,原因是嵌套的img标签没有text.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[14] + # Create DataJson from test data + input_data = DataJson(test_data) + result = chain.extract(input_data) + list_type = result.get_content_list()._get_data()[0][0]['type'] + assert list_type != 'list' + + def test_table_include_math_p(self): + """table包含math和其他内容.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[15] + # Create DataJson from test data + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_list = result.get_content_list()._get_data() + assert len(content_list[0]) == 17 + assert content_list[0][3]['content']['html'] == r"
                                                                                  up vote 17 down vote favorite 5I'm having problems with exercises on proving whether or not a given number is prime. Is $83^{27} + 1$ prime? prime-numbers factoring
                                                                                  " + + def test_table_include_math_p_2(self): + """table包含math和其他内容.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[16] + # Create DataJson from test data + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_list = result.get_content_list()._get_data() + assert content_list[0][2]['content']['html'] == '
                                                                                  单位换算:$1 \\text{km} = 10^3 \\text{m}$
                                                                                  长度质量时间
                                                                                  $1m=10^2cm$$1kg=10^3g$$1h=3600s$
                                                                                  运动学:$v = \\frac{dx}{dt}$ $a = \\frac{dv}{dt}$
                                                                                  ' + + def test_clean_tags(self): + """测试clean_tag的preExtractor是否生效.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[17] + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_md = result.get_content_list().to_mm_md() + self.assertNotIn('begingroup', content_md) + + def test_list_nest_three(self): + """测试列表嵌套三层.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[18] + input_data = DataJson(test_data) + result = chain.extract(input_data) + result_content_list = result.get_content_list()._get_data() + assert int(result_content_list[0][0]['content']['list_nest_level']) == 3 + + def test_table_include_entity(self): + """测试table包含实体.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[19] + input_data = DataJson(test_data) + result = chain.extract(input_data) + result_md = result.get_content_list().to_mm_md() + assert '&' not in result_md + assert ' ' not in result_md + + def test_content_list_empty(self): + """测试content_list为空.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[20] + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_mmd = result.get_content_list().to_mm_md() + assert '京大平层,奶油风浪漫到家!' in content_mmd + + def test_nlp_md_exclude_node_types(self): + """测试nlp_md排除节点类型.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[21] + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_txt = result.get_content_list().to_nlp_md(exclude_nodes=[DocElementType.COMPLEX_TABLE]) + assert '' not in content_txt + assert '
                                                                                  ' not in content_txt + + def test_para_is_short(self): + """测试para识别后内容太短.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[22] + input_data = DataJson(test_data) + result = chain.extract(input_data) + content_txt = result.get_content_list().to_nlp_md() + print('content_txt', content_txt) + assert len(content_txt) == 2028 + + def test_xml_tag(self): + """测试xml标签.""" + chain = ExtractSimpleFactory.create(self.config) + self.assertIsNotNone(chain) + test_data = self.data_json[23] + input_data = DataJson(test_data) + result = chain.extract(input_data) + result_md = result.get_content_list().to_mm_md() + self.assertIn('Every child that attends a CHICKS break has a deserving story', result_md) diff --git a/tests/llm_web_kit/extractor/test_extractor_chain_normal.py b/tests/llm_web_kit/extractor/test_extractor_chain_normal.py new file mode 100644 index 00000000..2f36d6eb --- /dev/null +++ b/tests/llm_web_kit/extractor/test_extractor_chain_normal.py @@ -0,0 +1,355 @@ +import json +import os +import unittest +from unittest.mock import MagicMock, patch + +from llm_web_kit.config.cfg_reader import load_pipe_tpl +from llm_web_kit.exception.exception import (ExtractorChainBaseException, + ExtractorChainConfigException, + ExtractorChainInputException, + ExtractorInitException, + ExtractorNotFoundException, + LlmWebKitBaseException) +from llm_web_kit.extractor.extractor_chain import (ExtractorChain, + ExtractSimpleFactory) +from llm_web_kit.input.datajson import DataJson + + +class TestExtractorChainNormal(unittest.TestCase): + """Test basic ExtractorChain functionality.""" + + def setUp(self): + self.base_path = os.path.dirname(os.path.abspath(__file__)) + + # Basic HTML config + self.html_config = load_pipe_tpl('html') + + # Basic PDF config + self.pdf_config = load_pipe_tpl('pdf') + + # Basic EBOOK config + self.ebook_config = load_pipe_tpl('ebook') + + def test_factory_create(self): + """Test factory creation with different inputs.""" + # Test with dict config + chain = ExtractSimpleFactory.create(self.html_config) + self.assertIsNotNone(chain) + + # Test with config file + config_path = os.path.join(self.base_path, 'assets/test_config.jsonc') + with open(config_path, 'w') as f: + json.dump(self.html_config, f) + chain = ExtractSimpleFactory.create(config_path) + self.assertIsNotNone(chain) + os.remove(config_path) + + def test_basic_html_extraction(self): + """Test basic HTML extraction.""" + chain = ExtractSimpleFactory.create(self.html_config) + self.assertIsNotNone(chain) + + input_data = DataJson( + { + 'dataset_name': 'news', + 'data_source_category': 'html', + 'html': '

                                                                                  hello

                                                                                  ', + 'url': 'http://www.baidu.com', + } + ) + data_e: DataJson = chain.extract(input_data) + self.assertEqual(data_e.get_content_list().length(), 1) + self.assertEqual(data_e.get_dataset_name(), 'news') + self.assertEqual(data_e.get_file_format(), 'html') + + def test_basic_pdf_extraction(self): + """Test basic PDF extraction.""" + chain = ExtractSimpleFactory.create(self.pdf_config) + self.assertIsNotNone(chain) + + input_data = DataJson({'dataset_name': 'news', 'data_source_category': 'pdf'}) + data_e: DataJson = chain.extract(input_data) + self.assertEqual(data_e.get_content_list().length(), 0) + self.assertEqual(data_e.get_dataset_name(), 'news') + self.assertEqual(data_e.get_file_format(), 'pdf') + + def test_basic_ebook_extraction(self): + """Test basic EBOOK extraction.""" + chain = ExtractSimpleFactory.create(self.ebook_config) + self.assertIsNotNone(chain) + + input_data = DataJson({'dataset_name': 'news', 'data_source_category': 'ebook', 'content_list': [[], []]}) + data_e: DataJson = chain.extract(input_data) + self.assertEqual(data_e.get_content_list().length(), 2) + self.assertEqual(data_e.get_dataset_name(), 'news') + self.assertEqual(data_e.get_file_format(), 'ebook') + + def test_error_handling(self): + """Test error handling cases.""" + chain = ExtractSimpleFactory.create(self.html_config) + + # Test invalid input type + with self.assertRaises(ExtractorChainInputException): + chain.extract(DataJson({ + 'dataset_name': 'test_dataset', # 添加 dataset_name + 'data_source_category': 'html', + 'html': '

                                                                                  Test

                                                                                  ' + })) + + # Test invalid config + invalid_config = {'extractor_pipe': {'extractor': [{'enable': True, 'python_class': 'non.existent.Extractor'}]}} + with self.assertRaises(ExtractorNotFoundException): + chain = ExtractSimpleFactory.create(invalid_config) + chain.extract( + DataJson( + { + 'track_id': '214c1bec-0bc2-4627-a229-24dbfb4adb9b', + 'dataset_name': 'test_cli_sdk', + 'url': 'https://www.test.com', + 'data_source_category': 'HTML', + 'html': '

                                                                                  Test

                                                                                  This is a test content.

                                                                                  ', + 'file_bytes': 1000, + 'meta_info': {'input_datetime': '2020-01-01 00:00:00'}, + } + ) + ) + + # Test missing required fields + with self.assertRaises(ExtractorChainInputException): + chain.extract(DataJson({'data_source_category': 'html', 'dataset_name': 'test_dataset'})) + + def test_empty_config(self): + """测试空配置和禁用提取器.""" + # 测试完全空的配置 + chain = ExtractorChain({}) + self.assertEqual(len(chain._ExtractorChain__pre_extractors), 0) + self.assertEqual(len(chain._ExtractorChain__extractors), 0) + self.assertEqual(len(chain._ExtractorChain__post_extractors), 0) + + # 测试只有 extractor_pipe 但没有具体配置的情况 + chain = ExtractorChain({'extractor_pipe': {}}) + self.assertEqual(len(chain._ExtractorChain__pre_extractors), 0) + self.assertEqual(len(chain._ExtractorChain__extractors), 0) + self.assertEqual(len(chain._ExtractorChain__post_extractors), 0) + + # 测试禁用的提取器 + config = { + 'extractor_pipe': { + 'pre_extractor': [ + { + 'enable': False, + 'python_class': 'llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatFilterPreExtractor', + 'class_init_kwargs': {}, + } + ], + 'extractor': [ + { + 'enable': False, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {}, + } + ], + 'post_extractor': [ + { + 'enable': False, + 'python_class': 'llm_web_kit.extractor.html.post_extractor.HTMLFileFormatPostExtractor', + 'class_init_kwargs': {}, + } + ] + } + } + chain = ExtractorChain(config) + self.assertEqual(len(chain._ExtractorChain__pre_extractors), 0) + self.assertEqual(len(chain._ExtractorChain__extractors), 0) + self.assertEqual(len(chain._ExtractorChain__post_extractors), 0) + + def test_config_errors(self): + """测试配置错误.""" + # 测试缺少 python_class 的情况 + config = { + 'extractor_pipe': { + 'extractor': [ + { + 'enable': True, + # 缺少 python_class + 'class_init_kwargs': {}, + } + ] + } + } + with self.assertRaises(ExtractorChainConfigException) as context: + ExtractorChain(config) + self.assertIn('python_class not specified', str(context.exception)) + + @patch('llm_web_kit.libs.class_loader.load_python_class_by_name') + def test_extractor_initialization_errors(self, mock_load): + """测试提取器初始化错误.""" + # 测试导入错误 + mock_load.side_effect = ImportError('Module not found') + + config = { + 'extractor_pipe': { + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.NonExistentExtractor', + 'class_init_kwargs': {}, + } + ] + } + } + + with self.assertRaises(ExtractorChainBaseException) as context: + ExtractorChain(config) + self.assertIn('Failed to initialize extractor', str(context.exception)) + + # 重置 mock 并设置新的 side_effect + mock_load.reset_mock() + mock_load.side_effect = ValueError('Invalid configuration') + + with self.assertRaises(ExtractorInitException) as context: + ExtractorChain(config) + self.assertIn('Failed to initialize extractor', str(context.exception)) + + @patch('llm_web_kit.libs.class_loader.load_python_class_by_name') + def test_exception_handling_with_dataset_name(self, mock_load): + """测试异常处理中的 dataset_name 设置.""" + # 创建一个会抛出 KeyError 的 Mock 提取器 + mock_extractor = MagicMock() + mock_extractor.extract.side_effect = KeyError('required_field') + + # 直接设置 mock 返回值 + mock_load.return_value = mock_extractor + + config = { + 'extractor_pipe': { + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {}, + } + ] + } + } + + chain = ExtractorChain(config) + + # 测试有 dataset_name 的情况 + data = DataJson({'dataset_name': 'test_dataset'}) + with self.assertRaises(ExtractorChainInputException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + self.assertIn('Required field missing', str(context.exception)) + + def test_exception_propagation(self): + """测试不同类型异常的传播.""" + # 创建一个会抛出 LlmWebKitBaseException 的 Mock 提取器 + mock_base_error = MagicMock() + base_exception = LlmWebKitBaseException('Base error') + mock_base_error.extract.side_effect = base_exception + + # 创建一个会抛出 ExtractorChainBaseException 的 Mock 提取器 + mock_chain_error = MagicMock() + chain_exception = ExtractorChainBaseException('Chain error') + mock_chain_error.extract.side_effect = chain_exception + + # 创建一个会抛出一般异常的 Mock 提取器 + mock_general_error = MagicMock() + mock_general_error.extract.side_effect = ValueError('General error') + + # 创建一个测试用的 ExtractorChain 子类 + class TestExtractorChain(ExtractorChain): + """用于测试的 ExtractorChain 子类,使用类变量存储 mock 对象.""" + current_mock = None + + def __init__(self, config, mock_extractor): + # 先设置类变量 + TestExtractorChain.current_mock = mock_extractor + super().__init__(config) + + def _ExtractorChain__create_extractor(self, config): + return self.current_mock + + config = { + 'extractor_pipe': { + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {}, + } + ] + } + } + + # 创建包含所有必要字段的 DataJson 对象 + data = DataJson({ + 'dataset_name': 'test_dataset', + 'data_source_category': 'html', + 'html': '

                                                                                  Test

                                                                                  ', + 'url': 'https://example.com' + }) + + # 测试 LlmWebKitBaseException 传播 + chain = TestExtractorChain(config, mock_base_error) + with self.assertRaises(LlmWebKitBaseException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + self.assertIsInstance(context.exception, LlmWebKitBaseException) + self.assertIn('Base error', str(context.exception)) + + # 测试 ExtractorChainBaseException 传播 + chain = TestExtractorChain(config, mock_chain_error) + with self.assertRaises(ExtractorChainBaseException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + self.assertIsInstance(context.exception, ExtractorChainBaseException) + self.assertIn('Chain error', str(context.exception)) + + # 测试一般异常包装为 ExtractorChainBaseException + chain = TestExtractorChain(config, mock_general_error) + with self.assertRaises(ExtractorChainBaseException) as context: + chain.extract(data) + self.assertEqual(context.exception.dataset_name, 'test_dataset') + self.assertIn('Error during extraction', str(context.exception)) + self.assertIsInstance(context.exception.__cause__, ValueError) + + def test_factory_method(self): + """测试工厂方法.""" + # 测试 ExtractSimpleFactory.create 方法 + config = self.html_config + chain = ExtractSimpleFactory.create(config) + self.assertIsInstance(chain, ExtractorChain) + + # 测试空配置 + chain = ExtractSimpleFactory.create({}) + self.assertIsInstance(chain, ExtractorChain) + self.assertEqual(len(chain._ExtractorChain__pre_extractors), 0) + self.assertEqual(len(chain._ExtractorChain__extractors), 0) + self.assertEqual(len(chain._ExtractorChain__post_extractors), 0) + + @patch('llm_web_kit.libs.class_loader.load_python_class_by_name') + def test_post_extractor_exceptions(self, mock_load): + """测试后处理阶段的异常处理.""" + # 创建一个正常的提取器 + mock_extractor = MagicMock() + mock_extractor.extract = lambda data: data + + # 创建会抛出 KeyError 的后处理器 + mock_key_error_post = MagicMock() + mock_key_error_post.post_extract.side_effect = KeyError('post_required_field') + + # 创建会抛出 ExtractorChainBaseException 的后处理器 + mock_chain_error_post = MagicMock() + chain_exception = ExtractorChainBaseException('Post chain error') + mock_chain_error_post.post_extract.side_effect = chain_exception + + # 创建会抛出 LlmWebKitBaseException 的后处理器 + mock_base_error_post = MagicMock() + base_exception = LlmWebKitBaseException('Post base error') + mock_base_error_post.post_extract.side_effect = base_exception + + # 创建会抛出一般异常的后处理器 + mock_general_error_post = MagicMock() + mock_general_error_post.post_extract.side_effect = ValueError('Post general error') diff --git a/tests/llm_web_kit/input/test_datajson.py b/tests/llm_web_kit/input/test_datajson.py index db01d274..413a657a 100644 --- a/tests/llm_web_kit/input/test_datajson.py +++ b/tests/llm_web_kit/input/test_datajson.py @@ -1,6 +1,10 @@ +import copy + import pytest +from llm_web_kit.exception.exception import ExtractorChainInputException from llm_web_kit.input.datajson import ContentList, DataJson, DataJsonKey +from llm_web_kit.libs.doc_element_type import DocElementType def test_datajson_init(): @@ -96,9 +100,175 @@ def test_datajson_serialization(): def test_datajson_validation(): # Test invalid input type - with pytest.raises(ValueError): + with pytest.raises(ExtractorChainInputException): DataJson([]) # List instead of dict # Test invalid content_list type - with pytest.raises(ValueError): + with pytest.raises(ExtractorChainInputException): DataJson({DataJsonKey.CONTENT_LIST: 'invalid'}) # String instead of list + + +def test_datajson_exclude_nodes_to_nlp_md(): + data = { + DataJsonKey.DATASET_NAME: 'test_dataset', + DataJsonKey.FILE_FORMAT: 'html', + DataJsonKey.CONTENT_LIST: [[{ + 'type': 'simple_table', + 'raw_content': "
                                                                                  Title: T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors: T.J., Byrne
                                                                                  Fewer, Michael
                                                                                  Keywords: T.J. Byrne
                                                                                  Cottages
                                                                                  Poor Law Commission
                                                                                  Issue Date: 2011
                                                                                  2011
                                                                                  Description: T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI: https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items
                                                                                  T.J. Byrne Collection
                                                                                  ", + 'content': { + 'html': "
                                                                                  Title:T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors:T.J., Byrne Fewer, Michael
                                                                                  Keywords:T.J. Byrne Cottages Poor Law Commission
                                                                                  Issue Date:2011 2011
                                                                                  Description:T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI:https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items T.J. Byrne Collection
                                                                                  ", + 'is_complex': False, + 'table_nest_level': '1' + } + }]] + } + datajson = DataJson(data) + md = datajson.get_content_list().to_nlp_md(exclude_nodes=DocElementType.COMPLEX_TABLE) + assert '' not in md + + +def test_datajson_exclude_nodes_to_mmd(): + data = { + DataJsonKey.DATASET_NAME: 'test_dataset', + DataJsonKey.FILE_FORMAT: 'html', + DataJsonKey.CONTENT_LIST: [[{ + 'type': 'simple_table', + 'raw_content': "
                                                                                  Title: T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors: T.J., Byrne
                                                                                  Fewer, Michael
                                                                                  Keywords: T.J. Byrne
                                                                                  Cottages
                                                                                  Poor Law Commission
                                                                                  Issue Date: 2011
                                                                                  2011
                                                                                  Description: T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI: https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items
                                                                                  T.J. Byrne Collection
                                                                                  ", + 'content': { + 'html': "
                                                                                  Title:T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors:T.J., Byrne Fewer, Michael
                                                                                  Keywords:T.J. Byrne Cottages Poor Law Commission
                                                                                  Issue Date:2011 2011
                                                                                  Description:T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI:https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items T.J. Byrne Collection
                                                                                  ", + 'is_complex': False, + 'table_nest_level': '1' + } + }, { + 'type': 'complex_table', + 'raw_content': "
                                                                                  Title: T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors: T.J., Byrne
                                                                                  Fewer, Michael
                                                                                  Keywords: T.J. Byrne
                                                                                  Cottages
                                                                                  Poor Law Commission
                                                                                  Issue Date: 2011
                                                                                  2011
                                                                                  Description: T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI: https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items
                                                                                  T.J. Byrne Collection
                                                                                  ", + 'content': { + 'html': "
                                                                                  Title:T.J. Byrne, Slide of floor plan, Poor Law Commission cottage, 1872.
                                                                                  Authors:T.J., Byrne Fewer, Michael
                                                                                  Keywords:T.J. Byrne Cottages Poor Law Commission
                                                                                  Issue Date:2011 2011
                                                                                  Description:T.J. Byrne's slide of a one storey cottage, labelled 'Mr Barney's Plan', recommended by the Poor Law Commission, 1872.
                                                                                  URI:https://hdl.handle.net/10599/5719
                                                                                  Appears in Collections:Published Items T.J. Byrne Collection
                                                                                  ", + 'is_complex': True, + 'table_nest_level': '1' + } + }, { + 'type': 'image', + 'raw_content': "\"Curtindo", + 'content': { + 'url': 'https://naproadavida.com/wp-content/uploads/2020/11/20201024-Airbnb-SP-Consolacao_getaway_manha_Sony-1.jpg', + 'data': None, + 'alt': 'Curtindo o apartamento com piscina no centro de SP. ', + 'title': 'Curtindo o apartamento com piscina no centro de SP. ', + 'caption': None + } + }]] + } + datajson = DataJson(data) + md = datajson.get_content_list().to_mm_md(exclude_nodes=DocElementType.COMPLEX_TABLE) + assert '' not in md + assert 'Curtindo o apartamento com piscina no centro de SP.' in md + + +def test_data_json_deepcopy(): + """从一个外部dict构建datajson, 改变datajson,不改变外部dict.""" + d = {'track_id': '32266dfa-c335-45c5-896e-56f057889d28', + 'url': 'http://mathematica.stackexchange.com/users/1931/ywdr1987?tab=activity&sort=all', + 'html': '', + 'page_layout_type': 'forum', + 'domain': 'mathematica.stackexchange.com', + 'dataset_name': 'math', + 'data_source_category': 'HTML', + 'meta_info': {'warc_headers': {'WARC-IP-Address': '104.16.12.13'}}} + copied = copy.deepcopy(d) + _ = DataJson(copied) + cl = copied.get('content_list') # 不该变外部变量d + assert cl is None + + def test_datajson_to_dict_immutable(): + """测试to_dict()返回的dict修改不会影响原DataJson对象.""" + data = { + DataJsonKey.DATASET_NAME: 'test_dataset', + DataJsonKey.FILE_FORMAT: 'html', + DataJsonKey.CONTENT_LIST: [ + {'type': 'text', 'content': 'test content'} + ] + } + datajson = DataJson(data) + + # Get dict representation + dict_data = datajson.to_dict() + + # Modify the returned dict + dict_data[DataJsonKey.DATASET_NAME] = 'modified_dataset' + dict_data[DataJsonKey.CONTENT_LIST][0]['content'] = 'modified content' + + # Original DataJson should remain unchanged + assert datajson.get_dataset_name() == 'test_dataset' + assert datajson.get_content_list()._get_data()[0]['content'] == 'test content' + + # Verify the modifications only affected the dict copy + assert dict_data[DataJsonKey.DATASET_NAME] == 'modified_dataset' + assert dict_data[DataJsonKey.CONTENT_LIST][0]['content'] == 'modified content' + + +def test_data_json_to_nlp_md(): + d = { + 'track_id': '9fc6d25e-03ef-42a5-9675-7817c2b01936', + 'url': 'http://boards.fool.com/quoti-think-flegs-watching-what-he-eats-30294220.aspx?sort=username', + 'html': '', + 'content_list': [ + [ + { + 'type': 'paragraph', + 'raw_content': '
                                                                                  \n\t\t\t\tZiet u iets wat niet hoort of niet klopt?\n\t\t\t
                                                                                  ', + 'content': [ + { + 'c': 'Ziet u iets wat niet hoort of niet klopt?', + 't': 'text' + } + ] + }, + { + 'type': 'title', + 'raw_content': '

                                                                                  Openingstijden

                                                                                  ', + 'content': { + 'title_content': 'Openingstijden', + 'level': '2' + } + }, + { + 'type': 'simple_table', + 'raw_content': '
                                                                                  \n\t\t\t\tMaandag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDinsdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tWoensdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tDonderdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tVrijdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZaterdag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\tZondag\n\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  ', + 'content': { + 'html': '
                                                                                  Maandag-
                                                                                  Dinsdag-
                                                                                  Woensdag-
                                                                                  Donderdag-
                                                                                  Vrijdag-
                                                                                  Zaterdag-
                                                                                  Zondag-
                                                                                  ', + 'is_complex': False, + 'table_nest_level': '1' + } + }, + { + 'type': 'code', + 'raw_content': 'frame.open();\nframe.write(html);\nframe.close();\n', + 'inline': False, + 'content': { + 'code_content': 'frame.open();\nframe.write(html);\nframe.close();', + 'by': 'tag_pre_code' + } + } + ] + ] + } + + def test_default_exclude(): + datajson = DataJson(d) + md = datajson.get_content_list().to_nlp_md() + assert 'Ziet u iets wat niet hoort of niet klopt?' in md + assert 'Openingstijden' in md + assert 'Maandag' in md + assert 'frame.open();\nframe.write(html);\nframe.close();' in md + + def test_custom_exclude(): + datajson = DataJson(d) + md = datajson.get_content_list().to_nlp_md(exclude_nodes=[DocElementType.COMPLEX_TABLE, DocElementType.SIMPLE_TABLE]) + assert 'Ziet u iets wat niet hoort of niet klopt?' in md + assert 'Openingstijden' in md + assert 'Maandag' not in md + assert 'frame.open();\nframe.write(html);\nframe.close();' in md + + test_default_exclude() + test_custom_exclude() diff --git a/tests/llm_web_kit/libs/test_html_utils.py b/tests/llm_web_kit/libs/test_html_utils.py index 4a361f71..a62abd81 100644 --- a/tests/llm_web_kit/libs/test_html_utils.py +++ b/tests/llm_web_kit/libs/test_html_utils.py @@ -1,11 +1,11 @@ - import unittest from lxml.html import HtmlElement from llm_web_kit.libs.html_utils import (element_to_html, html_to_element, html_to_markdown_table, - replace_element, table_cells_count) + remove_element, replace_element, + table_cells_count) class TestHtmlUtils(unittest.TestCase): @@ -181,3 +181,149 @@ def test_table5(self): """ cell_count = table_cells_count(html) self.assertEqual(cell_count, 33) + + def test_html_to_element_without_xml_declaration(self): + """测试普通HTML解析(无XML声明)""" + # 普通HTML字符串 + html_simple = '

                                                                                  普通HTML

                                                                                  ' + + # 解析HTML + element = html_to_element(html_simple) + + # 验证解析结果 + self.assertIsInstance(element, HtmlElement) + self.assertEqual(element.tag, 'html') + self.assertEqual(element.find('.//p').text, '普通HTML') + + def test_html_to_element_with_complex_xml_declaration(self): + """测试带有复杂DOCTYPE和XML声明的HTML解析.""" + # 复杂HTML字符串 + complex_html = ''' + + + + 测试标题 + + +

                                                                                  复杂HTML测试

                                                                                  + +''' + + # 解析HTML + element = html_to_element(complex_html) + + # 验证解析结果 + self.assertIsInstance(element, HtmlElement) + self.assertEqual(element.find('.//title').text, '测试标题') + self.assertEqual(element.find('.//p').text, '复杂HTML测试') + + def test_html_to_element_with_malformed_xml(self): + """测试畸形XML处理.""" + # 带有不完整XML声明的HTML + malformed_html = '

                                                                                  畸形XML

                                                                                  ' + + # 解析HTML (不应抛出异常) + element = html_to_element(malformed_html) + + # 验证解析结果 (应该尽可能解析) + self.assertIsInstance(element, HtmlElement) + # self.assertEqual(element.tag, 'html') + self.assertIsNotNone(element.find('.//p')) + self.assertEqual(element.find('.//p').text, '畸形XML') + + +# 测试用例数据 +TEST_REMOVE_ELEMENT_CASES = [ + # 基本的元素删除 + { + 'input': '

                                                                                  要删除的段落

                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  ' + }, + # 删除带有tail文本的元素 + { + 'input': '

                                                                                  要删除的段落

                                                                                  这是tail文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  这是tail文本
                                                                                  ' + }, + # 删除有前置兄弟节点且带tail的元素 + { + 'input': '
                                                                                  前置元素

                                                                                  要删除的段落

                                                                                  这是tail文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  前置元素这是tail文本
                                                                                  ' + }, + # 删除没有父节点的元素(根元素) + { + 'input': '

                                                                                  根元素

                                                                                  ', + 'xpath': '.', + 'expect': '

                                                                                  根元素

                                                                                  ' # 不应该变化 + }, + # 嵌套结构中删除元素 + { + 'input': '

                                                                                  要删除的段落

                                                                                  段落后文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  段落后文本
                                                                                  ' + }, + # 删除包含子元素的元素 + { + 'input': '
                                                                                  文章开始

                                                                                  段落重点

                                                                                  文章结束
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  文章开始文章结束
                                                                                  ' + }, + # 删除带属性的元素 + { + 'input': '

                                                                                  带属性的段落

                                                                                  后续文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  后续文本
                                                                                  ' + }, + # 有多个兄弟节点的情况 + { + 'input': '
                                                                                  第一个

                                                                                  要删除的

                                                                                  中间文本最后一个
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  第一个中间文本最后一个
                                                                                  ' + }, + # 父节点已有文本且删除元素有tail的情况 + { + 'input': '
                                                                                  父节点文本

                                                                                  要删除的段落

                                                                                  tail文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  父节点文本tail文本
                                                                                  ' + }, + # 删除第一个子元素且有tail的情况 + { + 'input': '

                                                                                  第一个子元素

                                                                                  tail文本其他元素
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  tail文本其他元素
                                                                                  ' + }, + # 删除多个元素中的一个 + { + 'input': '

                                                                                  段落1

                                                                                  段落2

                                                                                  段落3

                                                                                  ', + 'xpath': './/p[2]', + 'expect': '

                                                                                  段落1

                                                                                  段落3

                                                                                  ' + }, + # 删除带有HTML实体的元素 + { + 'input': '

                                                                                  段落 带有<实体>

                                                                                  后文本
                                                                                  ', + 'xpath': './/p', + 'expect': '
                                                                                  后文本
                                                                                  ' + } +] + + +class TestRemoveElement(unittest.TestCase): + """测试remove_element函数.""" + def setUp(self): + self.test_cases = TEST_REMOVE_ELEMENT_CASES + + def test_remove_element(self): + """使用测试用例数据测试remove_element函数.""" + for case in self.test_cases: + with self.subTest(case=case): + # 解析HTML + root = html_to_element(case['input']) + # 查找要删除的元素 + element = root.xpath(case['xpath'])[0] + # 执行删除 + remove_element(element) + # 验证结果 + result = element_to_html(root) + self.assertEqual(result, case['expect']) diff --git a/tests/llm_web_kit/libs/test_standard_utils.py b/tests/llm_web_kit/libs/test_standard_utils.py index e66557e6..f2627d9f 100644 --- a/tests/llm_web_kit/libs/test_standard_utils.py +++ b/tests/llm_web_kit/libs/test_standard_utils.py @@ -48,13 +48,13 @@ def test_json_loads(input: Union[str, bytes], target_dict) -> None: '0': 'aaa', '1': 'bbb', '2': 'ccc' - }, '''{"0": "aaa", "1": "bbb", "2": "ccc"}'''), + }, '''{"0":"aaa","1":"bbb","2":"ccc"}'''), ({ 'track_id': '7c5b99d3', 'warc_record_offset': 65390694, 'warc_record_length': '16190', 'layout_id': 0 - }, '{"track_id": "7c5b99d3", "warc_record_offset": 65390694, "warc_record_length": "16190", "layout_id": 0}'), + }, '{"track_id":"7c5b99d3","warc_record_offset":65390694,"warc_record_length":"16190","layout_id":0}'), ]) def test_json_dumps(input_dict: dict, target_str) -> None: """ @@ -66,4 +66,13 @@ def test_json_dumps(input_dict: dict, target_str) -> None: Returns: None """ - assert target_str == json_dumps(input_dict) + expected_obj = json_loads(target_str) + # 比较两个对象是否相等 + for key, value in input_dict.items(): + assert expected_obj[key] == value + + # 比较json_dumps的输出是否与target_str相等 + json_str = json_dumps(input_dict) # 由于不同的python版本,json_dumps的输出可能不同,所以需要比较json_loads的输出 + obj = json_loads(json_str) + for key, value in input_dict.items(): + assert obj[key] == value diff --git a/tests/llm_web_kit/model/assets/zip_demo.zip b/tests/llm_web_kit/model/assets/zip_demo.zip new file mode 100644 index 00000000..62be3049 Binary files /dev/null and b/tests/llm_web_kit/model/assets/zip_demo.zip differ diff --git a/tests/llm_web_kit/model/basic_functiions/test_char_norm.py b/tests/llm_web_kit/model/basic_functiions/test_char_norm.py new file mode 100644 index 00000000..2eb97023 --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_char_norm.py @@ -0,0 +1,46 @@ +import os +import sys +import unittest +from unittest import TestCase + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 5) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +from llm_web_kit.model.basic_functions.char_norm import ( # noqa: E402 + ar_character_normalize, character_normalize) + + +class TestCharNorm(TestCase): + def test_character_normalize(self): + # 测试普通字符串 + self.assertEqual(character_normalize('Hello, world!'), 'Hello, world!') + # 测试包含不可见空格和控制字符的字符串 + self.assertEqual(character_normalize('Hello\u200b, world!'), 'Hello, world!') + # 测试包含私有使用区字符的字符串 + self.assertEqual(character_normalize('Hello\uE000, world!'), 'Hello, world!') + # 测试包含换行和回车的字符串 + self.assertEqual(character_normalize('Hello\r\nWorld'), 'Hello\nWorld') + # 测试包含全角空格的字符串 + self.assertEqual(character_normalize('Hello\u3000World'), 'Hello World') + # 测试只有不可见字符的字符串 + self.assertEqual(character_normalize('\u200b\u2060'), '') + + def test_ar_character_normalize(self): + # 测试包含普通阿拉伯语文本的字符串 + self.assertEqual(ar_character_normalize('مرحبا، العالم!'), 'مرحبا، العالم!') + # 测试包含阿拉伯语和特定不可见空格及控制字符的字符串 + self.assertEqual(ar_character_normalize('مرحبا\u2060، العالم!'), 'مرحبا، العالم!') + # 测试包含私有使用区字符的阿拉伯语字符串 + self.assertEqual(ar_character_normalize('مرحبا\uE000، العالم!'), 'مرحبا، العالم!') + # 测试包含换行和回车的阿拉伯语字符串 + self.assertEqual(ar_character_normalize('مرحبا\r\nالعالم'), 'مرحبا\nالعالم') + # 测试包含全角空格的阿拉伯语字符串 + self.assertEqual(ar_character_normalize('مرحبا\u3000العالم'), 'مرحبا العالم') + # 测试只有不可见字符的阿拉伯语字符串 + self.assertEqual(ar_character_normalize('\u2060\ufeff'), '') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/basic_functiions/test_character.py b/tests/llm_web_kit/model/basic_functiions/test_character.py new file mode 100644 index 00000000..978213a5 --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_character.py @@ -0,0 +1,77 @@ +import json +import os +import sys +import unittest +from unittest.mock import mock_open, patch + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 5) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +from llm_web_kit.model.basic_functions.character import ( # noqa: E402 + RES_MAP, get_all_punc_list, get_common_punc_end_list, get_common_punc_list, + get_punc_set, has_chinese_char) + + +class TestCharacter(unittest.TestCase): + def setUp(self): + RES_MAP.clear() + self.sample_data = [ + '{"punc": ".", "en_cc_top_30": true, "zh_cc_top_30": false, "en_cc_end_top_30": true, "zh_cc_end_top_30": false}', + '{"punc": ",", "en_cc_top_30": false, "zh_cc_top_30": true, "en_cc_end_top_30": false, "zh_cc_end_top_30": true}' + ] + self.sample_file_content = '\n'.join(self.sample_data) + + @patch('builtins.open', new_callable=mock_open, read_data='') + def test_get_all_punc_list_empty(self, mock_file): + result = get_all_punc_list() + self.assertEqual(result, []) + + @patch('builtins.open', new_callable=mock_open, read_data='invalid_json') + def test_get_all_punc_list_invalid_json(self, mock_file): + with self.assertRaises(json.JSONDecodeError): + get_all_punc_list() + + def test_get_all_punc_list(self): + with patch('builtins.open', mock_open(read_data=self.sample_file_content)) as mock_file: # noqa: F841 + result = get_all_punc_list() + self.assertEqual(len(result), 2) + self.assertEqual(result[0]['punc'], '.') + self.assertEqual(result[1]['punc'], ',') + + def test_get_punc_set(self): + with patch('llm_web_kit.model.basic_functions.character.get_all_punc_list', return_value=[json.loads(line.strip()) for line in self.sample_data]): + result = get_punc_set(include_keys=['en_cc_top_30']) + self.assertTrue('.' in result) + self.assertFalse(',' in result) + + result = get_punc_set(exclude_keys=['zh_cc_top_30']) + self.assertTrue('.' in result) + self.assertFalse(',' in result) + + def test_get_common_punc_list(self): + with patch('llm_web_kit.model.basic_functions.character.get_punc_set') as mocked_get_punc_set: + mocked_get_punc_set.side_effect = [ + {'.', '!'}, # English common punctuation + {',', '!'} # Chinese common punctuation + ] + result = get_common_punc_list() + self.assertEqual(set(result), {'.', '!', ',', '!'}) + + def test_get_common_punc_end_list(self): + with patch('llm_web_kit.model.basic_functions.character.get_punc_set') as mocked_get_punc_set: + mocked_get_punc_set.side_effect = [ + {'.', '!'}, # English common end punctuation + {'。', '!'} # Chinese common end punctuation + ] + result = get_common_punc_end_list() + self.assertEqual(set(result), {'.', '!', '。', '!'}) + + def test_has_chinese_char(self): + self.assertTrue(has_chinese_char('测试')) + self.assertFalse(has_chinese_char('test')) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/basic_functiions/test_features.py b/tests/llm_web_kit/model/basic_functiions/test_features.py new file mode 100644 index 00000000..c0d25f37 --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_features.py @@ -0,0 +1,232 @@ +# flake8: noqa: E402 +import math +import os +import sys +import unittest +from unittest.mock import patch + +import numpy as np + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 5) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +import llm_web_kit.model.basic_functions as bfuncs +from llm_web_kit.model.basic_functions.features import ( + content2lines, content2words, extract_formulas, + formula_complexity_features, formula_count_features, + formula_distribution_var, formula_type_ratios, get_content_len, + get_content_len_without_space, get_lines_num, stats_continue_space, + stats_entropy, stats_html_entity, stats_ngram_mini, + stats_punctuation_end_sentence, stats_stop_words, stats_unicode) + + +class TestFeatures(unittest.TestCase): + def setUp(self): + # 公共测试数据 + self.sample_text = '这是一个测试文本。\n包含两行内容!\n' + self.long_text = ' Hello 世界! \nThis is a test text.\n' * 3 + self.empty_text = '' + self.punctuation_text = '你好!这是一个测试。请问今天天气怎么样?' + self.formulas_text = r"""Consider $E=mc^2$ and Maxwell's equations: + $$\nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0}$$ + Also $\int x^2 dx$ and matrix $\mathbf{A}\mathbf{B}$ + """ + + # 测试文本长度相关函数 + def test_get_content_len(self): + self.assertEqual(get_content_len(self.sample_text), 18) + self.assertEqual(get_content_len(self.long_text), 117) + self.assertEqual(get_content_len(self.empty_text), 0) + + def test_get_content_len_without_space(self): + self.assertEqual(get_content_len_without_space('a b c'), 3) + self.assertEqual(get_content_len_without_space(' '), 0) + self.assertEqual(get_content_len_without_space('\n\t\r'), 0) + + # 测试文本行数相关函数 + def test_content2lines(self): + self.assertEqual(content2lines('line1\nline2\n\nline3'), ['line1', 'line2', 'line3']) + self.assertEqual(content2lines(self.empty_text), []) + + def test_get_lines_num(self): + self.assertEqual(get_lines_num('line1\nline2'), 2) + self.assertEqual(get_lines_num(self.empty_text), 0) + + # 测试分词相关函数 + @patch('llm_web_kit.model.basic_functions.features.jieba_lcut') + def test_content2words(self, mock_jieba): + mock_jieba.return_value = ['分词1', '分词2'] + self.assertEqual(content2words('测试分词'), ['分词1', '分词2']) + self.assertEqual(content2words('test 123', alpha=True), []) + + # 测试连续空格统计 + def test_stats_continue_space(self): + result = stats_continue_space('a b c') + self.assertEqual(result['max_continue_space_num'], 4) + result = stats_continue_space('no_space') + self.assertEqual(result['max_continue_space_num'], 0) + + # 测试信息熵 + def test_stats_entropy(self): + # 测试全相同字符 + result = stats_entropy('aaaaa') + self.assertAlmostEqual(result['entropy'], 0.0, places=4) + + # 测试均匀分布 + text = 'abcd' + p = 1 / 4 + expected = -4 * (p * math.log2(p)) + result = stats_entropy(text) + self.assertAlmostEqual(result['entropy'], expected, places=4) + + # 测试标点结尾统计 + def test_stats_punctuation_end_sentence(self): + with patch.object(bfuncs.character, 'get_common_punc_end_list') as mock_punc: + mock_punc.return_value = ['!', '。', '?'] + result = stats_punctuation_end_sentence('你好!这是一个测试。最后一句') + self.assertEqual(result['punc_end_sentence_num'], 2) + + # 测试停用词统计 + def test_stats_stop_words(self): + with patch.object(bfuncs.word, 'get_stop_word_en_zh_set') as mock_stop: + mock_stop.return_value = {'的', '是', 'a'} + text = '这是一个的测试文本的a' + result = stats_stop_words(text) + self.assertEqual(result['stop_word_num'], 4) + self.assertAlmostEqual(result['stop_word_frac'], 4 / 7, places=4) + + # 测试HTML实体统计 + def test_stats_html_entity(self): + text = '  & invalid &123' + result = stats_html_entity(text) + self.assertEqual(result['html_semi_entity_count'], 3) + + # 测试Unicode统计 + def test_stats_unicode(self): + text = 'abc' + result = stats_unicode(text) + unicode_values = [97, 98, 99] + expected_std = np.std(unicode_values) + self.assertAlmostEqual(result['std_dev_unicode_value'], expected_std, places=4) + + # 测试ngram重复度 + def test_stats_ngram_mini(self): + text = '重复 重复 重复 重复' + result = stats_ngram_mini(text) + self.assertGreater(result['dup_top_2gram'], 0.5) + + # 测试边界情况 + def test_edge_cases(self): + # 空文本测试 + self.assertEqual(stats_entropy('')['entropy'], 0) + self.assertEqual(stats_punctuation_end_sentence('')['punc_end_sentence_num'], 0) + + # 单字符测试 + result = stats_unicode('a') + self.assertTrue(math.isnan(result['mean_diff_unicode_value'])) + + # 测试 extract_formulas + def test_extract_formulas(self): + # 正常情况 + inline, block = extract_formulas(self.formulas_text) + self.assertEqual(inline, ['E=mc^2', r'\int x^2 dx', r'\mathbf{A}\mathbf{B}']) + self.assertEqual(block, [r'\nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0}']) + + # 没有公式的情况 + inline_empty, block_empty = extract_formulas('No formulas here') + self.assertEqual(inline_empty, []) + self.assertEqual(block_empty, []) + + # 转义字符测试 + # escaped_text = r"Escaped \$not formula$ and real $formula$" + # inline_esc, block_esc = extract_formulas(escaped_text) + # self.assertEqual(inline_esc, ['formula']) + + # 测试 formula_count_features + def test_formula_count_features(self): + # 正常情况 + inline = ['a', 'b'] + block = ['c'] + features = formula_count_features(inline, block) + self.assertEqual(features['inline_formula_count'], 2) + self.assertEqual(features['block_formula_count'], 1) + self.assertEqual(features['total_formula_count'], 3) + + # 空测试 + empty_features = formula_count_features([], []) + self.assertEqual(empty_features['total_formula_count'], 0) + + # 测试 formula_complexity_features + def test_formula_complexity_features(self): + # 正常情况 + inline = [r'x + y = z', r'\sqrt{a}'] + block = [r'\frac{\partial f}{\partial x}'] + features = formula_complexity_features(inline, block) + + # 验证长度计算 + lengths = [9, 8, 29] + expected_avg_len = sum(lengths) / 3 + self.assertAlmostEqual(features['average_formula_length'], expected_avg_len) + + # 验证操作符计数 + # x + y = z (+, =) + # \sqrt{a} (sqrt) + # \frac{\partial f}{\partial x} (frac, partial, partial) + operator_counts = [2, 1, 1] + expected_avg_ops = sum(operator_counts) / 3 + self.assertAlmostEqual(features['average_operator_count'], expected_avg_ops) + + # 空测试 + empty_features = formula_complexity_features([], []) + self.assertEqual(empty_features['average_formula_length'], 0) + + # 测试 formula_distribution_var + def test_formula_distribution_var(self): + # 正常情况 + lines = [ + 'No formula', + '$inline$', + 'text', + '$$block$$', + 'both $inline$ and $$block$$' + ] + variance = formula_distribution_var(lines) + expected_lines = [1, 3, 4] + expected_var = np.var(expected_lines) + self.assertAlmostEqual(variance, expected_var) + + # 没有公式的情况 + self.assertEqual(formula_distribution_var(['No formulas']), 0) + + # 单行公式 + self.assertEqual(formula_distribution_var(['$formula$']), 0) + + # 测试 formula_type_ratios + def test_formula_type_ratios(self): + inline = [ + r'\int_0^1 x dx', + r'\dot{x} = v', + r'\mathbf{v} = \dot{x}' + ] + block = [ + r'\frac{\partial f}{\partial t}', + r'\det(\mathbf{A})' + ] + features = formula_type_ratios(inline, block) + + # 积分公式:1个(inline[0]) + # 导数公式:2个(inline[1], block[0]) + # 矩阵公式:2个(inline[2], block[1]) + self.assertAlmostEqual(features['integral_formula_ratio'], 1 / 5) + self.assertAlmostEqual(features['derivative_formula_ratio'], 3 / 5) + self.assertAlmostEqual(features['matrix_formula_ratio'], 2 / 5) + + # 空测试 + empty_features = formula_type_ratios([], []) + self.assertEqual(empty_features['integral_formula_ratio'], 0) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/basic_functiions/test_format_check.py b/tests/llm_web_kit/model/basic_functiions/test_format_check.py new file mode 100644 index 00000000..2245cc46 --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_format_check.py @@ -0,0 +1,55 @@ +import unittest + +from llm_web_kit.model.basic_functions.format_check import (is_en_letter, + is_pure_en_word, + is_space) + + +# 测试类 +class TestFunctions(unittest.TestCase): + def test_is_en_letter(self): + # 正常情况:英文大小写字母 + self.assertTrue(is_en_letter('a'), "小写字母 'a' 应返回 True") + self.assertTrue(is_en_letter('z'), "小写字母 'z' 应返回 True") + self.assertTrue(is_en_letter('A'), "大写字母 'A' 应返回 True") + self.assertTrue(is_en_letter('Z'), "大写字母 'Z' 应返回 True") + + # 异常情况:非英文字母 + self.assertFalse(is_en_letter('1'), "数字 '1' 应返回 False") + self.assertFalse(is_en_letter('@'), "特殊字符 '@' 应返回 False") + self.assertFalse(is_en_letter('ä'), "非英文字符 'ä' 应返回 False") + self.assertFalse(is_en_letter('中'), "中文字符 '中' 应返回 False") + + def test_is_space(self): + # 正常情况:空格和制表符 + self.assertTrue(is_space(' '), "空格 ' ' 应返回 True") + self.assertTrue(is_space('\t'), "制表符 '\t' 应返回 True") + + # 异常情况:非空格字符 + self.assertFalse(is_space('\n'), "换行符 '\n' 应返回 False") + self.assertFalse(is_space('\r'), "回车符 '\r' 应返回 False") + self.assertFalse(is_space('a'), "字母 'a' 应返回 False") + self.assertFalse(is_space('1'), "数字 '1' 应返回 False") + + def test_is_pure_en_word(self): + # 正常情况:纯英文单词或带空格的短语 + self.assertTrue(is_pure_en_word('hello'), "'hello' 应返回 True") + self.assertTrue(is_pure_en_word('World'), "'World' 应返回 True") + self.assertTrue(is_pure_en_word('hello world'), "'hello world' 应返回 True") + self.assertTrue(is_pure_en_word('Test \t Pass'), "'Test \t Pass' 应返回 True") + self.assertTrue(is_pure_en_word(' '), "单个空格 ' ' 应返回 True") + self.assertTrue(is_pure_en_word('\t\t'), "仅制表符 '\t\t' 应返回 True") + + self.assertTrue(is_pure_en_word(''), "空字符串 '' 应返回 True 但需确认需求") + + # 异常情况:包含非英文或非空格字符 + self.assertFalse(is_pure_en_word('hello1'), "'hello1' 应返回 False") + self.assertFalse(is_pure_en_word('123'), "'123' 应返回 False") + self.assertFalse(is_pure_en_word('hello!'), "'hello!' 应返回 False") + self.assertFalse(is_pure_en_word('word#'), "'word#' 应返回 False") + self.assertFalse(is_pure_en_word('helloä'), "'helloä' 应返回 False") + self.assertFalse(is_pure_en_word('中文'), "'中文' 应返回 False") + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/basic_functiions/test_utils.py b/tests/llm_web_kit/model/basic_functiions/test_utils.py new file mode 100644 index 00000000..09a352da --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_utils.py @@ -0,0 +1,49 @@ +import math +import os +import sys +import unittest +from unittest.mock import patch + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 5) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +from llm_web_kit.model.basic_functions.utils import content2words # noqa: E402 +from llm_web_kit.model.basic_functions.utils import jieba_lcut # noqa: E402 +from llm_web_kit.model.basic_functions.utils import ( # noqa: E402 + dict_wrapper, div_zero) + + +class TestUtils(unittest.TestCase): + + def test_div_zero(self): + self.assertEqual(div_zero(10, 5), 2) + self.assertTrue(math.isnan(div_zero(0, 0))) + self.assertEqual(div_zero(10, 0), float('inf')) + self.assertNotEqual(div_zero(10, 3), 0) + + def test_dict_wrapper(self): + @dict_wrapper(['result']) + def sample_function(): + return 42 + + self.assertEqual(sample_function(), {'result': 42}) + self.assertEqual(sample_function(as_dict=False), 42) + + @patch('llm_web_kit.model.basic_functions.utils.jieba_fast.lcut') + def test_jieba_lcut(self, mock_lcut): + mock_lcut.return_value = ['hello', 'world'] + jieba_lcut.cache_clear() + self.assertEqual(jieba_lcut('hello world'), ['hello', 'world']) + mock_lcut.assert_called_with('hello world') + + def test_content2words(self): + with patch('llm_web_kit.model.basic_functions.utils.jieba_lcut') as mock_lcut: + mock_lcut.return_value = ['hello', 'world', '123', ' '] + self.assertEqual(content2words('hello world 123 '), ['hello', 'world', '123']) + self.assertEqual(content2words('hello world 123 ', alpha=True), ['hello', 'world']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/basic_functiions/test_word.py b/tests/llm_web_kit/model/basic_functiions/test_word.py new file mode 100644 index 00000000..80c9940f --- /dev/null +++ b/tests/llm_web_kit/model/basic_functiions/test_word.py @@ -0,0 +1,59 @@ +# flake8: noqa: E402 +import os +import sys +import unittest +from unittest.mock import mock_open, patch + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 5) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +from llm_web_kit.model.basic_functions.word import (RES_MAP, + build_stop_word_set, + filter_stop_word, + get_stop_word_en_zh_set) + + +class TestWord(unittest.TestCase): + def setUp(self) -> None: + RES_MAP.clear() + + def test_build_stop_word_set_zh_only(self): + # 模拟文件读取 + mock_file_content = '的\n是\n了\n' + with patch('builtins.open', mock_open(read_data=mock_file_content)): + with patch('os.path.join', return_value='dummy_path'): + stop_words = build_stop_word_set(include_zh=True, include_en=False) + self.assertIn('的', stop_words) + self.assertIn('是', stop_words) + self.assertIn('了', stop_words) + self.assertEqual(len(stop_words), 3) + + def test_build_stop_word_set_en_only(self): + stop_words = build_stop_word_set(include_zh=False, include_en=True) + self.assertIn('and', stop_words) + self.assertIn('or', stop_words) + self.assertIn('but', stop_words) + self.assertEqual(len(stop_words), 198) + + @patch('llm_web_kit.model.basic_functions.word.build_stop_word_set') + def test_get_stop_word_en_zh_set(self, mock_build): + mock_build.return_value = {'的', 'is', 'the'} + result = get_stop_word_en_zh_set() + self.assertEqual(result, {'的', 'is', 'the'}) + mock_build.assert_called_once_with(include_zh=True, include_en=True) + + def test_filter_stop_word(self): + tokens = ['hello', 'world', '的'] + stop_words = {'的', '是', '了'} + # 测试过滤功能 + filtered_tokens = filter_stop_word(tokens, stop_word_set=stop_words) + self.assertIn('hello', filtered_tokens) + self.assertIn('world', filtered_tokens) + self.assertNotIn('的', filtered_tokens) + self.assertEqual(len(filtered_tokens), 2) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/html_lib/test_remove_tags.py b/tests/llm_web_kit/model/html_lib/test_remove_tags.py index baaf1a82..68d9a975 100644 --- a/tests/llm_web_kit/model/html_lib/test_remove_tags.py +++ b/tests/llm_web_kit/model/html_lib/test_remove_tags.py @@ -30,7 +30,6 @@ def test_tag_aggregation(self): # 验证总数一致且包含关键标签 self.assertEqual(len(all_tags), len(expected)) self.assertIn('iframe', all_tags) - self.assertIn('noscript', all_tags) class TestRemoveTags(unittest.TestCase): diff --git a/tests/llm_web_kit/model/resource_utils/test_boto3_ext.py b/tests/llm_web_kit/model/resource_utils/test_boto3_ext.py index 5be52f4a..5510dec0 100644 --- a/tests/llm_web_kit/model/resource_utils/test_boto3_ext.py +++ b/tests/llm_web_kit/model/resource_utils/test_boto3_ext.py @@ -3,6 +3,7 @@ import pytest from botocore.exceptions import ClientError +from llm_web_kit.exception.exception import ModelResourceException from llm_web_kit.model.resource_utils.boto3_ext import (get_s3_client, get_s3_config, head_s3_object, @@ -19,13 +20,8 @@ def test_is_s3_path(): def test_is_s3_404_error(): not_found_error = ClientError( error_response={ - 'Error': { - 'Code': '404', - 'Message': 'Not Found' - }, - 'ResponseMetadata': { - 'HTTPStatusCode': 404 - }, + 'Error': {'Code': '404', 'Message': 'Not Found'}, + 'ResponseMetadata': {'HTTPStatusCode': 404}, }, operation_name='test', ) @@ -33,13 +29,8 @@ def test_is_s3_404_error(): not_404_error = ClientError( error_response={ - 'Error': { - 'Code': '403', - 'Message': 'Forbidden' - }, - 'ResponseMetadata': { - 'HTTPStatusCode': 403 - }, + 'Error': {'Code': '403', 'Message': 'Forbidden'}, + 'ResponseMetadata': {'HTTPStatusCode': 403}, }, operation_name='test', ) @@ -54,20 +45,28 @@ def test_split_s3_path(): @patch('llm_web_kit.model.resource_utils.boto3_ext.load_config') def test_get_s3_config(get_config_mock): - get_config_mock.return_value = {'s3': {'bucket': {'ak': 'test_ak', 'sk': 'test_sk', 'endpoint': 'test_endpoint'}}} + get_config_mock.return_value = { + 's3': { + 'bucket': {'ak': 'test_ak', 'sk': 'test_sk', 'endpoint': 'test_endpoint'} + } + } assert get_s3_config('s3://bucket/key') == { 'ak': 'test_ak', 'sk': 'test_sk', 'endpoint': 'test_endpoint', } - with pytest.raises(ValueError): + with pytest.raises(ModelResourceException): get_s3_config('s3://nonexistent_bucket/key') @patch('llm_web_kit.model.resource_utils.boto3_ext.load_config') @patch('llm_web_kit.model.resource_utils.boto3_ext.boto3.client') def test_get_s3_client(boto3_client_mock, get_config_mock): - get_config_mock.return_value = {'s3': {'bucket': {'ak': 'test_ak', 'sk': 'test_sk', 'endpoint': 'test_endpoint'}}} + get_config_mock.return_value = { + 's3': { + 'bucket': {'ak': 'test_ak', 'sk': 'test_sk', 'endpoint': 'test_endpoint'} + } + } mock_client = MagicMock() boto3_client_mock.return_value = mock_client assert get_s3_client('s3://bucket/key') == mock_client @@ -78,19 +77,18 @@ def test_get_s3_client(boto3_client_mock, get_config_mock): def test_head_s3_object(boto3_client_mock, is_s3_404_error_mock): s3_client_mock = MagicMock() boto3_client_mock.return_value = s3_client_mock - s3_client_mock.head_object.return_value = {'ResponseMetadata': {'HTTPStatusCode': 200}} + s3_client_mock.head_object.return_value = { + 'ResponseMetadata': {'HTTPStatusCode': 200} + } - assert head_s3_object(s3_client_mock, 's3://bucket/key') == {'ResponseMetadata': {'HTTPStatusCode': 200}} + assert head_s3_object(s3_client_mock, 's3://bucket/key') == { + 'ResponseMetadata': {'HTTPStatusCode': 200} + } s3_client_mock.head_object.side_effect = ClientError( error_response={ - 'Error': { - 'Code': '404', - 'Message': 'Not Found' - }, - 'ResponseMetadata': { - 'HTTPStatusCode': 404 - }, + 'Error': {'Code': '404', 'Message': 'Not Found'}, + 'ResponseMetadata': {'HTTPStatusCode': 404}, }, operation_name='test', ) diff --git a/tests/llm_web_kit/model/resource_utils/test_download_assets.py b/tests/llm_web_kit/model/resource_utils/test_download_assets.py index b5f6aae1..ecd6a39b 100644 --- a/tests/llm_web_kit/model/resource_utils/test_download_assets.py +++ b/tests/llm_web_kit/model/resource_utils/test_download_assets.py @@ -1,291 +1,195 @@ -import io +import hashlib import os import tempfile +import time import unittest -from typing import Tuple -from unittest.mock import MagicMock, patch +from unittest.mock import MagicMock, call, patch +from llm_web_kit.exception.exception import ModelResourceException from llm_web_kit.model.resource_utils.download_assets import ( HttpConnection, S3Connection, calc_file_md5, calc_file_sha256, - decide_cache_dir, download_auto_file) + download_auto_file, download_auto_file_core, download_to_temp, + verify_file_checksum) -class Test_decide_cache_dir: - - @patch('os.environ', {'WEB_KIT_CACHE_DIR': '/env/cache_dir'}) - @patch('llm_web_kit.model.resource_utils.download_assets.load_config') - def test_only_env(self, get_configMock): - get_configMock.side_effect = Exception - assert decide_cache_dir() == '/env/cache_dir' - - @patch('os.environ', {}) - @patch('llm_web_kit.model.resource_utils.download_assets.load_config') - def test_only_config(self, get_configMock): - get_configMock.return_value = {'resources': {'common': {'cache_path': '/config/cache_dir'}}} - assert decide_cache_dir() == '/config/cache_dir' - - @patch('os.environ', {}) - @patch('llm_web_kit.model.resource_utils.download_assets.load_config') - def test_default(self, get_configMock): - get_configMock.side_effect = Exception - # if no env or config, use default - assert decide_cache_dir() == os.path.expanduser('~/.llm_web_kit_cache') - - @patch('os.environ', {'WEB_KIT_CACHE_DIR': '/env/cache_dir'}) - @patch('llm_web_kit.model.resource_utils.download_assets.load_config') - def test_both(self, get_configMock): - get_configMock.return_value = {'resources': {'common': {'cache_path': '/config/cache_dir'}}} - # config is preferred - assert decide_cache_dir() == '/config/cache_dir' - - -class Test_calc_file_md5: +class TestChecksumCalculations: def test_calc_file_md5(self): - import hashlib + with tempfile.NamedTemporaryFile() as f: + test_data = b'hello world' * 100 + f.write(test_data) + f.flush() + expected = hashlib.md5(test_data).hexdigest() + assert calc_file_md5(f.name) == expected + def test_calc_file_sha256(self): with tempfile.NamedTemporaryFile() as f: - test_bytes = b'hello world' * 10000 - f.write(test_bytes) + test_data = b'hello world' * 100 + f.write(test_data) f.flush() - assert calc_file_md5(f.name) == hashlib.md5(test_bytes).hexdigest() + expected = hashlib.sha256(test_data).hexdigest() + assert calc_file_sha256(f.name) == expected -class Test_calc_file_sha256: +class TestConnections: - def test_calc_file_sha256(self): - import hashlib + @patch('requests.get') + def test_http_connection(self, mock_get): + test_data = b'test data' + mock_response = MagicMock() + mock_response.headers = {'content-length': str(len(test_data))} + mock_response.iter_content.return_value = [test_data] + mock_get.return_value = mock_response - with tempfile.NamedTemporaryFile() as f: - test_bytes = b'hello world' * 10000 - f.write(test_bytes) - f.flush() - assert calc_file_sha256(f.name) == hashlib.sha256(test_bytes).hexdigest() + conn = HttpConnection('http://example.com') + assert conn.get_size() == len(test_data) + assert next(conn.read_stream()) == test_data + del conn + mock_response.close.assert_called() + @patch('llm_web_kit.model.resource_utils.download_assets.get_s3_client') + def test_s3_connection(self, mock_client): + mock_body = MagicMock() + mock_body.read.side_effect = [b'chunk1', b'chunk2', b''] + mock_client.return_value.get_object.return_value = { + 'ContentLength': 100, + 'Body': mock_body, + } -def read_mockio_size(mock_io: io.BytesIO, size: int): - while True: - data = mock_io.read(size) - if not data: - break - yield data + conn = S3Connection('s3://bucket/key') + assert conn.get_size() == 100 + assert list(conn.read_stream()) == [b'chunk1', b'chunk2'] + del conn + mock_body.close.assert_called() -def get_mock_http_response(test_data: bytes) -> Tuple[MagicMock, int]: - mock_io = io.BytesIO(test_data) - content_length = len(test_data) - response_mock = MagicMock() - response_mock.headers = {'content-length': str(content_length)} - response_mock.iter_content.return_value = read_mockio_size(mock_io, 1024) - return response_mock, content_length +class TestDownloadCoreFunctionality(unittest.TestCase): + @patch('llm_web_kit.model.resource_utils.download_assets.CACHE_TMP_DIR', '/tmp') + @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') + def test_successful_download(self, mock_conn): + # Mock connection + download_data = b'data' + mock_instance = MagicMock() + mock_instance.read_stream.return_value = [download_data] + mock_instance.get_size.return_value = len(download_data) + mock_conn.return_value = mock_instance + + with tempfile.TemporaryDirectory() as tmpdir: + target = os.path.join(tmpdir, 'target.file') + result = download_auto_file_core('s3://bucket/key', target) + + assert result == target + assert os.path.exists(target) + + @patch('llm_web_kit.model.resource_utils.download_assets.CACHE_TMP_DIR', '/tmp') + @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') + def test_size_mismatch(self, mock_conn): + download_data = b'data' + mock_instance = MagicMock() + mock_instance.read_stream.return_value = [download_data] + mock_instance.get_size.return_value = len(download_data) + 1 -def get_mock_s3_response(test_data: bytes) -> Tuple[MagicMock, int]: - mock_io = io.BytesIO(test_data) - content_length = len(test_data) - clientMock = MagicMock() - body = MagicMock() - body.read.side_effect = read_mockio_size(mock_io, 1024) - clientMock.get_object.return_value = {'ContentLength': content_length, 'Body': body} - return clientMock, content_length + mock_conn.return_value = mock_instance + with tempfile.TemporaryDirectory() as tmpdir: + target = os.path.join(tmpdir, 'target.file') + print(target) + with self.assertRaises(ModelResourceException): + download_auto_file_core('http://example.com', target) -@patch('llm_web_kit.model.resource_utils.download_assets.get_s3_client') -@patch('llm_web_kit.model.resource_utils.download_assets.split_s3_path') -def test_S3Connection(split_s3_pathMock, get_s3_clientMock): - test_data = b'hello world' * 100 - # Mock the split_s3_path function - split_s3_pathMock.return_value = ('bucket', 'key') +class TestDownloadToTemp: - # Mock the S3 client - clientMock, content_length = get_mock_s3_response(test_data) - get_s3_clientMock.return_value = clientMock + def test_normal_download(self): + mock_conn = MagicMock() + mock_conn.read_stream.return_value = [b'chunk1', b'chunk2'] + mock_progress = MagicMock() - # Test the S3Connection class - conn = S3Connection('s3://bucket/key') - assert conn.get_size() == content_length - assert b''.join(conn.read_stream()) == test_data + with tempfile.TemporaryDirectory() as tmpdir: + temp_path = os.path.join(tmpdir, 'temp.file') + download_to_temp(mock_conn, mock_progress, temp_path) + with open(temp_path, 'rb') as f: + assert f.read() == b'chunk1chunk2' + mock_progress.update.assert_has_calls([call(6), call(6)]) -@patch('requests.get') -def test_HttpConnection(requests_get_mock): - test_data = b'hello world' * 100 - response_mock, content_length = get_mock_http_response(test_data) - requests_get_mock.return_value = response_mock + def test_empty_chunk_handling(self): + mock_conn = MagicMock() + mock_conn.read_stream.return_value = [b'', b'data', b''] + mock_progress = MagicMock() - # Test the HttpConnection class - conn = HttpConnection('http://example.com/file') - assert conn.get_size() == content_length - assert b''.join(conn.read_stream()) == test_data + with tempfile.TemporaryDirectory() as tmpdir: + temp_path = os.path.join(tmpdir, 'temp.file') + download_to_temp(mock_conn, mock_progress, temp_path) + with open(temp_path, 'rb') as f: + assert f.read() == b'data' -class TestDownloadAutoFile(unittest.TestCase): - @patch('llm_web_kit.model.resource_utils.download_assets.os.path.exists') - @patch('llm_web_kit.model.resource_utils.download_assets.calc_file_md5') - @patch('llm_web_kit.model.resource_utils.download_assets.os.remove') - @patch('llm_web_kit.model.resource_utils.download_assets.is_s3_path') - @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') - @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') - def test_file_exists_correct_md5( - self, - mock_http_conn, - mock_s3_conn, - mock_is_s3_path, - mock_os_remove, - mock_calc_file_md5, - mock_os_path_exists, - ): - # Arrange - mock_os_path_exists.return_value = True - mock_calc_file_md5.return_value = 'correct_md5' - mock_is_s3_path.return_value = False - mock_http_conn.return_value = MagicMock(get_size=MagicMock(return_value=100)) - - # Act - result = download_auto_file('http://example.com', 'target_path', md5_sum='correct_md5') - - # Assert - assert result == 'target_path' - - mock_os_path_exists.assert_called_once_with('target_path') - mock_calc_file_md5.assert_called_once_with('target_path') - mock_os_remove.assert_not_called() - mock_http_conn.assert_not_called() - mock_s3_conn.assert_not_called() - - @patch('llm_web_kit.model.resource_utils.download_assets.os.path.exists') - @patch('llm_web_kit.model.resource_utils.download_assets.calc_file_sha256') - @patch('llm_web_kit.model.resource_utils.download_assets.os.remove') - @patch('llm_web_kit.model.resource_utils.download_assets.is_s3_path') - @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') - @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') - def test_file_exists_correct_sha256( - self, - mock_http_conn, - mock_s3_conn, - mock_is_s3_path, - mock_os_remove, - mock_calc_file_sha256, - mock_os_path_exists, - ): - # Arrange - mock_os_path_exists.return_value = True - mock_calc_file_sha256.return_value = 'correct_sha256' - mock_is_s3_path.return_value = False - mock_http_conn.return_value = MagicMock(get_size=MagicMock(return_value=100)) - - # Act - result = download_auto_file('http://example.com', 'target_path', sha256_sum='correct_sha256') - - # Assert - assert result == 'target_path' - - mock_os_path_exists.assert_called_once_with('target_path') - mock_calc_file_sha256.assert_called_once_with('target_path') - mock_os_remove.assert_not_called() - mock_http_conn.assert_not_called() - mock_s3_conn.assert_not_called() +class TestVerifyChecksum(unittest.TestCase): + + def setUp(self): + self.temp_file = tempfile.NamedTemporaryFile() + self.temp_file.write(b'test data') + self.temp_file.flush() + + def tearDown(self): + self.temp_file.close() @patch('llm_web_kit.model.resource_utils.download_assets.calc_file_md5') - @patch('llm_web_kit.model.resource_utils.download_assets.os.remove') - @patch('llm_web_kit.model.resource_utils.download_assets.is_s3_path') - @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') - @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') - def test_file_exists_wrong_md5_download_http( - self, - mock_http_conn, - mock_s3_conn, - mock_is_s3_path, - mock_os_remove, - mock_calc_file_md5, - ): - # Arrange - mock_calc_file_md5.return_value = 'wrong_md5' - mock_is_s3_path.return_value = False - - with tempfile.TemporaryDirectory() as tmp_dir: - with open(os.path.join(tmp_dir, 'target_path'), 'wb') as f: - f.write(b'hello world') - response_mock, content_length = get_mock_http_response(b'hello world') - mock_http_conn.return_value = MagicMock( - get_size=MagicMock(return_value=content_length), - read_stream=MagicMock(return_value=response_mock.iter_content()), - ) - - target_path = os.path.join(tmp_dir, 'target_path') - # Act - result = download_auto_file('http://example.com', target_path, md5_sum='correct_md5') - - assert result == target_path - with open(target_path, 'rb') as f: - assert f.read() == b'hello world' + def test_valid_md5(self, mock_md5): + mock_md5.return_value = 'correct_md5' + assert verify_file_checksum(self.temp_file.name, md5_sum='correct_md5') is True @patch('llm_web_kit.model.resource_utils.download_assets.calc_file_sha256') - @patch('llm_web_kit.model.resource_utils.download_assets.os.remove') - @patch('llm_web_kit.model.resource_utils.download_assets.is_s3_path') - @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') - @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') - def test_file_exists_wrong_sha256_download_http( - self, - mock_http_conn, - mock_s3_conn, - mock_is_s3_path, - mock_os_remove, - mock_calc_file_sha256, - ): - # Arrange - mock_calc_file_sha256.return_value = 'wrong_sha256' - mock_is_s3_path.return_value = False - - with tempfile.TemporaryDirectory() as tmp_dir: - with open(os.path.join(tmp_dir, 'target_path'), 'wb') as f: - f.write(b'hello world') - response_mock, content_length = get_mock_http_response(b'hello world') - mock_http_conn.return_value = MagicMock( - get_size=MagicMock(return_value=content_length), - read_stream=MagicMock(return_value=response_mock.iter_content()), - ) - - target_path = os.path.join(tmp_dir, 'target_path') - # Act - result = download_auto_file('http://example.com', target_path, sha256_sum='correct_sha256') - - assert result == target_path - with open(target_path, 'rb') as f: - assert f.read() == b'hello world' + def test_invalid_sha256(self, mock_sha): + mock_sha.return_value = 'wrong_sha' + assert verify_file_checksum(self.temp_file.name, sha256_sum='correct_sha') is False - @patch('llm_web_kit.model.resource_utils.download_assets.calc_file_md5') - @patch('llm_web_kit.model.resource_utils.download_assets.os.remove') - @patch('llm_web_kit.model.resource_utils.download_assets.is_s3_path') - @patch('llm_web_kit.model.resource_utils.download_assets.S3Connection') - @patch('llm_web_kit.model.resource_utils.download_assets.HttpConnection') - def test_file_not_exists_download_http( - self, - mock_http_conn, - mock_s3_conn, - mock_is_s3_path, - mock_os_remove, - mock_calc_file_md5, - ): - # Arrange - mock_is_s3_path.return_value = False - - with tempfile.TemporaryDirectory() as tmp_dir: - response_mock, content_length = get_mock_http_response(b'hello world') - mock_http_conn.return_value = MagicMock( - get_size=MagicMock(return_value=content_length), - read_stream=MagicMock(return_value=response_mock.iter_content()), - ) - - target_path = os.path.join(tmp_dir, 'target_path') - # Act - result = download_auto_file('http://example.com', target_path, md5_sum='correct_md5') - - assert result == target_path - with open(target_path, 'rb') as f: - assert f.read() == b'hello world' + def test_no_such_file(self): + assert verify_file_checksum('dummy', md5_sum='a') is False + + def test_invalid_arguments(self): + with self.assertRaises(ModelResourceException): + verify_file_checksum('dummy', md5_sum='a', sha256_sum='b') + + +class TestDownloadAutoFile(unittest.TestCase): + @patch( + 'llm_web_kit.model.resource_utils.download_assets.process_and_verify_file_with_lock' + ) + @patch('llm_web_kit.model.resource_utils.download_assets.verify_file_checksum') + @patch('llm_web_kit.model.resource_utils.download_assets.download_auto_file_core') + def test_download(self, mock_download, mock_verify, mock_process): + def download_func(resource_path, target_path): + dir = os.path.dirname(target_path) + os.makedirs(dir, exist_ok=True) + with open(target_path, 'w') as f: + time.sleep(1) + f.write(resource_path) + + mock_download.side_effect = download_func + + def verify_func(target_path, md5 ,sha): + with open(target_path, 'r') as f: + return f.read() == md5 + + mock_verify.side_effect = verify_func + + def process_and_verify( + process_func, verify_func, target_path, lock_suffix, timeout + ): + process_func() + if verify_func(): + return target_path + + mock_process.side_effect = process_and_verify + with tempfile.TemporaryDirectory() as tmpdir: + resource_url = 'http://example.com/resource' + target_dir = os.path.join(tmpdir, 'target') + result = download_auto_file(resource_url, target_dir, md5_sum=resource_url) + assert result == os.path.join(tmpdir, 'target') if __name__ == '__main__': diff --git a/tests/llm_web_kit/model/resource_utils/test_process_with_lock.py b/tests/llm_web_kit/model/resource_utils/test_process_with_lock.py new file mode 100644 index 00000000..69b24db8 --- /dev/null +++ b/tests/llm_web_kit/model/resource_utils/test_process_with_lock.py @@ -0,0 +1,310 @@ +import multiprocessing +import os +import shutil +import tempfile +import time +import unittest +from functools import partial +from unittest.mock import Mock, patch + +from filelock import Timeout + +from llm_web_kit.model.resource_utils.process_with_lock import ( + get_path_mtime, process_and_verify_file_with_lock) + + +class TestGetPathMtime(unittest.TestCase): + """测试 get_path_mtime 函数.""" + + def setUp(self): + self.test_dir = 'test_dir' + self.test_file = 'test_file.txt' + os.makedirs(self.test_dir, exist_ok=True) + with open(self.test_file, 'w') as f: + f.write('test') + + def tearDown(self): + if os.path.exists(self.test_file): + os.remove(self.test_file) + if os.path.exists(self.test_dir): + shutil.rmtree(self.test_dir) + + def test_file_mtime(self): + # 测试文件路径 + expected_mtime = os.path.getmtime(self.test_file) + result = get_path_mtime(self.test_file) + self.assertEqual(result, expected_mtime) + + def test_dir_with_files(self): + # 测试包含文件的目录 + file1 = os.path.join(self.test_dir, 'file1.txt') + file2 = os.path.join(self.test_dir, 'file2.txt') + + with open(file1, 'w') as f: + f.write('test1') + time.sleep(0.1) # 确保mtime不同 + with open(file2, 'w') as f: + f.write('test2') + + latest_mtime = max(os.path.getmtime(file1), os.path.getmtime(file2)) + result = get_path_mtime(self.test_dir) + self.assertEqual(result, latest_mtime) + + def test_empty_dir(self): + # 测试空目录(预期返回0) + empty_dir = 'empty_dir' + os.makedirs(empty_dir, exist_ok=True) + try: + result = get_path_mtime(empty_dir) + self.assertEqual(result, None) # 根据当前函数逻辑返回0 + finally: + shutil.rmtree(empty_dir) + + +class TestProcessAndVerifyFileWithLock(unittest.TestCase): + """测试 process_and_verify_file_with_lock 函数.""" + + def setUp(self): + self.target_path = 'target.txt' + self.lock_path = self.target_path + '.lock' + + def tearDown(self): + if os.path.exists(self.target_path): + os.remove(self.target_path) + if os.path.exists(self.lock_path): + os.remove(self.lock_path) + + @patch('os.path.exists') + @patch('llm_web_kit.model.resource_utils.process_with_lock.try_remove') + def test_target_exists_and_valid(self, mock_remove, mock_exists): + # 目标存在且验证成功 + mock_exists.side_effect = lambda path: path == self.target_path + process_func = Mock() + verify_func = Mock(return_value=True) + + result = process_and_verify_file_with_lock( + process_func, verify_func, self.target_path + ) + + self.assertEqual(result, self.target_path) + process_func.assert_not_called() + verify_func.assert_called_once() + + @patch('os.path.exists') + @patch('llm_web_kit.model.resource_utils.process_with_lock.try_remove') + @patch('time.sleep') + def test_target_not_exists_acquire_lock_success( + self, mock_sleep, mock_remove, mock_exists + ): + # 目标不存在,成功获取锁 + mock_exists.side_effect = lambda path: False + process_func = Mock(return_value=self.target_path) + verify_func = Mock() + + result = process_and_verify_file_with_lock( + process_func, verify_func, self.target_path + ) + + process_func.assert_called_once() + self.assertEqual(result, self.target_path) + + @patch('os.path.exists') + @patch('llm_web_kit.model.resource_utils.process_with_lock.try_remove') + @patch('time.sleep') + def test_second_validation_after_lock(self, mock_sleep, mock_remove, mock_exists): + # 获取锁后二次验证成功(其他进程已完成) + mock_exists.side_effect = lambda path: { + self.lock_path: False, + self.target_path: True, + } + verify_func = Mock(return_value=True) + process_func = Mock() + + result = process_and_verify_file_with_lock( + process_func, verify_func, self.target_path + ) + + process_func.assert_not_called() + self.assertEqual(result, self.target_path) + + @patch('os.path.exists') + @patch('llm_web_kit.model.resource_utils.process_with_lock.SoftFileLock') + @patch('time.sleep') + def test_lock_timeout_retry_success(self, mock_sleep, mock_lock, mock_exists): + # 第一次获取锁超时,重试后成功 + lock_str = self.target_path + '.lock' + mock_exists.return_value = False + lock_instance = Mock() + mock_lock.return_value = lock_instance + + # 第一次acquire抛出Timeout,第二次成功 + lock_instance.acquire.side_effect = [Timeout(lock_str), None] + process_func = Mock(return_value=self.target_path) + verify_func = Mock() + + process_and_verify_file_with_lock(process_func, verify_func, self.target_path) + + self.assertEqual(lock_instance.acquire.call_count, 2) + process_func.assert_called_once() + + +class TestProcessWithLockRealFiles(unittest.TestCase): + def setUp(self): + self.temp_dir = tempfile.TemporaryDirectory() + self.target_name = 'test_target.dat' + self.lock_suffix = '.lock' + + self.target_path = os.path.join(self.temp_dir.name, self.target_name) + self.lock_path = self.target_path + self.lock_suffix + + def tearDown(self): + self.temp_dir.cleanup() + + def test_zombie_process_recovery(self): + # 准备过期文件和僵尸锁文件 + with open(self.target_path, 'w') as f: + f.write('old content') + with open(self.lock_path, 'w') as f: + f.write('lock') + + # 设置文件修改时间为超时前(60秒超时,设置为2分钟前) + old_mtime = time.time() - 59 + os.utime(self.target_path, (old_mtime, old_mtime)) + + # Mock验证函数和处理函数 + def verify_func(): + # 验证文件内容 + with open(self.target_path) as f: + content = f.read() + return content == 'new content' + + process_called = [False] # 使用list实现nonlocal效果 + + def real_process(): + # 真实写入文件 + with open(self.target_path, 'w') as f: + f.write('new content') + process_called[0] = True + return self.target_path + + # 执行测试 + result = process_and_verify_file_with_lock( + process_func=real_process, + verify_func=verify_func, + target_path=self.target_path, + lock_suffix=self.lock_suffix, + timeout=60, + ) + + # 验证结果 + self.assertTrue(os.path.exists(self.target_path)) + self.assertFalse(os.path.exists(self.lock_path)) + self.assertTrue(process_called[0]) + self.assertEqual(result, self.target_path) + + # 验证文件内容 + with open(self.target_path) as f: + content = f.read() + self.assertEqual(content, 'new content') + + +def dummy_process_func(target_path, data_content): + # 写入文件 + with open(target_path, 'w') as f: + time.sleep(1) + f.write(data_content) + return target_path + + +def dummy_verify_func(target_path, data_content): + # 验证文件内容 + try: + with open(target_path) as f: + content = f.read() + except FileNotFoundError: + return False + return content == data_content + + +class TestMultiProcessWithLock(unittest.TestCase): + + def setUp(self): + # 临时文件夹 + self.temp_dir = tempfile.TemporaryDirectory() + self.target_name = 'test_target.dat' + self.lock_suffix = '.lock' + self.data_content = 'test content' + self.target_path = os.path.join(self.temp_dir.name, self.target_name) + self.lock_path = self.target_path + self.lock_suffix + + def tearDown(self): + self.temp_dir.cleanup() + + # 开始时什么都没有,多个进程尝试拿锁,一个进程拿到锁并用1s写入一个资源文件(指定内容,verify尝试检查)。然后所有的进程都发现这个文件被写入,成功返回。资源文件存在,并且锁文件被删掉 + def test_multi_process_with_lock(self): + process_func = partial(dummy_process_func, self.target_path, self.data_content) + verify_func = partial(dummy_verify_func, self.target_path, self.data_content) + + # 多进程同时执行 + # 构建多个进程 然后同时执行 + pool = multiprocessing.Pool(16) + process = partial( + process_and_verify_file_with_lock, + process_func, + verify_func, + self.target_path, + self.lock_suffix, + ) + results = pool.map(process, [60] * 32) + pool.close() + # 检查文件是否存在 + self.assertTrue(os.path.exists(self.target_path)) + self.assertFalse(os.path.exists(self.lock_path)) + # 检查结果 + for result in results: + self.assertEqual(result, self.target_path) + # 检查文件内容 + with open(self.target_path) as f: + content = f.read() + self.assertEqual(content, self.data_content) + + # 开始时有个文件,这个文件mtime比较早,且有个锁文件(模拟之前下载失败了)。然后同样多进程尝试执行,有某个进程尝试删掉这个文件和锁文件,然后还原为场景1,最终大家成功返回。 + def test_multi_process_with_zombie_files(self): + # 准备过期文件和僵尸锁文件 + with open(self.target_path, 'w') as f: + f.write('old content') + with open(self.lock_path, 'w') as f: + f.write('lock') + + # 设置文件修改时间为超时前(60秒超时,设置为2分钟前) + old_mtime = time.time() - 59 + os.utime(self.target_path, (old_mtime, old_mtime)) + + process_func = partial(dummy_process_func, self.target_path, self.data_content) + verify_func = partial(dummy_verify_func, self.target_path, self.data_content) + + # 多进程同时执行 + pool = multiprocessing.Pool(16) + process = partial( + process_and_verify_file_with_lock, + process_func, + verify_func, + self.target_path, + self.lock_suffix, + ) + results = pool.map(process, [60] * 32) + pool.close() + # 检查文件是否存在 + self.assertTrue(os.path.exists(self.target_path)) + self.assertFalse(os.path.exists(self.lock_path)) + # 检查结果 + for result in results: + self.assertEqual(result, self.target_path) + # 检查文件内容 + with open(self.target_path) as f: + content = f.read() + self.assertEqual(content, self.data_content) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/resource_utils/test_resource_utils.py b/tests/llm_web_kit/model/resource_utils/test_resource_utils.py new file mode 100644 index 00000000..0206e631 --- /dev/null +++ b/tests/llm_web_kit/model/resource_utils/test_resource_utils.py @@ -0,0 +1,59 @@ +import os +from unittest.mock import patch + +from llm_web_kit.model.resource_utils.utils import decide_cache_dir, try_remove + + +class Test_try_remove: + + @patch('os.remove') + def test_remove(self, removeMock): + try_remove('path') + removeMock.assert_called_once_with('path') + + @patch('os.remove') + def test_remove_exception(self, removeMock): + removeMock.side_effect = Exception + try_remove('path') + removeMock.assert_called_once_with('path') + + +class TestDecideCacheDir: + + @patch('os.environ', {'WEB_KIT_CACHE_DIR': '/env/cache_dir'}) + @patch('llm_web_kit.model.resource_utils.utils.load_config') + def test_only_env(self, get_config_mock): + get_config_mock.side_effect = Exception + cache_dir, cache_tmp_dir = decide_cache_dir() + assert cache_dir == '/env/cache_dir' + assert cache_tmp_dir == '/env/cache_dir/tmp' + + @patch('os.environ', {}) + @patch('llm_web_kit.model.resource_utils.utils.load_config') + def test_only_config(self, get_config_mock): + get_config_mock.return_value = { + 'resources': {'common': {'cache_path': '/config/cache_dir'}} + } + + cache_dir, cache_tmp_dir = decide_cache_dir() + assert cache_dir == '/config/cache_dir' + assert cache_tmp_dir == '/config/cache_dir/tmp' + + @patch('os.environ', {}) + @patch('llm_web_kit.model.resource_utils.utils.load_config') + def test_default(self, get_config_mock): + get_config_mock.side_effect = Exception + env_result = os.path.expanduser('~/.llm_web_kit_cache') + cache_dir, cache_tmp_dir = decide_cache_dir() + assert cache_dir == env_result + assert cache_tmp_dir == f'{env_result}/tmp' + + @patch('os.environ', {'WEB_KIT_CACHE_DIR': '/env/cache_dir'}) + @patch('llm_web_kit.model.resource_utils.utils.load_config') + def test_priority(self, get_config_mock): + get_config_mock.return_value = { + 'resources': {'common': {'cache_path': '/config/cache_dir'}} + } + cache_dir, cache_tmp_dir = decide_cache_dir() + assert cache_dir == '/config/cache_dir' + assert cache_tmp_dir == '/config/cache_dir/tmp' diff --git a/tests/llm_web_kit/model/resource_utils/test_singleton_resource_manager.py b/tests/llm_web_kit/model/resource_utils/test_singleton_resource_manager.py index 8e345495..22a9282f 100644 --- a/tests/llm_web_kit/model/resource_utils/test_singleton_resource_manager.py +++ b/tests/llm_web_kit/model/resource_utils/test_singleton_resource_manager.py @@ -1,5 +1,6 @@ import pytest +from llm_web_kit.exception.exception import ModelResourceException from llm_web_kit.model.resource_utils.singleton_resource_manager import \ SingletonResourceManager @@ -27,15 +28,15 @@ def test_set_resource(self): assert self.manager.get_resource('test') == 'resource' # "test" should not be set again - with pytest.raises(AssertionError): + with pytest.raises(ModelResourceException): self.manager.set_resource('test', 'resource') # name should be a string - with pytest.raises(TypeError): + with pytest.raises(ModelResourceException): self.manager.set_resource(1, 'resource') # resource should not be None - with pytest.raises(TypeError): + with pytest.raises(ModelResourceException): self.manager.set_resource(None, 'resource') def test_get_resource(self): @@ -43,7 +44,7 @@ def test_get_resource(self): # "test" should exist after setting and the resource should be "resource" assert self.manager.get_resource('test') == 'resource' # Exception should be raised if the resource does not exist - with pytest.raises(Exception): + with pytest.raises(ModelResourceException): self.manager.get_resource('test1') def test_release_resource(self): @@ -52,7 +53,7 @@ def test_release_resource(self): # "test" should not exist after releasing assert not self.manager.has_name('test') # Exception should be raised if the resource does not exist - with pytest.raises(Exception): + with pytest.raises(ModelResourceException): self.manager.get_resource('test') # Should not raise exception if the resource does not exist self.manager.release_resource('test') diff --git a/tests/llm_web_kit/model/resource_utils/test_unzip_ext.py b/tests/llm_web_kit/model/resource_utils/test_unzip_ext.py index 3a024e39..c7194ba5 100644 --- a/tests/llm_web_kit/model/resource_utils/test_unzip_ext.py +++ b/tests/llm_web_kit/model/resource_utils/test_unzip_ext.py @@ -1,40 +1,157 @@ import os import tempfile import zipfile +from unittest import TestCase +from unittest.mock import patch -from llm_web_kit.model.resource_utils.unzip_ext import (get_unzip_dir, - unzip_local_file) - - -def test_get_unzip_dir(): - assert get_unzip_dir('/path/to/test.zip') == '/path/to/test_unzip' - assert get_unzip_dir('/path/to/test') == '/path/to/test_unzip' - - -def test_unzip_local_file(): - # creat a temp dir to test - with tempfile.TemporaryDirectory() as temp_dir1, tempfile.TemporaryDirectory() as temp_dir2: - # test unzip a zip file with 2 txt files - zip_path = os.path.join(temp_dir1, 'test.zip') - target_dir = os.path.join(temp_dir2, 'target') - # zip 2 txt files - with zipfile.ZipFile(zip_path, 'w') as zipf: - zipf.writestr('test1.txt', 'This is a test file') - zipf.writestr('test2.txt', 'This is another test file') - - unzip_local_file(zip_path, target_dir) - with open(os.path.join(target_dir, 'test1.txt')) as f: - assert f.read() == 'This is a test file' - with open(os.path.join(target_dir, 'test2.txt')) as f: - assert f.read() == 'This is another test file' - - unzip_local_file(zip_path, target_dir, exist_ok=True) - with open(os.path.join(target_dir, 'test1.txt')) as f: - assert f.read() == 'This is a test file' - with open(os.path.join(target_dir, 'test2.txt')) as f: - assert f.read() == 'This is another test file' - - try: - unzip_local_file(zip_path, target_dir, exist_ok=False) - except Exception as e: - assert str(e) == f'Target directory {target_dir} already exists' +from llm_web_kit.exception.exception import ModelResourceException +from llm_web_kit.model.resource_utils.unzip_ext import (check_zip_path, + get_unzip_dir, + unzip_local_file, + unzip_local_file_core) + + +class TestGetUnzipDir(TestCase): + def test_get_unzip_dir_with_zip_extension(self): + self.assertEqual( + get_unzip_dir('/path/to/test.zip'), + '/path/to/test_unzip', + ) + + def test_get_unzip_dir_without_zip_extension(self): + self.assertEqual( + get_unzip_dir('/path/to/test'), + '/path/to/test_unzip', + ) + + +class TestCheckZipPath(TestCase): + def setUp(self): + self.temp_dir = tempfile.TemporaryDirectory() + self.zip_path = os.path.join(self.temp_dir.name, 'test.zip') + self.target_dir = os.path.join(self.temp_dir.name, 'target') + os.makedirs(self.target_dir, exist_ok=True) + + def tearDown(self): + self.temp_dir.cleanup() + + def test_check_valid_zip(self): + # Create valid zip with test file + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + # Properly extract files + with zipfile.ZipFile(self.zip_path, 'r') as zip_ref: + zip_ref.extractall(self.target_dir) + + self.assertTrue(check_zip_path(self.zip_path, self.target_dir)) + + def test_check_missing_file(self): + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + # Extract and then delete file + with zipfile.ZipFile(self.zip_path, 'r') as zip_ref: + zip_ref.extractall(self.target_dir) + os.remove(os.path.join(self.target_dir, 'file.txt')) + + self.assertFalse(check_zip_path(self.zip_path, self.target_dir)) + + def test_check_corrupted_file_size(self): + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'original content') + # Modify extracted file + with zipfile.ZipFile(self.zip_path, 'r') as zip_ref: + zip_ref.extractall(self.target_dir) + with open(os.path.join(self.target_dir, 'file.txt'), 'w') as f: + f.write('modified') + + self.assertFalse(check_zip_path(self.zip_path, self.target_dir)) + + def test_password_protected_zip(self): + password = 'secret' + # Create encrypted zip + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + zipf.setpassword(password.encode()) + # Extract with correct password + with zipfile.ZipFile(self.zip_path, 'r') as zip_ref: + zip_ref.setpassword(password.encode()) + zip_ref.extractall(self.target_dir) + + self.assertTrue( + check_zip_path(self.zip_path, self.target_dir, password=password) + ) + + +class TestUnzipLocalFileCore(TestCase): + def setUp(self): + self.temp_dir = tempfile.TemporaryDirectory() + self.zip_path = os.path.join(self.temp_dir.name, 'test.zip') + self.target_dir = os.path.join(self.temp_dir.name, 'target') + + def tearDown(self): + self.temp_dir.cleanup() + + def test_nonexistent_zip_file(self): + with self.assertRaises(ModelResourceException) as cm: + unzip_local_file_core('invalid.zip', self.target_dir) + self.assertIn('does not exist', str(cm.exception)) + + def test_target_directory_conflict(self): + # Create target directory first + os.makedirs(self.target_dir) + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + + with self.assertRaises(ModelResourceException) as cm: + unzip_local_file_core(self.zip_path, self.target_dir) + self.assertIn('already exists', str(cm.exception)) + + @patch('llm_web_kit.model.resource_utils.unzip_ext.CACHE_TMP_DIR', '/tmp') + def test_successful_extraction(self): + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + + result = unzip_local_file_core(self.zip_path, self.target_dir) + self.assertEqual(result, self.target_dir) + self.assertTrue(os.path.exists(os.path.join(self.target_dir, 'file.txt'))) + + @patch('llm_web_kit.model.resource_utils.unzip_ext.CACHE_TMP_DIR', '/tmp') + def test_password_protected_extraction(self): + password = 'secret' + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + zipf.setpassword(password.encode()) + + unzip_local_file_core(self.zip_path, self.target_dir, password=password) + self.assertTrue(os.path.exists(os.path.join(self.target_dir, 'file.txt'))) + + +class TestUnzipLocalFile(TestCase): + + def setUp(self): + self.temp_dir = tempfile.TemporaryDirectory() + self.zip_path = os.path.join(self.temp_dir.name, 'test.zip') + self.target_dir = os.path.join(self.temp_dir.name, 'target') + with zipfile.ZipFile(self.zip_path, 'w') as zipf: + zipf.writestr('file.txt', 'content') + + def tearDown(self): + self.temp_dir.cleanup() + + @patch('llm_web_kit.model.resource_utils.unzip_ext.CACHE_TMP_DIR', '/tmp') + @patch( + 'llm_web_kit.model.resource_utils.unzip_ext.process_and_verify_file_with_lock' + ) + def test_unzip(self, mock_process): + + def process_and_verify( + process_func, verify_func, target_path, lock_suffix, timeout + ): + process_func() + if verify_func(): + return target_path + + mock_process.side_effect = process_and_verify + result = unzip_local_file(self.zip_path, self.target_dir) + self.assertEqual(result, self.target_dir) + self.assertTrue(os.path.exists(os.path.join(self.target_dir, 'file.txt'))) diff --git a/tests/llm_web_kit/model/test_clean_module.py b/tests/llm_web_kit/model/test_clean_module.py new file mode 100644 index 00000000..b40936a0 --- /dev/null +++ b/tests/llm_web_kit/model/test_clean_module.py @@ -0,0 +1,127 @@ +import unittest +from unittest import TestCase +from unittest.mock import patch + +# 需要根据实际模块路径调整 +from llm_web_kit.model.clean_module import (CleanModule, CleanModuleDataPack, + ContentStyle, check_type) +from llm_web_kit.model.quality_model import QualityFilter + + +class TestCheckType(TestCase): + def test_type_checking(self): + """测试类型检查工具函数.""" + # 测试类型匹配的情况 + try: + check_type('test', 'string', str) + except TypeError: + self.fail('Valid type check failed') + + # 测试类型不匹配的情况 + with self.assertRaises(TypeError) as cm: + check_type('test', 123, str) + + expected_error = ( + "The type of test should be , but got " + ) + self.assertEqual(str(cm.exception), expected_error) + + +class TestCleanModuleDataPack(TestCase): + def test_init_type_checks(self): + """测试初始化时的类型检查.""" + valid_args = { + 'content_str': 'test', + 'language': 'en', + 'language_details': 'details', + 'content_style': ContentStyle.ARTICLE, + } + + # 测试所有参数的正确类型 + try: + CleanModuleDataPack(**valid_args) + except TypeError: + self.fail('Type check failed for valid types') + + # 逐个测试每个参数的类型错误 + for param in valid_args: + invalid_args = valid_args.copy() + invalid_args[param] = 123 # 故意设置错误类型 + with self.assertRaises(TypeError): + CleanModuleDataPack(**invalid_args) + + def test_set_process_result(self): + """测试设置处理结果的功能.""" + data_pack = CleanModuleDataPack('test', 'en', 'details', ContentStyle.ARTICLE) + + # 测试正确类型 + data_pack.set_process_result(False, {'key': 'value'}) + self.assertFalse(data_pack.clean_remained) + self.assertEqual(data_pack.clean_infos, {'key': 'value'}) + + # 测试错误类型 + with self.assertRaises(TypeError): + data_pack.set_process_result('not_bool', {'key': 'value'}) + + with self.assertRaises(TypeError): + data_pack.set_process_result(False, 'not_dict') + + def test_get_output(self): + """测试输出字典的生成.""" + data_pack = CleanModuleDataPack('test', 'en', 'details', ContentStyle.ARTICLE) + data_pack.set_process_result(False, {'info': 'test'}) + + expected_output = {'clean_remained': False, 'clean_infos': {'info': 'test'}} + self.assertDictEqual(data_pack.get_output(), expected_output) + + +class TestCleanModule(TestCase): + @patch.object(QualityFilter, 'filter') + def test_process_core(self, mock_filter): + """测试核心处理流程.""" + # 设置模拟返回值 + mock_filter.return_value = (False, {'reason': 'test'}) + + # 初始化测试对象 + clean_module = CleanModule(prod=True) + data_pack = CleanModuleDataPack('test', 'en', 'details', ContentStyle.ARTICLE) + + # 执行核心处理 + result = clean_module.process_core(data_pack) + + # 验证过滤方法被正确调用 + mock_filter.assert_called_once_with('test', 'en', 'details', ContentStyle.ARTICLE.value) + # 验证处理结果设置正确 + self.assertFalse(result.clean_remained) + self.assertEqual(result.clean_infos, {'reason': 'test'}) + + @patch.object(QualityFilter, 'filter') + def test_process_flow(self, mock_filter): + """测试完整处理流程.""" + mock_filter.return_value = (True, {'quality': 0.95}) + + clean_module = CleanModule(prod=False) + result = clean_module.process( + content_str='content', + language='en', + language_details='details', + content_style=ContentStyle.ARTICLE, + ) + + expected_result = {'clean_remained': True, 'clean_infos': {'quality': 0.95}} + self.assertDictEqual(result, expected_result) + + def test_production_mode_effect(self): + """测试生产模式的影响.""" + # 根据实际业务逻辑补充测试 + # 当前代码中prod参数未实际使用,需要根据具体实现调整 + pass + + def test_get_version(self): + """测试版本获取.""" + clean_module = CleanModule(prod=True) + self.assertEqual(clean_module.get_version(), '1.0.0') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_domain_safety_detector.py b/tests/llm_web_kit/model/test_domain_safety_detector.py new file mode 100644 index 00000000..d716dddb --- /dev/null +++ b/tests/llm_web_kit/model/test_domain_safety_detector.py @@ -0,0 +1,24 @@ +import unittest + +from llm_web_kit.model.domain_safety_detector import DomainFilter + + +class TestDomainFilter(unittest.TestCase): + def setUp(self): + self.filter = DomainFilter() + + # 测试基础过滤逻辑 + def test_filter_basic_case(self): + result = self.filter.filter( + content_str='Valid content', + language='en', + url='https://example.com', + language_details='formal', + content_style='professional' + ) + self.assertTrue(result[0]) # 预期允许通过 + self.assertEqual(result[1], {}) # 预期无附加信息 + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_lang_id.py b/tests/llm_web_kit/model/test_lang_id.py index 4542c9dd..5e1a3023 100644 --- a/tests/llm_web_kit/model/test_lang_id.py +++ b/tests/llm_web_kit/model/test_lang_id.py @@ -2,8 +2,6 @@ from unittest.mock import MagicMock, patch from llm_web_kit.model.lang_id import (LanguageIdentification, - decide_lang_by_str, - decide_lang_by_str_v218, decide_language_by_prob_v176, decide_language_func, detect_code_block, detect_inline_equation, @@ -126,25 +124,27 @@ def test_decide_language_func(): lang_detect = MagicMock() lang_detect.version = '176.bin' lang_detect.predict.return_value = (['__label__en', '__label__zh'], [0.6, 0.4]) - assert decide_language_func('test text', lang_detect) == 'en' + result = decide_language_func('test text', lang_detect) + assert result == {'language': 'en', 'language_details': 'not_defined'} + # Test for 218.bin version + lang_detect.version = '218.bin' + lang_detect.predict.return_value = (['__label__eng_Latn', '__label__zho_Hans'], [0.6, 0.4]) + result = decide_language_func('test text', lang_detect) + assert result == {'language': 'en', 'language_details': 'eng_Latn'} -def test_decide_lang_by_str(): - with patch('llm_web_kit.model.lang_id.get_singleton_lang_detect') as mock_get_singleton_lang_detect, patch( - 'llm_web_kit.model.lang_id.decide_language_func') as mock_decide_language_func: - mock_get_singleton_lang_detect.return_value = MagicMock() - mock_decide_language_func.return_value = 'en' - assert decide_lang_by_str('test text') == 'en' + # Test for empty string + result = decide_language_func('', lang_detect) + assert result == {'language': 'empty', 'language_details': 'empty'} def test_update_language_by_str(): - # 模拟 decide_lang_by_str 和 decide_lang_by_str_v218 的行为 - with patch('llm_web_kit.model.lang_id.decide_lang_by_str') as mock_decide_lang_by_str, \ - patch('llm_web_kit.model.lang_id.decide_lang_by_str_v218') as mock_decide_lang_by_str_v218: + with patch('llm_web_kit.model.lang_id.get_singleton_lang_detect') as mock_get_singleton_lang_detect, \ + patch('llm_web_kit.model.lang_id.decide_language_func') as mock_decide_language_func: # 设置模拟函数的返回值 - mock_decide_lang_by_str.return_value = 'en' - mock_decide_lang_by_str_v218.return_value = 'en_v218' + mock_get_singleton_lang_detect.return_value = MagicMock() + mock_decide_language_func.return_value = {'language': 'en', 'language_details': 'eng_Latn'} # 调用被测函数 result = update_language_by_str('test text') @@ -152,30 +152,7 @@ def test_update_language_by_str(): # 验证返回结果 expected_result = { 'language': 'en', - 'language_details': 'en_v218' + 'language_details': 'eng_Latn' } assert result == expected_result, f'Expected {expected_result}, but got {result}' print('Test passed!') - - -class TestDecideLangByStrV218(unittest.TestCase): - - @patch('llm_web_kit.model.lang_id.get_singleton_lang_detect') - def test_decide_lang_by_str_v218(self, mock_get_singleton_lang_detect): - mock_lang_detect = MagicMock() - mock_lang_detect.predict.return_value = [('__label__en', 0.8), ('__label__fr', 0.2)] - mock_get_singleton_lang_detect.return_value = mock_lang_detect - - content_str = 'This is an English text.' - result = decide_lang_by_str_v218(content_str, 'model_path') - self.assertEqual(result, 'en') - - @patch('llm_web_kit.model.lang_id.get_singleton_lang_detect') - def test_decide_lang_by_str_v218_custom_model_path(self, mock_get_singleton_lang_detect): - mock_lang_detect = MagicMock() - mock_lang_detect.predict.return_value = [('__label__es', 0.9), ('__label__de', 0.1)] - mock_get_singleton_lang_detect.return_value = mock_lang_detect - - content_str = 'Este es un texto en español.' - result = decide_lang_by_str_v218(content_str, 'custom_model_path') - self.assertEqual(result, 'es') diff --git a/tests/llm_web_kit/model/test_model_impl.py b/tests/llm_web_kit/model/test_model_impl.py new file mode 100644 index 00000000..3e656068 --- /dev/null +++ b/tests/llm_web_kit/model/test_model_impl.py @@ -0,0 +1,312 @@ +"""Test cases for model_impl.py.""" + +import unittest +from unittest import TestCase +from unittest.mock import MagicMock, patch + +from llm_web_kit.exception.exception import ModelRuntimeException +from llm_web_kit.model.model_impl import (ModelFactory, ModelType, + PoliticalCPUModel, + PoliticalPredictorImpl, + PornEnGPUModel, PornPredictorImpl, + PornZhGPUModel) +from llm_web_kit.model.model_interface import PornRequest, PornResponse + + +class TestPoliticalCPUModel(TestCase): + """Test cases for PoliticalCPUModel.""" + + @patch.object(PoliticalCPUModel, '_load_model') + def test_load_model(self, mock_load_model): + """Test model loading.""" + mock_load_model.return_value = MagicMock() + model = PoliticalCPUModel() + model._load_model() + assert mock_load_model.call_count == 1 + + @patch.object(PoliticalCPUModel, '_load_model') + def test_get_resource_requirement(self, mock_load_model): + """Test resource requirements.""" + mock_load_model.return_value = MagicMock() + model = PoliticalCPUModel() + resource_requirement = model.get_resource_requirement() + assert resource_requirement.num_cpus == 1 + assert resource_requirement.memory_GB == 4 + assert resource_requirement.num_gpus == 0 + + @patch.object(PoliticalCPUModel, '_load_model') + def test_get_batch_config(self, mock_load_model): + """Test batch configuration.""" + mock_load_model.return_value = MagicMock() + model = PoliticalCPUModel() + batch_config = model.get_batch_config() + assert batch_config.max_batch_size == 1000 + assert batch_config.optimal_batch_size == 512 + assert batch_config.min_batch_size == 8 + + @patch.object(PoliticalCPUModel, '_load_model') + @patch('llm_web_kit.model.model_impl.update_political_by_str') + def test_predict_batch(self, mock_update_political_by_str, mock_load_model): + """Test batch prediction.""" + mock_model = MagicMock() + mock_load_model.return_value = mock_model + mock_update_political_by_str.return_value = {'political_prob': 0.96} + + model = PoliticalCPUModel() + model.model = mock_model + + results = model.predict_batch(['test1', 'test2']) + assert len(results) == 2 + assert results[0]['political_prob'] == 0.96 + assert results[1]['political_prob'] == 0.96 + assert mock_update_political_by_str.call_count == 2 + + @patch.object(PoliticalCPUModel, '_load_model') + def test_convert_result_to_response(self, mock_load_model): + """Test result conversion to response.""" + mock_load_model.return_value = MagicMock() + model = PoliticalCPUModel() + + # Test case where political_prob > 0.99 (should be flagged) + result = {'political_prob': 0.995} + response = model.convert_result_to_response(result) + assert response.is_remained + assert response.details == result + + # Test case where political_prob <= 0.99 (should not be flagged) + result = {'political_prob': 0.985} + response = model.convert_result_to_response(result) + assert not response.is_remained + assert response.details == result + + +class TestPornEnGPUModel(TestCase): + """Test cases for PornEnGPUModel.""" + + from llm_web_kit.model.porn_detector import BertModel as PornEnModel + + @patch.object(PornEnModel, '__init__') + def test_load_model(self, mock_init): + """Test model loading.""" + mock_init.return_value = None + model = PornEnGPUModel() + model._load_model() + assert mock_init.call_count == 1 + + @patch.object(PornEnGPUModel, '_load_model') + def test_get_resource_requirement(self, mock_load_model): + """Test resource requirements.""" + mock_load_model.return_value = MagicMock() + model = PornEnGPUModel() + resource_requirement = model.get_resource_requirement() + assert resource_requirement.num_cpus == 12 + assert resource_requirement.memory_GB == 64 + assert resource_requirement.num_gpus == 1 + + @patch.object(PornEnGPUModel, '_load_model') + def test_get_batch_config(self, mock_load_model): + """Test batch configuration.""" + mock_load_model.return_value = MagicMock() + model = PornEnGPUModel() + batch_config = model.get_batch_config() + assert batch_config.max_batch_size == 1000 + assert batch_config.optimal_batch_size == 512 + assert batch_config.min_batch_size == 8 + + @patch.object(PornEnGPUModel, '_load_model') + def test_predict_batch(self, mock_load_model): + """Test batch prediction.""" + mock_model = MagicMock() + mock_model.get_output_key.return_value = 'prob' + mock_model.predict.return_value = [{'prob': 0.96}, {'prob': 0.94}] + mock_load_model.return_value = mock_model + + model = PornEnGPUModel() + model.model = mock_model + + results = model.predict_batch(['test1', 'test2']) + assert len(results) == 2 + assert results[0]['porn_prob'] == 0.96 + assert results[1]['porn_prob'] == 0.94 + + # Test model not initialized + model.model = None + with self.assertRaises(RuntimeError): + model.predict_batch(['test']) + + @patch.object(PornEnGPUModel, '_load_model') + def test_convert_result_to_response(self, mock_load_model): + """Test result conversion to response.""" + mock_load_model.return_value = MagicMock() + model = PornEnGPUModel() + + # Test with high probability (should be remained) + response = model.convert_result_to_response({'porn_prob': 0.21}) + assert isinstance(response, PornResponse) + assert not response.is_remained + assert response.details == {'porn_prob': 0.21} + + # Test with low probability (should not be remained) + response = model.convert_result_to_response({'porn_prob': 0.19}) + assert isinstance(response, PornResponse) + assert response.is_remained + assert response.details == {'porn_prob': 0.19} + + +class TestPornZhGPUModel(TestCase): + """Test cases for PornZhGPUModel.""" + + from llm_web_kit.model.porn_detector import XlmrModel as PornZhModel + + @patch.object(PornZhModel, '__init__') + def test_load_model(self, mock_init): + """Test model loading.""" + mock_init.return_value = None + model = PornZhGPUModel() + model._load_model() + assert mock_init.call_count == 1 + + @patch.object(PornZhGPUModel, '_load_model') + def test_get_resource_requirement(self, mock_load_model): + """Test resource requirements.""" + mock_load_model.return_value = MagicMock() + model = PornZhGPUModel() + resource_requirement = model.get_resource_requirement() + assert resource_requirement.num_cpus == 12 + assert resource_requirement.memory_GB == 64 + assert resource_requirement.num_gpus == 1 + + @patch.object(PornZhGPUModel, '_load_model') + def test_get_batch_config(self, mock_load_model): + """Test batch configuration.""" + mock_load_model.return_value = MagicMock() + model = PornZhGPUModel() + batch_config = model.get_batch_config() + assert batch_config.max_batch_size == 300 + assert batch_config.optimal_batch_size == 256 + assert batch_config.min_batch_size == 8 + + @patch.object(PornZhGPUModel, '_load_model') + def test_predict_batch(self, mock_load_model): + """Test batch prediction.""" + mock_model = MagicMock() + mock_model.get_output_key.return_value = 'prob' + mock_model.predict.return_value = [{'prob': 0.96}, {'prob': 0.94}] + mock_load_model.return_value = mock_model + + model = PornZhGPUModel() + model.model = mock_model + + results = model.predict_batch(['test1', 'test2']) + assert len(results) == 2 + assert results[0]['porn_prob'] == 0.96 + assert results[1]['porn_prob'] == 0.94 + + # Test model not initialized + model.model = None + with self.assertRaises(RuntimeError): + model.predict_batch(['test']) + + @patch.object(PornZhGPUModel, '_load_model') + def test_convert_result_to_response(self, mock_load_model): + """Test result conversion to response.""" + mock_load_model.return_value = MagicMock() + model = PornZhGPUModel() + + # Test with high probability (should be remained) + response = model.convert_result_to_response({'porn_prob': 0.96}) + assert isinstance(response, PornResponse) + assert response.is_remained + assert response.details == {'porn_prob': 0.96} + + # Test with low probability (should not be remained) + response = model.convert_result_to_response({'porn_prob': 0.94}) + assert isinstance(response, PornResponse) + assert not response.is_remained + assert response.details == {'porn_prob': 0.94} + + +class TestPornPredictorImpl(TestCase): + """Test cases for PornPredictorImpl.""" + + @patch.object(PornEnGPUModel, '_load_model') + @patch.object(PornZhGPUModel, '_load_model') + @patch.object(PornZhGPUModel, 'predict_batch') + @patch.object(PornEnGPUModel, 'predict_batch') + def test_predict_batch(self, mock_predict_batch_en, mock_predict_batch_zh, + mock_load_model_en, mock_load_model_zh): + """Test batch prediction.""" + mock_load_model_en.return_value = MagicMock() + mock_load_model_zh.return_value = MagicMock() + mock_predict_batch_en.return_value = [{'porn_prob': 0.19}, {'porn_prob': 0.3}] + mock_predict_batch_zh.return_value = [{'porn_prob': 0.19}, {'porn_prob': 0.3}] + + predictor = PornPredictorImpl('en') + assert predictor.language == 'en' + with self.assertRaises(ModelRuntimeException): + predictor.predict_batch([ + PornRequest(content='Hello, world!', language='en'), + PornRequest(content='你好', language='zh') + ]) + assert mock_predict_batch_en.call_count == 1 + + results = predictor.predict_batch([ + PornRequest(content='Hello, world!', language='en'), + PornRequest(content='nihao', language='en') + ]) + assert results[0].is_remained + assert not results[1].is_remained + + @patch.object(PornEnGPUModel, '_load_model') + @patch.object(PornZhGPUModel, '_load_model') + def test_create_model(self, mock_load_model_en, mock_load_model_zh): + """Test model creation.""" + mock_load_model_en.return_value = MagicMock() + mock_load_model_zh.return_value = MagicMock() + predictor = PornPredictorImpl('en') + assert predictor.language == 'en' + assert predictor.model is not None + + +def test_model_factory(): + """Test ModelFactory creation.""" + factory = ModelFactory() + assert factory is not None + + +class TestModelFactory(TestCase): + """Test cases for ModelFactory.""" + + @patch.object(PoliticalPredictorImpl, '_create_model') + @patch.object(PoliticalCPUModel, '_load_model') + def test_create_predictor(self, mock_load_model, mock_create_model): + """Test ModelFactory.create_predictor method.""" + mock_load_model.return_value = MagicMock() + mock_create_model.return_value = MagicMock() + predictor = ModelFactory.create_predictor(ModelType.POLITICAL, 'en') + assert isinstance(predictor, PoliticalPredictorImpl) + assert mock_create_model.call_count == 1 + + @patch.object(PornPredictorImpl, '_create_model') + @patch.object(PornEnGPUModel, '_load_model') + def test_create_predictor_porn(self, mock_load_model, mock_create_model): + """Test ModelFactory.create_predictor method for porn model.""" + mock_load_model.return_value = MagicMock() + mock_create_model.return_value = MagicMock() + predictor = ModelFactory.create_predictor(ModelType.PORN, 'en') + assert isinstance(predictor, PornPredictorImpl) + assert mock_create_model.call_count == 1 + + @patch.object(PornPredictorImpl, '_create_model') + @patch.object(PornZhGPUModel, '_load_model') + def test_create_predictor_porn_zh(self, mock_load_model, mock_create_model): + """Test ModelFactory.create_predictor method for porn model.""" + mock_load_model.return_value = MagicMock() + mock_create_model.return_value = MagicMock() + predictor = ModelFactory.create_predictor(ModelType.PORN, 'zh') + assert isinstance(predictor, PornPredictorImpl) + assert mock_create_model.call_count == 1 + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_model_interface.py b/tests/llm_web_kit/model/test_model_interface.py new file mode 100644 index 00000000..d16c2042 --- /dev/null +++ b/tests/llm_web_kit/model/test_model_interface.py @@ -0,0 +1,122 @@ +"""Test cases for model_interface.py.""" + +import pytest + +from llm_web_kit.model.model_interface import (BatchProcessConfig, + ModelPredictor, ModelRequest, + ModelResource, ModelResponse, + PoliticalPredictor, + PoliticalRequest, + PoliticalResponse, + PornPredictor, PornRequest, + PornResponse, + ResourceRequirement, + ResourceType) + + +def test_model_request() -> None: + """Test ModelRequest initialization and attributes.""" + request = ModelRequest(content='Hello, world!', language='en') + assert request.content == 'Hello, world!' + assert request.language == 'en' + + +def test_model_response() -> None: + """Test ModelResponse initialization and attributes.""" + response = ModelResponse(is_remained=True, details={'score': 0.95}) + assert response.is_remained + assert response.details['score'] == 0.95 + + +def test_political_request() -> None: + """Test PoliticalRequest initialization and attributes.""" + request = PoliticalRequest(content='Hello, world!', language='en') + assert request.content == 'Hello, world!' + assert request.language == 'en' + + +def test_political_response() -> None: + """Test PoliticalResponse initialization and attributes.""" + response = PoliticalResponse(is_remained=True, details={'score': 0.95}) + assert response.is_remained + assert response.details['score'] == 0.95 + + +def test_porn_request() -> None: + """Test PornRequest initialization and attributes.""" + request = PornRequest(content='Hello, world!', language='en') + assert request.content == 'Hello, world!' + assert request.language == 'en' + + +def test_porn_response() -> None: + """Test PornResponse initialization and attributes.""" + response = PornResponse(is_remained=True, details={'score': 0.95}) + assert response.is_remained + assert response.details['score'] == 0.95 + + +def test_batch_process_config() -> None: + """Test BatchProcessConfig initialization and attributes.""" + config = BatchProcessConfig( + max_batch_size=100, + optimal_batch_size=50, + min_batch_size=10 + ) + assert config.max_batch_size == 100 + assert config.optimal_batch_size == 50 + assert config.min_batch_size == 10 + + +def test_resource_type() -> None: + """Test ResourceType enum values.""" + assert ResourceType.CPU + assert ResourceType.GPU + assert ResourceType.DEFAULT + + +def test_resource_requirement() -> None: + """Test ResourceRequirement initialization and conversion to ray + resources.""" + requirement = ResourceRequirement(num_cpus=1, memory_GB=4, num_gpus=0.25) + assert requirement.num_cpus == 1 + assert requirement.memory_GB == 4 + assert requirement.num_gpus == 0.25 + assert requirement.to_ray_resources() == { + 'num_cpus': 1, + 'memory': 4 * 2**30, + 'num_gpus': 0.25 + } + + cpu_only_requirement = ResourceRequirement(num_cpus=1, memory_GB=4) + assert cpu_only_requirement.to_ray_resources() == { + 'num_cpus': 1, + 'memory': 4 * 2**30, + 'resources': {'cpu_only': 1} + } + + +def test_model_resource() -> None: + """Test that ModelResource cannot be instantiated directly.""" + with pytest.raises(TypeError): + ModelResource() + + +def test_model_predictor() -> None: + """Test that ModelPredictor cannot be instantiated directly.""" + with pytest.raises(TypeError): + ModelPredictor() + + +def test_political_predictor() -> None: + """Test PoliticalPredictor implementation.""" + with pytest.raises(TypeError): + predictor = PoliticalPredictor() + assert isinstance(predictor, ModelPredictor) + + +def test_porn_predictor() -> None: + """Test PornPredictor implementation.""" + with pytest.raises(TypeError): + predictor = PornPredictor() + assert isinstance(predictor, ModelPredictor) diff --git a/tests/llm_web_kit/model/test_political.py b/tests/llm_web_kit/model/test_political.py index 6ad08321..54cc3437 100644 --- a/tests/llm_web_kit/model/test_political.py +++ b/tests/llm_web_kit/model/test_political.py @@ -1,16 +1,27 @@ +# flake8: noqa: E402 import os +import sys from unittest.mock import MagicMock, patch +import pytest + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 4) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + +from llm_web_kit.exception.exception import ModelInputException from llm_web_kit.model.policical import (PoliticalDetector, decide_political_by_prob, decide_political_by_str, decide_political_func, + political_filter_cpu, update_political_by_str) class TestPoliticalDetector: - @patch('llm_web_kit.model.policical.AutoTokenizer.from_pretrained') + @patch('transformers.AutoTokenizer.from_pretrained') @patch('llm_web_kit.model.policical.fasttext.load_model') @patch('llm_web_kit.model.policical.PoliticalDetector.auto_download') def test_init(self, mock_auto_download, mock_load_model, mock_auto_tokenizer): @@ -35,7 +46,7 @@ def test_init(self, mock_auto_download, mock_load_model, mock_auto_tokenizer): trust_remote_code=True, ) - @patch('llm_web_kit.model.policical.AutoTokenizer.from_pretrained') + @patch('transformers.AutoTokenizer.from_pretrained') @patch('llm_web_kit.model.policical.fasttext.load_model') @patch('llm_web_kit.model.policical.PoliticalDetector.auto_download') def test_predict(self, mock_auto_download, mock_load_model, mock_auto_tokenizer): @@ -85,4 +96,17 @@ def test_decide_political_by_str(): def test_update_political_by_str(): with patch('llm_web_kit.model.policical.decide_political_by_str') as mock_decide_political_by_str: mock_decide_political_by_str.return_value = 0.6 - assert update_political_by_str('test text') == {'politics_prob': 0.6} + assert update_political_by_str('test text') == {'political_prob': 0.6} + +def test_political_filter_cpu(): + with patch('llm_web_kit.model.policical.decide_political_by_str') as mock_decide_political_by_str: + with patch('llm_web_kit.model.policical.DataJson') as mock_datajson: + mock_datajson_instance = MagicMock() + mock_datajson_instance.get_content_list.return_value.to_txt.return_value = 'This is a test content.' + mock_datajson.return_value = mock_datajson_instance + mock_decide_political_by_str.return_value = 0.6 + assert political_filter_cpu({'content': 'This is a test content.'}, 'en') == {'political_prob': 0.6} + + with pytest.raises(ModelInputException) as excinfo: + political_filter_cpu({'content': 'This is a test content.'}, 'fr') + assert "Unsupport language 'fr'" in str(excinfo.value) diff --git a/tests/llm_web_kit/model/test_porn_detector.py b/tests/llm_web_kit/model/test_porn_detector.py index dbb8da77..146d65fd 100644 --- a/tests/llm_web_kit/model/test_porn_detector.py +++ b/tests/llm_web_kit/model/test_porn_detector.py @@ -1,20 +1,28 @@ +import logging import os import sys import unittest from unittest import TestCase from unittest.mock import MagicMock, mock_open, patch +from transformers import logging as transformers_logging + +from llm_web_kit.model.porn_detector import BertModel # noqa: E402 + current_file_path = os.path.abspath(__file__) parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 4) normalized_path = os.path.normpath(parent_dir_path) sys.path.append(normalized_path) -from llm_web_kit.model.porn_detector import BertModel # noqa: E402 + +transformers_logging.set_verbosity_error() + +logging.disable(logging.CRITICAL) class TestBertModel(TestCase): - @patch('llm_web_kit.model.porn_detector.AutoModelForSequenceClassification.from_pretrained') - @patch('llm_web_kit.model.porn_detector.AutoTokenizer.from_pretrained') + @patch('transformers.AutoModelForSequenceClassification.from_pretrained') + @patch('transformers.AutoTokenizer.from_pretrained') @patch('llm_web_kit.model.porn_detector.os.path.join') @patch('llm_web_kit.model.porn_detector.open', new_callable=mock_open, read_data='{"cls_index": 0, "use_sigmoid": true, "max_tokens": 512, "device": "cuda"}') @patch('llm_web_kit.model.porn_detector.BertModel.auto_download') @@ -52,8 +60,8 @@ def test_init(self, mock_auto_download, mock_open, mock_os_path_join, mock_from_ } ) - @patch('llm_web_kit.model.porn_detector.AutoModelForSequenceClassification.from_pretrained') - @patch('llm_web_kit.model.porn_detector.AutoTokenizer.from_pretrained') + @patch('transformers.AutoModelForSequenceClassification.from_pretrained') + @patch('transformers.AutoTokenizer.from_pretrained') @patch('llm_web_kit.model.porn_detector.os.path.join') @patch('llm_web_kit.model.porn_detector.open', new_callable=mock_open, read_data='{"cls_index": 0, "use_sigmoid": true, "max_tokens": 512, "device": "cuda"}') @patch('llm_web_kit.model.porn_detector.BertModel.auto_download') @@ -107,8 +115,8 @@ def test_pre_process(self, mock_torch, mock_auto_download, mock_open, mock_os_pa self.assertEqual(result['inputs']['input_ids'], expected_input_ids) self.assertEqual(result['inputs']['attention_mask'], expected_attn_mask) - @patch('llm_web_kit.model.porn_detector.AutoModelForSequenceClassification.from_pretrained') - @patch('llm_web_kit.model.porn_detector.AutoTokenizer.from_pretrained') + @patch('transformers.AutoModelForSequenceClassification.from_pretrained') + @patch('transformers.AutoTokenizer.from_pretrained') @patch('llm_web_kit.model.porn_detector.os.path.join') @patch('llm_web_kit.model.porn_detector.open', new_callable=mock_open, read_data='{"cls_index": 0, "use_sigmoid": true, "max_tokens": 512, "device": "cuda"}') @patch('llm_web_kit.model.porn_detector.BertModel.auto_download') diff --git a/tests/llm_web_kit/model/test_quality_model.py b/tests/llm_web_kit/model/test_quality_model.py new file mode 100644 index 00000000..14418909 --- /dev/null +++ b/tests/llm_web_kit/model/test_quality_model.py @@ -0,0 +1,355 @@ +import os +import sys +import unittest +from unittest import TestCase +from unittest.mock import MagicMock, mock_open, patch + +from llm_web_kit.exception.exception import ( # noqa: E402 + CleanModelUnsupportedLanguageException, ModelInputException) +from llm_web_kit.model.quality_model import QualityModel # noqa: E402 +from llm_web_kit.model.quality_model import get_quality_model # noqa: E402 +from llm_web_kit.model.quality_model import quality_prober # noqa: E402 +from llm_web_kit.model.quality_model import QualityFilter +from llm_web_kit.model.resource_utils.utils import CACHE_DIR + +current_file_path = os.path.abspath(__file__) +parent_dir_path = os.path.join(current_file_path, *[os.pardir] * 4) +normalized_path = os.path.normpath(parent_dir_path) +sys.path.append(normalized_path) + + +class TestQualityModel(TestCase): + @patch('llm_web_kit.model.quality_model.QualityModel._load_model') + @patch('llm_web_kit.model.quality_model.QualityModel.auto_download') + def test_init(self, mock_auto_download, mock_load_model): + # 模拟auto_download + mock_auto_download.return_value = '/fake/model/path' + + # 实例化 QualityModel + _ = QualityModel() + # 验证是否调用了预期的函数 + mock_auto_download.assert_called_once() + mock_load_model.assert_called_once_with('/fake/model/path') + + mock_auto_download.reset_mock() + mock_load_model.reset_mock() + # 实例化 QualityModel + _ = QualityModel(model_path='/test/model/path') + # 验证是否调用了预期的函数 + mock_load_model.assert_called_once_with('/test/model/path') + + mock_auto_download.reset_mock() + mock_load_model.reset_mock() + # 实例化 QualityModel + _ = QualityModel(language='en', content_style='article') + # 验证是否调用了预期的函数 + mock_auto_download.assert_called_once_with('en', 'article') + mock_load_model.assert_called_once_with('/fake/model/path') + + @patch( + 'llm_web_kit.model.quality_model.load_config', + return_value={ + 'resources': { + 'zh_en_article': { + 'download_path': 'mock_download_path', + 'md5': 'mock_md5', + } + } + }, + ) + @patch('llm_web_kit.model.quality_model.get_unzip_dir') + @patch('llm_web_kit.model.quality_model.download_auto_file') + @patch('llm_web_kit.model.quality_model.unzip_local_file') + @patch('llm_web_kit.model.quality_model.QualityModel._load_model') + @patch('llm_web_kit.model.quality_model.os.path.join') + def test_auto_download( + self, + mock_path_join, + mock_load_model, + mock_unzip_local_file, + mock_download_auto_file, + mock_get_unzip_dir, + mock_load_config, + ): + mock_get_unzip_dir.return_value = '/fake/unzip/path' + mock_path_join.side_effect = lambda *args: '@'.join(args) + zip_path = CACHE_DIR + '@zh_en_article.zip' + mock_download_auto_file.return_value = zip_path + mock_unzip_local_file.return_value = '/fake/unzip/path' + + _ = QualityModel('en', 'article') + + mock_get_unzip_dir.assert_called_once_with(zip_path) + mock_download_auto_file.assert_called_once_with( + 'mock_download_path', + zip_path, + 'mock_md5', + ) + mock_unzip_local_file.assert_called_once_with(zip_path, '/fake/unzip/path') + + @patch('llm_web_kit.model.quality_model.ctypes.cdll.LoadLibrary') + @patch('llm_web_kit.model.quality_model.pickle.load') + @patch('llm_web_kit.model.quality_model.os.path.join') + @patch('llm_web_kit.model.quality_model.open', new_callable=mock_open) + def test_load_model( + self, mock_open, mock_path_join, mock_pickle_load, mock_loadlib + ): + mock_path_join.side_effect = lambda *args: '/'.join(args) + _ = QualityModel(model_path='/fake/model/path') + + mock_loadlib.assert_called_once_with('libgomp.so.1') + + mock_open.assert_called_once_with('/fake/model/path', 'rb') + mock_pickle_load.assert_called_once_with(mock_open.return_value) + + @patch('llm_web_kit.model.quality_model.pd.json_normalize') + @patch('llm_web_kit.model.quality_model.QualityModel._load_model') + def test_predict_with_features(self, mock_load_model, mock_json_normalize): + # 设置模拟的 DataFrame + mock_df = MagicMock() + mock_json_normalize.return_value = mock_df + + # 创建一个模拟的模型并设置预测方法的返回值 + mock_model = MagicMock() + mock_model.predict.return_value = [0.9] # 假设模型总是预测0.9 + + # 实例化 QualityModel,并替换其 quality_model 属性为模拟的模型 + qm = QualityModel(model_path='/fake/model/path') + qm.quality_model = mock_model + + # 定义要测试的特征字典 + test_features = {'key1': 'value1', 'key2': 'value2'} + + # 调用 predict_with_features 方法 + prediction = qm.predict_with_features(test_features) + + # 验证 json_normalize 是否被正确调用 + mock_json_normalize.assert_called_once_with(test_features) + + # 验证模型的 predict 方法是否被正确调用 + mock_model.predict.assert_called_once_with(mock_df, num_threads=1) + + # 验证预测结果 + self.assertEqual(prediction, 0.9) + + @patch('llm_web_kit.model.quality_model.stats_stop_words') + @patch('llm_web_kit.model.quality_model.stats_entropy') + @patch('llm_web_kit.model.quality_model.get_content_len') + @patch('llm_web_kit.model.quality_model.content2words') + @patch('llm_web_kit.model.quality_model.div_zero') + @patch('llm_web_kit.model.quality_model.stats_punctuation_end_sentence') + @patch('llm_web_kit.model.quality_model.stats_continue_space') + @patch('llm_web_kit.model.quality_model.content2lines') + @patch('llm_web_kit.model.quality_model.get_content_len_without_space') + @patch('llm_web_kit.model.quality_model.stats_html_entity') + @patch('llm_web_kit.model.quality_model.stats_ngram_mini') + @patch('llm_web_kit.model.quality_model.stats_unicode') + @patch('llm_web_kit.model.quality_model.QualityModel.predict_with_features') + @patch('llm_web_kit.model.quality_model.QualityModel._load_model') + def test_predict_with_content( + self, + mock_load_model, + mock_predict_with_features, + mock_stats_unicode, + mock_stats_ngram_mini, + mock_stats_html_entity, + mock_get_content_len_without_space, + mock_content2lines, + mock_stats_continue_space, + mock_stats_punctuation_end_sentence, + mock_div_zero, + mock_content2words, + mock_get_content_len, + mock_stats_entropy, + mock_stats_stop_words, + ): + # 定义要测试的内容 + test_content = """Objective: This study analyzed the cost-effectiveness of delivering alcohol screening, brief intervention, and referral to treatment (SBIRT) in emergency departments (ED) when compared to outpatient medical settings. +Methods: A probabilistic decision analytic tree categorized patients into health states. Utility weights and social costs were assigned to each health state. Health outcome measures were the proportion of patients not drinking above threshold levels at follow-up, the proportion of patients transitioning from above threshold levels at baseline to abstinent or below threshold levels at follow-up, and the quality-adjusted life years (QALYs) gained. Expected costs under a provider perspective were the marginal costs of SBIRT, and under a societal perspective were the sum of SBIRT cost per patient and the change in social costs. Incremental cost-effectiveness ratios were computed. +Results: When considering provider costs only, compared to outpatient, SBIRT in ED cost $8.63 less, generated 0.005 more QALYs per patient, and resulted in 13.8% more patients drinking below threshold levels. Sensitivity analyses in which patients were assumed to receive a fixed number of treatment sessions that met clinical sites' guidelines made SBIRT more expensive in ED than outpatient; the ED remained more effective. In this sensitivity analysis, the ED was the most cost-effective setting if decision makers were willing to pay more than $1500 per QALY gained. +Conclusions: Alcohol SBIRT generates costs savings and improves health in both ED and outpatient settings. EDs provide better effectiveness at a lower cost and greater social cost reductions than outpatient. +""" + + # 设置模拟函数的返回值 + mock_stats_stop_words.return_value = { + 'stop_word_num': 88, + 'stop_word_frac': 0.3577, + } + mock_stats_entropy.return_value = {'entropy': 4.5059} + mock_get_content_len.return_value = 1681 + mock_content2words.return_value = test_content.split(' ') + mock_div_zero.side_effect = lambda x, y: x / y if y != 0 else 0 + mock_stats_punctuation_end_sentence.return_value = { + 'punc_end_sentence_num': 43, + 'punc_end_sentence_mean_len': 33.4186, + 'longest_punc_sentence_len': 130, + } + mock_stats_continue_space.return_value = {'max_continue_space_num': 1} + mock_content2lines.return_value = ['line1', 'line2', 'line3', 'line4'] + mock_get_content_len_without_space.return_value = 1437 + mock_stats_html_entity.return_value = { + 'html_semi_entity_count': 0, + 'html_semi_entity_frac': 0.0, + } + mock_stats_ngram_mini.return_value = { + 'dup_top_2gram': 0.0527, + 'dup_top_4gram': 0.0544, + 'dup_10gram': 0.0, + } + mock_stats_unicode.return_value = { + 'std_dev_unicode_value': 29.1184, + 'mean_diff_unicode_value': -0.0410, + } + mock_predict_with_features.return_value = 0.7 + + # 创建 QualityModel 实例 + qm = QualityModel(model_path='/fake/model/path') + + # 调用 predict_with_content 方法 + result = qm.predict_with_content(test_content) + + # 验证 predict_with_features 是否被正确调用 + mock_predict_with_features.assert_called() + + # 验证预测结果 + self.assertEqual(result, 0.7) + + @patch('llm_web_kit.model.quality_model.QualityModel.auto_download') + @patch('llm_web_kit.model.quality_model.QualityModel._load_model') + def test_get_quality_model(self, mock_load_model, mock_auto_download): + qm, threshold = get_quality_model('en', 'article') + self.assertIsInstance(qm, QualityModel) + self.assertIsInstance(threshold, float) + qm, threshold = get_quality_model('xx', 'article') + self.assertIsNone(qm) + self.assertIsNone(threshold) + + @patch('llm_web_kit.model.quality_model.get_quality_model') + @patch('llm_web_kit.model.quality_model.DataJson') + def test_quality_prober(self, mock_DataJson, mock_get_quality_model): + # 设置模拟对象 + mock_model = MagicMock() + mock_model.predict_with_content.return_value = 0.85 + mock_threshold = 0.8 + mock_get_quality_model.return_value = (mock_model, mock_threshold) + + # 模拟 DataJson 类的行为 + mock_datajson_instance = MagicMock() + mock_datajson_instance.get_content_list.return_value.to_txt.return_value = ( + 'This is a test content.' + ) + mock_DataJson.return_value = mock_datajson_instance + + # 测试数据 + test_data_dict = {'content': 'This is a test content.'} + test_language = 'en' + test_content_style = 'article' + + result = quality_prober(test_data_dict, test_language, test_content_style) + + # 断言预期结果 + self.assertDictEqual(result, {'quality_prob': 0.85}) + mock_get_quality_model.assert_called_once_with( + test_language, test_content_style + ) + mock_model.predict_with_content.assert_called_once_with( + 'This is a test content.', test_content_style + ) + + mock_get_quality_model.reset_mock() + mock_get_quality_model.return_value = None, None + test_language = 'xx' + test_content_style = 'article' + + with self.assertRaises(ModelInputException): + quality_prober(test_data_dict, test_language, test_content_style) + + # 确认是否正确调用了 get_quality_model + mock_get_quality_model.assert_called_once_with( + test_language, test_content_style + ) + + +class TestQualityFilter(unittest.TestCase): + def setUp(self): + self.filter = QualityFilter() + + @patch.dict( + 'llm_web_kit.model.quality_model._model_resource_map', + {'en-article': 'mock_value'}, + clear=True, + ) + def test_check_supported(self): + # 测试支持的语言和内容风格 + self.assertTrue(self.filter.check_supported('en', 'article')) + # 测试不支持的组合 + self.assertFalse(self.filter.check_supported('fr', 'blog')) + + @patch('llm_web_kit.model.quality_model.get_quality_model') + def test_filter_supported_high_score(self, mock_get_model): + """测试支持的语言风格且分数高于阈值的情况.""" + # 配置mock模型 + mock_model = MagicMock() + mock_model.predict_with_content.return_value = 0.85 + mock_get_model.return_value = (mock_model, 0.7) + + # 执行过滤 + result, details = self.filter.filter('test content', 'en', 'details', 'article') + + # 验证结果 + self.assertTrue(result) + self.assertEqual(details['quality_prob'], 0.85) + mock_get_model.assert_called_once_with('en', 'article') + mock_model.predict_with_content.assert_called_once_with( + 'test content', 'article' + ) + + @patch('llm_web_kit.model.quality_model.get_quality_model') + def test_filter_supported_low_score(self, mock_get_model): + """测试支持的语言风格但分数低于阈值的情况.""" + mock_model = MagicMock() + mock_model.predict_with_content.return_value = 0.6 + mock_get_model.return_value = (mock_model, 0.7) + + result, details = self.filter.filter( + 'low quality content', 'en', 'details', 'article' + ) + + self.assertFalse(result) + self.assertEqual(details['quality_prob'], 0.6) + + @patch.dict('llm_web_kit.model.quality_model._model_resource_map', {}, clear=True) + def test_filter_unsupported_combination(self): + """测试不支持的语言风格组合.""" + with self.assertRaises(CleanModelUnsupportedLanguageException) as context: + self.filter.filter('content', 'jp', 'details', 'novel') + + self.assertIn( + "Unsupport language 'jp' with content_style 'novel'", str(context.exception) + ) + + @patch('llm_web_kit.model.quality_model.get_quality_model') + def test_edge_case_threshold(self, mock_get_model): + """测试阈值边界情况.""" + mock_model = MagicMock() + mock_model.predict_with_content.return_value = 0.7 + mock_get_model.return_value = (mock_model, 0.7) + + result, _ = self.filter.filter('boundary content', 'en', 'details', 'article') + self.assertFalse(result) # 0.7不大于0.7应返回False + + @patch('llm_web_kit.model.quality_model.get_quality_model') + def test_error_handling_in_model(self, mock_get_model): + """测试模型预测时的异常处理.""" + mock_model = MagicMock() + mock_model.predict_with_content.side_effect = Exception('Model failure') + mock_get_model.return_value = (mock_model, 0.7) + + with self.assertRaises(Exception) as context: + self.filter.filter('error content', 'en', 'details', 'article') + + self.assertIn('Model failure', str(context.exception)) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_rule_based_safety_module.py b/tests/llm_web_kit/model/test_rule_based_safety_module.py new file mode 100644 index 00000000..983018cf --- /dev/null +++ b/tests/llm_web_kit/model/test_rule_based_safety_module.py @@ -0,0 +1,141 @@ +import unittest +from unittest import TestCase +from unittest.mock import patch + +from llm_web_kit.model.domain_safety_detector import DomainFilter +# 需要根据实际模块路径调整 +from llm_web_kit.model.rule_based_safety_module import ( + RuleBasedSafetyModule, RuleBasedSafetyModuleDataPack, check_type) +from llm_web_kit.model.source_safety_detector import SourceFilter +from llm_web_kit.model.unsafe_words_detector import UnsafeWordsFilter + + +class TestCheckType(TestCase): + def test_type_checking(self): + """测试类型检查工具函数.""" + # 测试类型匹配的情况 + try: + check_type('test', 'string', str) + except TypeError: + self.fail('Valid type check failed') + + # 测试类型不匹配的情况 + with self.assertRaises(TypeError) as cm: + check_type('test', 123, str) + + expected_error = ( + "The type of test should be , but got " + ) + self.assertEqual(str(cm.exception), expected_error) + + +class TestRuleBasedSafetyModuleDataPack(TestCase): + def test_init_type_checks(self): + """测试初始化时的类型检查.""" + valid_args = { + 'content_str': 'test', + 'language': 'en', + 'language_details': 'details', + 'content_style': 'article', + 'url': 'http://test.com', + 'dataset_name': 'test_dataset', + } + + # 测试所有参数的正确类型 + try: + RuleBasedSafetyModuleDataPack(**valid_args) + except TypeError: + self.fail('Type check failed for valid types') + + # 逐个测试每个参数的类型错误 + for param in valid_args: + invalid_args = valid_args.copy() + invalid_args[param] = 123 # 故意设置错误类型 + with self.assertRaises(TypeError): + RuleBasedSafetyModuleDataPack(**invalid_args) + + def test_set_process_result(self): + """测试设置处理结果的功能.""" + data_pack = RuleBasedSafetyModuleDataPack('test', 'en', 'details', 'article','http://test.com', 'test_dataset') + + # 测试正确类型 + data_pack.set_process_result(False, {'key': 'value'}) + self.assertFalse(data_pack.safety_remained) + self.assertEqual(data_pack.safety_infos, {'key': 'value'}) + + # 测试错误类型 + with self.assertRaises(TypeError): + data_pack.set_process_result('not_bool', {'key': 'value'}) + + with self.assertRaises(TypeError): + data_pack.set_process_result(False, 'not_dict') + + def test_get_output(self): + """测试输出字典的生成.""" + data_pack = RuleBasedSafetyModuleDataPack('test', 'en', 'details', 'article','http://test.com', 'test_dataset') + data_pack.set_process_result(False, {'info': 'test'}) + + expected_output = {'safety_remained': False, 'safety_infos': {'info': 'test'}} + self.assertDictEqual(data_pack.get_output(), expected_output) + + +class TestRuleBasedSafetyModule(TestCase): + @patch.object(DomainFilter,'filter') + @patch.object(SourceFilter,'filter') + @patch.object(UnsafeWordsFilter,'filter') + def test_process_core(self, mock_unsafe_words_filter, mock_source_filter, mock_domain_filter): + """测试核心处理流程.""" + # 设置模拟返回值 + mock_source_filter.return_value = {'from_safe_source': False, 'from_domestic_source': False} + mock_domain_filter.return_value = (True, {}) + mock_unsafe_words_filter.return_value = (False, {'reason': 'test'}) + + # 初始化测试对象 + safety_module = RuleBasedSafetyModule(prod=True) + data_pack = RuleBasedSafetyModuleDataPack('test', 'en', 'details', 'article','http://test.com', 'test_dataset') + + # 执行核心处理 + result = safety_module.process_core(data_pack) + + # 验证过滤方法被正确调用 + mock_unsafe_words_filter.assert_called_once_with('test', 'en', 'details', 'article', False, False) + # 验证处理结果设置正确 + self.assertFalse(result.safety_remained) + self.assertEqual(result.safety_infos, {'reason': 'test'}) + + @patch.object(DomainFilter,'filter') + @patch.object(SourceFilter,'filter') + @patch.object(UnsafeWordsFilter,'filter') + def test_process_flow(self, mock_unsafe_words_filter, mock_source_filter, mock_domain_filter): + """测试完整处理流程.""" + mock_source_filter.return_value = {'from_safe_source': False, 'from_domestic_source': False} + mock_domain_filter.return_value = (True, {}) + mock_unsafe_words_filter.return_value = (True, {}) + + safety_module = RuleBasedSafetyModule(prod=False) + result = safety_module.process( + content_str='content', + language='en', + language_details='details', + content_style='article', + url='http://test.com', + dataset_name='test_dataset', + ) + + expected_result = {'safety_remained': True, 'safety_infos': {}} + self.assertDictEqual(result, expected_result) + + def test_production_mode_effect(self): + """测试生产模式的影响.""" + # 根据实际业务逻辑补充测试 + # 当前代码中prod参数未实际使用,需要根据具体实现调整 + pass + + def test_get_version(self): + """测试版本获取.""" + safety_module = RuleBasedSafetyModule(prod=True) + self.assertEqual(safety_module.get_version(), '1.0.0') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_source_safety_detector.py b/tests/llm_web_kit/model/test_source_safety_detector.py new file mode 100644 index 00000000..355cd277 --- /dev/null +++ b/tests/llm_web_kit/model/test_source_safety_detector.py @@ -0,0 +1,24 @@ +import unittest + +from llm_web_kit.model.source_safety_detector import SourceFilter + + +class TestSourceFilter(unittest.TestCase): + def setUp(self): + self.filter = SourceFilter() + + # 测试非法来源 + def test_unsafe_source(self): + result = self.filter.filter( + content_str='Unverified data', + language='en', + data_source='http://unknown-site.com', + language_details='informal', + content_style='user-generated' + ) + self.assertFalse(result['from_safe_source']) + self.assertFalse(result['from_domestic_source']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/model/test_unsafe_words_detector.py b/tests/llm_web_kit/model/test_unsafe_words_detector.py new file mode 100644 index 00000000..f7c63f7f --- /dev/null +++ b/tests/llm_web_kit/model/test_unsafe_words_detector.py @@ -0,0 +1,135 @@ +import unittest +from unittest.mock import MagicMock, Mock, mock_open, patch + +from llm_web_kit.exception.exception import SafeModelException +from llm_web_kit.model.unsafe_words_detector import (UnsafeWordChecker, + auto_download, get_ac, + get_unsafe_words, + get_unsafe_words_checker) + + +class TestUnsafeWordChecker(unittest.TestCase): + + @patch('llm_web_kit.model.unsafe_words_detector.get_ac') + def test_init(self, mock_get_ac): + mock_get_ac.return_value = MagicMock() + # Test default language initialization + checker = UnsafeWordChecker() + mock_get_ac.assert_called_once_with('zh-en') + self.assertIsNotNone(checker.ac) + + # Test custom language initialization + mock_get_ac.reset_mock() + checker = UnsafeWordChecker(language='xyz') + mock_get_ac.assert_called_once_with('xyz') + + @patch('llm_web_kit.model.unsafe_words_detector.get_ac') + def test_check_unsafe_words(self, mock_get_ac): + mock_get_ac.return_value = MagicMock() + + checker = UnsafeWordChecker() + checker.ac = MagicMock() + checker.ac.iter.return_value = [] + + # Test with content containing no unsafe words + content = 'This is a safe content with no unsafe words.' + result = checker.check_unsafe_words(content) + self.assertIsInstance(result, list) + self.assertEqual(len(result), 0) + + def test_standalone_word_detection(self): + """测试独立存在的子词能被正确识别[2,6](@ref)""" + ac = Mock() + ac.iter = Mock() + # 配置AC自动机返回数据(子词"unsafe"在位置10) + ac.iter.return_value = [ + (10, [{ + 'sub_word': 'unsafe', + 'word': 'unsafe', + 'sub_words': {'unsafe'}, + 'type': 'security', + 'level': 'high', + 'language': 'en' + }]) + ] + # 测试字符串包含独立单词"unsafe" + result = get_unsafe_words(ac, 'This is unsafe.') + print('result:', result) + self.assertEqual(len(result), 0) + + result = get_unsafe_words(ac, 'Contains unsafesword') + self.assertEqual(len(result), 0) + + result = get_unsafe_words(ac, 'Contains realunsafe') + self.assertEqual(len(result), 0) + + @patch('llm_web_kit.model.unsafe_words_detector.get_ac') + def test_get_unsafe_words_checker(self, mock_get_ac): + mock_get_ac.return_value = MagicMock() + checker1 = get_unsafe_words_checker('zh-en') + checker2 = get_unsafe_words_checker('zh-en') + self.assertIs(checker1, checker2) # Should return the same instance + + @patch('llm_web_kit.model.unsafe_words_detector.load_config') + @patch('llm_web_kit.model.unsafe_words_detector.download_auto_file') + def test_auto_download(self, mock_download_auto_file, mock_load_config): + mock_load_config.return_value = { + 'resources': { + 'common': { + 'cache_path': '/fake/path', + }, + 'unsafe_words': { + 'download_path': 'http://fake.url/unsafe_words.jsonl', + 'md5': 'fake_md5', + }, + 'xyz_internal_unsafe_words': { + 'download_path': 'http://fake.url/xyz_internal_unsafe_words.jsonl', + 'md5': 'fake_md5', + }, + } + } + # download_auto_file 无返回值,仅负责下载文件到指定路径 + mock_download_auto_file.return_value = '/fake/path/unsafe_words' + + # 调用被测试函数 + with self.assertRaises(SafeModelException): + auto_download(language='unknown') + mock_load_config.assert_called_once() + auto_download(language='xyz') + result = auto_download(language='zh-en') + # 预期的返回路径 + expected_local_path = '/fake/path/unsafe_words' + + # 验证返回值 + self.assertEqual(result, expected_local_path) + + @patch('llm_web_kit.model.unsafe_words_detector.auto_download') + @patch('builtins.open', new_callable=mock_open, read_data='{"word": "test", "type": "涉政", "level": "L3", "language": "zh"}\n{"word": "unsafe&&&word", "type": "敏感", "level": "L2", "language": "en"}\n{"word": "123", "type": "数字", "level": "L1", "language": "zh"}\n{"word": "abcd", "type": "短词", "level": "L1", "language": "en"}\n{"word": "", "type": "空", "level": "L1", "language": "zh"}\n') + def test_get_ac_success(self, mock_file, mock_auto_download): + # 模拟 auto_download 返回假路径 + mock_auto_download.return_value = '/fake/path/unsafe_words.jsonl' + + # 调用 get_ac + ac = get_ac(language='zh-en') + mock_file.assert_called_once_with('/fake/path/unsafe_words.jsonl','r') + handle = mock_file() + lines = handle.readlines() + self.assertEqual(len(lines), 5) + print('lines:',lines) + + # 查看ac内容 + for word, w_info_lst in ac.items(): + print('单词:', word) + print('关联信息:', w_info_lst) + + # 验证 AC 自动机包含预期的词条 + self.assertFalse('test' in ac) # 'test' 应包含 + self.assertTrue('unsafe' in ac) # 'unsafe&&&word' 的子词 + self.assertTrue('word' in ac) # 'unsafe&&&word' 的子词 + self.assertTrue('123' in ac) # 非纯英文词,保留但需验证逻辑 + self.assertFalse('abcd' in ac) # 纯英文且 <= 4,应跳过 + self.assertFalse('' in ac) # 空词,应跳过 + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/llm_web_kit/pipeline/assets/ebook_pipe_normal.jsonc b/tests/llm_web_kit/pipeline/assets/ebook_pipe_normal.jsonc deleted file mode 100644 index 9ea73062..00000000 --- a/tests/llm_web_kit/pipeline/assets/ebook_pipe_normal.jsonc +++ /dev/null @@ -1,60 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/ebook/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.ebook.formatter.EBOOKFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": true, //如果不写,默认就是true - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.pre_extractor.EBOOKFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.extractor.EBOOKFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.ebook.post_extractor.EBOOKFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/tests/llm_web_kit/pipeline/assets/html_pipe_normal.jsonc b/tests/llm_web_kit/pipeline/assets/html_pipe_normal.jsonc deleted file mode 100644 index ea8515f9..00000000 --- a/tests/llm_web_kit/pipeline/assets/html_pipe_normal.jsonc +++ /dev/null @@ -1,60 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/html/v002/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.html.formatter.HTMLFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": true, //如果不写,默认就是true - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.pre_extractor.HTMLFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.extractor.HTMLFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": false, - "python_class": "llm_web_kit.pipeline.extractor.html.post_extractor.HTMLFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/tests/llm_web_kit/pipeline/assets/md_pipe_normal.jsonc b/tests/llm_web_kit/pipeline/assets/md_pipe_normal.jsonc deleted file mode 100644 index 528060c3..00000000 --- a/tests/llm_web_kit/pipeline/assets/md_pipe_normal.jsonc +++ /dev/null @@ -1,60 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/md/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.md.formatter.MDFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": true, //如果不写,默认就是true - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.pre_extractor.MDFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.extractor.MDFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.md.post_extractor.MDFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/tests/llm_web_kit/pipeline/assets/pdf_pipe_normal.jsonc b/tests/llm_web_kit/pipeline/assets/pdf_pipe_normal.jsonc deleted file mode 100644 index 3fc9c730..00000000 --- a/tests/llm_web_kit/pipeline/assets/pdf_pipe_normal.jsonc +++ /dev/null @@ -1,60 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/pdf/v002/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.pdf.formatter.PDFFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": true, //如果不写,默认就是true - "pre_extractor": [ - { - "enable": false, - "python_class": "llm_web_kit.pipeline.extractor.pdf.pre_extractor.PDFFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.pdf.extractor.PDFFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.pdf.post_extractor.PDFFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html_data_input.jsonl b/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html_data_input.jsonl deleted file mode 100644 index 1efe87b6..00000000 --- a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html_data_input.jsonl +++ /dev/null @@ -1,11 +0,0 @@ -{"track_id": "f7b3b1b4-0b1b", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"1.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "stackoverflow_math", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"math.stackoverflow.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "mathlab_code", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"matlab_code.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "educba_com_list", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"list_parse.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "chemaxon", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"code_mix_in_list.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "mobile-utopia", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"pre_code_mixed.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "image-without-path", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"image_without_path.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "csdn-lineno", "dataset_name": "test_pipeline_suit", "url": "https://www.cnblogs.com/xu-tao/p/16324793.html","data_source_category": "HTML", "path":"csdn_lineno.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "rfc-doc", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"doc.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "legato_doc", "dataset_name": "test_pipeline_suit", "url": "https://www.test.com","data_source_category": "HTML", "path":"legato_docs.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} -{"track_id": "oracle_doc", "dataset_name": "test_pipeline_suit", "url": "https://docs.oracle.com/en-us/iaas/tools/java/3.57.1/com/oracle/bmc/integration/model/CustomEndpointDetails.html","data_source_category": "HTML", "path":"oracle_doc.html", "file_bytes": 1000, "meta_info": {"input_datetime": "2020-01-01 00:00:00"}} diff --git a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/html_pipeline_formatter_disable.jsonc b/tests/llm_web_kit/pipeline/assets/pipline_suit_input/html_pipeline_formatter_disable.jsonc deleted file mode 100644 index 94518c53..00000000 --- a/tests/llm_web_kit/pipeline/assets/pipline_suit_input/html_pipeline_formatter_disable.jsonc +++ /dev/null @@ -1,66 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "test_pipeline_suit", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": false, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/html/v002/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.html.formatter.HTMLFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": false, //是否校验输入格式,默认是true, 这里设置为false,这样非标准DataJson就可以传入 - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.pre_extractor.TestHTMLFileFormatFilterPreExtractor", - "class_init_kwargs": { - "html_parent_dir": "tests/llm_web_kit/pipeline/assets/pipline_suit_input/good_data/html/" - } - }, - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.pre_extractor.HTMLFileFormatFilterTablePreExtractor" - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.extractor.HTMLFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.html.post_extractor.HTMLStripSpacePostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/assets/txt_pipe_normal.jsonc b/tests/llm_web_kit/pipeline/assets/txt_pipe_normal.jsonc deleted file mode 100644 index f534e345..00000000 --- a/tests/llm_web_kit/pipeline/assets/txt_pipe_normal.jsonc +++ /dev/null @@ -1,60 +0,0 @@ -{ - // dataset_name和path_prefix_matcher是二选一,如果都出现了,那么以path_prefix_matcher为准 - "dataset_name": "news", //数据集名称 - "enable": true, //是否跳过这个数据集 - - "formatter_pipe": { - "enable": true, //是否启用raw_data_format这个步骤 - "debug": false, //如果开启debug模式,则不会缓存任何数据,所有持久化操作都会被忽略 - "raw_input_data_path": [ - "s3://llm-raw-input/bbc/v001/", - "s3://llm-raw-input/cctv/v001/" - ], - "formatted_raw_input_data_output_path": "s3://llm-raw-output/txt/v001/", // 对raw_input_data_path里的数据进行格式化之后的数据存放路径 - "formatter": [{ - "enable": true, - "python_class": "llm_web_kit.pipeline.formatter.txt.formatter.TXTFormatter", - "class_init_kwargs":{} - }] - }, - - "extractor_pipe": { //每个子key里的处理器都是有序的,顺序执行 - "enable": true, - "validate_input_format": true, //如果不写,默认就是true - "pre_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.pre_extractor.TXTFileFormatFilterPreExtractor", - "class_init_kwargs": {} - } - ], - "extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.extractor.TXTFileFormatExtractor", - "class_init_kwargs": {} - } - ], - "post_extractor": [ - { - "enable": true, - "python_class": "llm_web_kit.pipeline.extractor.txt.post_extractor.TXTFileFormatPostExtractor" - } - ] - }, - - "content_safe_pipe": { - "enable": true, - "processor": [ - { - "enable": true, - "python_class": "llm_web_kit.model.WebChecker", - "kwargs": {} - }, //自定义的处理程序 - { - "enable": true, - "python_class": "llm_web_kit.model.BooksChecker" - } //是否根据文件格式进行处理 - ] - } -} diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html b/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html deleted file mode 100644 index 51a671d6..00000000 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/ccmath/mathjax-mml-chtml_1.html +++ /dev/null @@ -1,8 +0,0 @@ -x=\frac{-b±\sqrt{{b}^{2}-4ac}}{2a}\text{.} -\begin{array}{rl}\stackrel{˙}{x}& =\sigma \left(y-x\right)\\ \stackrel{˙}{y}& =\rho x-y-xz\\ \stackrel{˙}{z}& =-\beta z+xy\end{array} -{\left(\sum _{k=1}^{n}{a}_{k}{b}_{k}\right)}^{\phantom{\rule{negativethinmathspace}{0ex}}\phantom{\rule{negativethinmathspace}{0ex}}2}\le \left(\sum _{k=1}^{n}{a}_{k}^{2}\right)\left(\sum _{k=1}^{n}{b}_{k}^{2}\right) -{\mathbf{V}}_{1}×{\mathbf{V}}_{2}=|\begin{array}{ccc}\mathbf{i}& \mathbf{j}& \mathbf{k}\\ \frac{\mathrm{\partial }X}{\mathrm{\partial }u}& \frac{\mathrm{\partial }Y}{\mathrm{\partial }u}& 0\\ \frac{\mathrm{\partial }X}{\mathrm{\partial }v}& \frac{\mathrm{\partial }Y}{\mathrm{\partial }v}& 0\end{array}| -P\left(E\right)=\left(\genfrac{}{}{0}{}{n}{k}\right){p}^{k}\left(1-p{\right)}^{n-k} -\frac{1}{\left(\sqrt{\varphi \sqrt{5}}-\varphi \right){e}^{\frac{2}{5}\pi }}=1+\frac{{e}^{-2\pi }}{1+\frac{{e}^{-4\pi }}{1+\frac{{e}^{-6\pi }}{1+\frac{{e}^{-8\pi }}{1+\dots }}}} -1+\frac{{q}^{2}}{\left(1-q\right)}+\frac{{q}^{6}}{\left(1-q\right)\left(1-{q}^{2}\right)}+\cdots =\prod _{j=0}^{\mathrm{\infty }}\frac{1}{\left(1-{q}^{5j+2}\right)\left(1-{q}^{5j+3}\right)},\phantom{\rule{1em}{0ex}}\phantom{\rule{1em}{0ex}}\text{for }|q|<1. -\begin{array}{rl}\mathrm{\nabla }×\stackrel{\to }{\mathbf{B}}-\phantom{\rule{thinmathspace}{0ex}}\frac{1}{c}\phantom{\rule{thinmathspace}{0ex}}\frac{\mathrm{\partial }\stackrel{\to }{\mathbf{E}}}{\mathrm{\partial }t}& =\frac{4\pi }{c}\stackrel{\to }{\mathbf{j}}\\ \mathrm{\nabla }\cdot \stackrel{\to }{\mathbf{E}}& =4\pi \rho \\ \mathrm{\nabla }×\stackrel{\to }{\mathbf{E}}\phantom{\rule{thinmathspace}{0ex}}+\phantom{\rule{thinmathspace}{0ex}}\frac{1}{c}\phantom{\rule{thinmathspace}{0ex}}\frac{\mathrm{\partial }\stackrel{\to }{\mathbf{B}}}{\mathrm{\partial }t}& =\stackrel{\to }{\mathbf{0}}\\ \mathrm{\nabla }\cdot \stackrel{\to }{\mathbf{B}}& =0\end{array} diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_simple_cc.html b/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_simple_cc.html deleted file mode 100644 index 6e0869df..00000000 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_simple_cc.html +++ /dev/null @@ -1 +0,0 @@ - "html_source": "\n\n\n\n\n\t\n\t\n\t\n\t\n\n\t\n\tMiaflow крем для лица: купить в Северске, цены в интернет-аптеке - 1bad.ru\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\n\n\n\n\n\n
                                                                                  \n\t\t\t\t\t\n\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\n
                                                                                  Выберите свой город:
                                                                                  \n
                                                                                  \n\n
                                                                                  \n
                                                                                  Выберите из списка:
                                                                                  \n
                                                                                    \n
                                                                                  • Абакан
                                                                                  • \n
                                                                                  • Ачинск
                                                                                  • \n
                                                                                  • Альметьевск
                                                                                  • \n
                                                                                  • Ангарск
                                                                                  • \n
                                                                                  • Архангельск
                                                                                  • \n
                                                                                  • Армавир
                                                                                  • \n
                                                                                  • Артём
                                                                                  • \n
                                                                                  • Арзамас
                                                                                  • \n
                                                                                  • Астрахань
                                                                                  • \n
                                                                                  • Балаково
                                                                                  • \n
                                                                                  • Балашиха
                                                                                  • \n
                                                                                  • Барнаул
                                                                                  • \n
                                                                                  • Батайск
                                                                                  • \n
                                                                                  • Белгород
                                                                                  • \n
                                                                                  • Бердск
                                                                                  • \n
                                                                                  • Березники
                                                                                  • \n
                                                                                  • Бийск
                                                                                  • \n
                                                                                  • Благовещенск
                                                                                  • \n
                                                                                  • Братск
                                                                                  • \n
                                                                                  • Брянск
                                                                                  • \n
                                                                                  • Чебоксары
                                                                                  • \n
                                                                                  • Челябинск
                                                                                  • \n
                                                                                  • Череповец
                                                                                  • \n
                                                                                  • Черкесск
                                                                                  • \n
                                                                                  • Чита
                                                                                  • \n
                                                                                  • Дербент
                                                                                  • \n
                                                                                  • Димитровград
                                                                                  • \n
                                                                                  • Долгопрудный
                                                                                  • \n
                                                                                  • Домодедово
                                                                                  • \n
                                                                                  • Дзержинск
                                                                                  • \n
                                                                                  • Екатеринбург
                                                                                  • \n
                                                                                  • Елец
                                                                                  • \n
                                                                                  • Электросталь
                                                                                  • \n
                                                                                  • Элиста
                                                                                  • \n
                                                                                  • Энгельс
                                                                                  • \n
                                                                                  • Ессентуки
                                                                                  • \n
                                                                                  • Евпатория
                                                                                  • \n
                                                                                  • Грозный
                                                                                  • \n
                                                                                  • Хабаровск
                                                                                  • \n
                                                                                  • Хасавюрт
                                                                                  • \n
                                                                                  • Химки
                                                                                  • \n
                                                                                  • Иркутск
                                                                                  • \n
                                                                                  • Иваново
                                                                                  • \n
                                                                                  • Ижевск
                                                                                  • \n
                                                                                  • Йошкар-Ола
                                                                                  • \n
                                                                                  • Калининград
                                                                                  • \n
                                                                                  • Калуга
                                                                                  • \n
                                                                                  • Каменск-Уральский
                                                                                  • \n
                                                                                  • Камышин
                                                                                  • \n
                                                                                  • Каспийск
                                                                                  • \n
                                                                                  • Казань
                                                                                  • \n
                                                                                  • Кемерово
                                                                                  • \n
                                                                                  • Керчь
                                                                                  • \n
                                                                                  • Киров
                                                                                  • \n
                                                                                  • Кисловодск
                                                                                  • \n
                                                                                  • Коломна
                                                                                  • \n
                                                                                  • Комсомольск-на-Амуре
                                                                                  • \n
                                                                                  • Копейск
                                                                                  • \n
                                                                                  • Королёв
                                                                                  • \n
                                                                                  • Кострома
                                                                                  • \n
                                                                                  • Ковров
                                                                                  • \n
                                                                                  • Краснодар
                                                                                  • \n
                                                                                  • Красногорск
                                                                                  • \n
                                                                                  • Красноярск
                                                                                  • \n
                                                                                  • Курган
                                                                                  • \n
                                                                                  • Курск
                                                                                  • \n
                                                                                  • Кызыл
                                                                                  • \n
                                                                                  • Липецк
                                                                                  • \n
                                                                                  • Люберцы
                                                                                  • \n
                                                                                  • Магнитогорск
                                                                                  • \n
                                                                                  • Махачкала
                                                                                  • \n
                                                                                  • Майкоп
                                                                                  • \n
                                                                                  • Миасс
                                                                                  • \n
                                                                                  • Мурманск
                                                                                  • \n
                                                                                  • Муром
                                                                                  • \n
                                                                                  • Мытищи
                                                                                  • \n
                                                                                  • Набережные Челны
                                                                                  • \n
                                                                                  • Находка
                                                                                  • \n
                                                                                  • Нальчик
                                                                                  • \n
                                                                                  • Назрань
                                                                                  • \n
                                                                                  • Нефтекамск
                                                                                  • \n
                                                                                  • Нефтеюганск
                                                                                  • \n
                                                                                  • Невинномысск
                                                                                  • \n
                                                                                  • Нижнекамск
                                                                                  • \n
                                                                                  • Нижневартовск
                                                                                  • \n
                                                                                  • Нижний Новгород
                                                                                  • \n
                                                                                  • Нижний Тагил
                                                                                  • \n
                                                                                  • Ногинск
                                                                                  • \n
                                                                                  • Норильск
                                                                                  • \n
                                                                                  • Новочебоксарск
                                                                                  • \n
                                                                                  • Новочеркасск
                                                                                  • \n
                                                                                  • Новокуйбышевск
                                                                                  • \n
                                                                                  • Новокузнецк
                                                                                  • \n
                                                                                  • Новомосковск
                                                                                  • \n
                                                                                  • Новороссийск
                                                                                  • \n
                                                                                  • Новошахтинск
                                                                                  • \n
                                                                                  • Новосибирск
                                                                                  • \n
                                                                                  • Новый Уренгой
                                                                                  • \n
                                                                                  • Ноябрьск
                                                                                  • \n
                                                                                  • Обнинск
                                                                                  • \n
                                                                                  • Одинцово
                                                                                  • \n
                                                                                  • Октябрьский
                                                                                  • \n
                                                                                  • Омск
                                                                                  • \n
                                                                                  • Орехово-Зуево
                                                                                  • \n
                                                                                  • Оренбург
                                                                                  • \n
                                                                                  • Орск
                                                                                  • \n
                                                                                  • Орёл
                                                                                  • \n
                                                                                  • Пенза
                                                                                  • \n
                                                                                  • Пермь
                                                                                  • \n
                                                                                  • Первоуральск
                                                                                  • \n
                                                                                  • Петропавловск-Камчатский
                                                                                  • \n
                                                                                  • Петрозаводск
                                                                                  • \n
                                                                                  • Подольск
                                                                                  • \n
                                                                                  • Прокопьевск
                                                                                  • \n
                                                                                  • Псков
                                                                                  • \n
                                                                                  • Пушкино
                                                                                  • \n
                                                                                  • Пятигорск
                                                                                  • \n
                                                                                  • Раменское
                                                                                  • \n
                                                                                  • Реутов
                                                                                  • \n
                                                                                  • Ростов-на-Дону
                                                                                  • \n
                                                                                  • Рубцовск
                                                                                  • \n
                                                                                  • Рязань
                                                                                  • \n
                                                                                  • Рыбинск
                                                                                  • \n
                                                                                  • Салават
                                                                                  • \n
                                                                                  • Самара
                                                                                  • \n
                                                                                  • Санкт-Петербург
                                                                                  • \n
                                                                                  • Саранск
                                                                                  • \n
                                                                                  • Саратов
                                                                                  • \n
                                                                                  • Сергиев Посад
                                                                                  • \n
                                                                                  • Серпухов
                                                                                  • \n
                                                                                  • Севастополь
                                                                                  • \n
                                                                                  • Северодвинск
                                                                                  • \n
                                                                                  • Северск
                                                                                  • \n
                                                                                  • Шахты
                                                                                  • \n
                                                                                  • Щёлково
                                                                                  • \n
                                                                                  • Симферополь
                                                                                  • \n
                                                                                  • Смоленск
                                                                                  • \n
                                                                                  • Сочи
                                                                                  • \n
                                                                                  • Старый Оскол
                                                                                  • \n
                                                                                  • Ставрополь
                                                                                  • \n
                                                                                  • Стерлитамак
                                                                                  • \n
                                                                                  • Сургут
                                                                                  • \n
                                                                                  • Сыктывкар
                                                                                  • \n
                                                                                  • Сызрань
                                                                                  • \n
                                                                                  • Таганрог
                                                                                  • \n
                                                                                  • Тамбов
                                                                                  • \n
                                                                                  • Тольятти
                                                                                  • \n
                                                                                  • Томск
                                                                                  • \n
                                                                                  • Тула
                                                                                  • \n
                                                                                  • Тверь
                                                                                  • \n
                                                                                  • Тюмень
                                                                                  • \n
                                                                                  • Уфа
                                                                                  • \n
                                                                                  • Улан-Удэ
                                                                                  • \n
                                                                                  • Ульяновск
                                                                                  • \n
                                                                                  • Уссурийск
                                                                                  • \n
                                                                                  • Великий Новгород
                                                                                  • \n
                                                                                  • Владикавказ
                                                                                  • \n
                                                                                  • Владимир
                                                                                  • \n
                                                                                  • Владивосток
                                                                                  • \n
                                                                                  • Волгодонск
                                                                                  • \n
                                                                                  • Волгоград
                                                                                  • \n
                                                                                  • Вологда
                                                                                  • \n
                                                                                  • Волжский
                                                                                  • \n
                                                                                  • Воронеж
                                                                                  • \n
                                                                                  • Якутск
                                                                                  • \n
                                                                                  • Ярославль
                                                                                  • \n
                                                                                  • Южно-Сахалинск
                                                                                  • \n
                                                                                  • Жуковский
                                                                                  • \n
                                                                                  • Златоуст
                                                                                  • \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n
                                                                                  \n\n\n\n
                                                                                  \n
                                                                                  Не нашли свой город?
                                                                                  \n \n
                                                                                  \n\n
                                                                                  \n\t\n\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\tHot line8 800 752 18 22\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \t\t\n\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\n\t\t\t\t2\n\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\n\t\t\t\n\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\n
                                                                                  \n
                                                                                  \n\n\t\t\n\t
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t
                                                                                  \t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\n
                                                                                  \t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  Miaflow в Северске

                                                                                  \n
                                                                                  \n\t
                                                                                  \n\t\t
                                                                                  Рейтинг 5.00 из 5 на основе опроса 3 пользователей
                                                                                  \t\t\t\t\t\t\t\t(3 отзыва клиентов)\n\t\t\t\t\t\t
                                                                                  \n\t
                                                                                    В наличии
                                                                                  \n
                                                                                  \n\t\t\t
                                                                                  \n\t
                                                                                  84 
                                                                                  \n\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n\t

                                                                                  Miaflow — это инновационный крем для омоложения лица, разработанный с использованием передовых технологий. Его уникальная формула, насыщенная ценными компонентами природы, обеспечивает интенсивный уход за кожей, возвращая ей молодость и сияние.

                                                                                  \n
                                                                                  \n\t\t\t\t
                                                                                  Заказать
                                                                                  \n\n
                                                                                  \n\n\t\n\t\n\tКатегория: Препараты для омоложения\n\t\n\t\n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n

                                                                                  * Не является лекарственным средством

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Оплата\"\n
                                                                                  \n

                                                                                  Оплата:

                                                                                  \n

                                                                                  при получении, наличными или банковской картой

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n \"Доставка\"\n
                                                                                  \n

                                                                                  Доставка в Северске:

                                                                                  \n

                                                                                  1 - 7 дней, почтой или транспортными компаниями

                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  Поделиться: 
                                                                                  \t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\t\n
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\t\n\t\t\t\n\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  Заказать\n\t\t\tMiaflow\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t

                                                                                  Преимущества

                                                                                  \n
                                                                                    \n
                                                                                  • Уменьшение морщин и линий
                                                                                  • \n
                                                                                  • Повышение упругости и эластичности кожи
                                                                                  • \n
                                                                                  • Омолаживающий эффект с первого применения
                                                                                  • \n
                                                                                  • Защита от вредного воздействия окружающей среды
                                                                                  • \n
                                                                                  • Глубокое увлажнение и питание
                                                                                  • \n
                                                                                  \n

                                                                                  Принцип действия Miaflow

                                                                                  \n

                                                                                  Miaflow активирует естественные процессы обновления кожи, восстанавливая ее структуру и придавая заметный лифтинг-эффект. Это достигается благодаря уникальной комбинации активных ингредиентов.

                                                                                  \n

                                                                                  Состав Miaflow:

                                                                                  \n
                                                                                    \n
                                                                                  1. Концентрат пантов алтайского марала: Стимулирует обновление клеток, укрепляет структуру кожи.
                                                                                  2. \n
                                                                                  3. Концентрат трепанга: Обеспечивает увлажнение и смягчение, борется с признаками усталости.
                                                                                  4. \n
                                                                                  5. Каменное масло: Питает и улучшает тонус кожи.
                                                                                  6. \n
                                                                                  7. Живица кедровая и лиственничная: Прекрасные антисептики, поддерживают чистоту пор, способствуют заживлению.
                                                                                  8. \n
                                                                                  9. Эфирные масла кедра, тыквы, конопли, пихты, облепихи, чайного дерева, гвоздики: Обеспечивают ароматерапевтический эффект и усиливают регенерацию кожи.
                                                                                  10. \n
                                                                                  \n

                                                                                  Клинические исследования

                                                                                  \n

                                                                                  Проведенные исследования показали, что более 90% участников заметили улучшение состояния кожи после использования Miaflow. Восстановление упругости, сокращение морщин, и природное сияние — вот результаты, подтвержденные клинически.

                                                                                  \n

                                                                                  Показания к применению

                                                                                  \n
                                                                                    \n
                                                                                  • Сухая и увядающая кожа
                                                                                  • \n
                                                                                  • Первые признаки старения
                                                                                  • \n
                                                                                  • Потеря упругости и эластичности
                                                                                  • \n
                                                                                  \n

                                                                                  Способ применения Miaflow

                                                                                  \n

                                                                                  Наносите крем на чистую кожу лица и шеи массажными движениями до полного впитывания. Используйте утром и вечером для достижения максимального эффекта.

                                                                                  \n

                                                                                  Противопоказания Miaflow

                                                                                  \n

                                                                                  Не рекомендуется использовать при индивидуальной непереносимости к компонентам. Перед применением рекомендуется провести тест на небольшом участке кожи. В случае раздражения прекратите использование.

                                                                                  \n\t\t\t\t\t\t\t\t

                                                                                  Где купить Miaflow?

                                                                                  \n

                                                                                  Miaflow не продается в обычных аптеках в Северске и других регионах России. Однако, вы можете купить его у нас на сайте по выгодной цене 84  с удобной доставкой. Успешно достигните своих целей с данным средством!

                                                                                  \n\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t \n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  Рейтинг:
                                                                                  Рейтинг 5.00 из 5 на основе опроса 3 пользователей
                                                                                  Тип товара: Препараты для омоложения
                                                                                  Форма:Крем
                                                                                  Объем:50 мл
                                                                                  Рецепт:Отпускается без рецепта
                                                                                  Способ хранения:Хранить при температуре 4-20°
                                                                                  Примечание:Беречь от детей
                                                                                  Оплата:Наличными/банковской картой
                                                                                  Доступность в Северске:В наличии
                                                                                  Доставка:2-7 Дней
                                                                                  Цена:84 
                                                                                  \n
                                                                                  \n\t\t\t\t\t\t\t\\n\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t
                                                                                  \n\t\t

                                                                                  3 отзывов о Miaflow

                                                                                  \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                  1. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЕлена Евстегнеева \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Моя кожа претерпела настоящую революцию с Miaflow! Уже через неделю заметила, как морщины стали менее заметными, а цвет лица стал более ровным. Крем приятно наносится, быстро впитывается, и самое главное — результат на лице!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  2. \n
                                                                                  3. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЕрмаков Иван \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Совершенно случайно попробовал, и теперь я не могу себе представить свой уход без него. Кожа стала более упругой, а яркие следы усталости просто исчезли. Отличный продукт, с которым я чувствую себя настоящим джентльменом!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  4. \n
                                                                                  5. \n\t
                                                                                    \n\t\t
                                                                                    \n\n\t\t\t\n\t\t\t
                                                                                    \n\n\t\t\t\t
                                                                                    Оценка 5 из 5
                                                                                    \n\t

                                                                                    \n\t\tЦветкова Ксения \n\t\t\t\t \n\t

                                                                                    \n\n\t\n\t\t\t
                                                                                    \n\t\t
                                                                                    \n\t\t

                                                                                    Мне было сложно найти подходящий уход для кожи после 50, но этот крем превзошел все мои ожидания! Мои друзья даже спрашивают, что я делаю, чтобы выглядеть так молодо. Этот крем — настоящее волшебство для кожи, и я рекомендую его каждой женщине!

                                                                                    \n
                                                                                    \t
                                                                                    \n
                                                                                  6. \n\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t

                                                                                  Средний рейтинг

                                                                                  \n\t\t\t\t\t\t

                                                                                  5.00

                                                                                  \n\t\t\t\t\t\t
                                                                                  Оценка 5.00 из 5
                                                                                  \t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t3 Отзыв\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  5
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  100%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  4
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  3
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  2
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  1
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  0%
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\tНапишите отзыв

                                                                                  Ваш адрес email не будет опубликован. Обязательные поля помечены *

                                                                                  \n

                                                                                  \n

                                                                                  \n\n

                                                                                  \t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t
                                                                                  \n
                                                                                  \t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t\n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \"Miaflow\"
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tMiaflow\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t84 ₽\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n


                                                                                  \n

                                                                                  \n

                                                                                  Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                  \n


                                                                                  \n

                                                                                  \n
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\tMiaflow\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t84 ₽\n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t\t
                                                                                  \"Miaflow\"
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t\t
                                                                                  \n
                                                                                  \n
                                                                                  \n
                                                                                  \n\n\n\n\n\n
                                                                                  \n


                                                                                  \n

                                                                                  \n

                                                                                  Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                  \n


                                                                                  \n

                                                                                  \n
                                                                                  \t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\n\t\t
                                                                                  \n\n\t
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n
                                                                                  \n\n\n\n\t
                                                                                  \n\n\t\t\t\t\t

                                                                                  Сопутствующие товары

                                                                                  \n\t\t\t\t\n\t\t
                                                                                    \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t
                                                                                    -25%
                                                                                    \t\t\t
                                                                                    \n\"Venzen\"\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t1,990  1,490 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tVenzen\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t1490 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Venzen\"\n\t\t\t\t\t\t\t\t\tsrc=\"https://1bad.ru/wp-content/uploads/2022/09/venzen.jpg
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Night\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t149 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tNight Miracle\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t149.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Night
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Молодильный\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t149 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tМолодильный спас\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t149.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Молодильный
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t\t\t\t
                                                                                  • \n\t\t
                                                                                    \n\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t\n\t\t\t
                                                                                    \n\"Zenza\t\t
                                                                                    \n\t\t\t
                                                                                    Quick View \t\t
                                                                                    \n\t\t\t
                                                                                    \n\t
                                                                                    \n\t\t
                                                                                    \n\t\t\t
                                                                                    \n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\n
                                                                                    Оценка 5.00 из 5
                                                                                    \n\n\t147 \n\n
                                                                                    Заказать\n
                                                                                    \n\n\n
                                                                                    \n\t\t\t
                                                                                    \n
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\tZenza Cream\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t\t147.00 ₽\n\t\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t\t
                                                                                    \"Zenza
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t\t\t
                                                                                    \n
                                                                                    \n
                                                                                    \n
                                                                                    \n\n\n\n\n\n
                                                                                    \n


                                                                                    \n

                                                                                    \n

                                                                                    Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности.

                                                                                    \n


                                                                                    \n

                                                                                    \n
                                                                                    \n\t\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                    \n\t\t\t
                                                                                    \n\n
                                                                                    \n\t\t
                                                                                    \n\t
                                                                                    \n
                                                                                    \n
                                                                                  • \n\t\t\t\n\t\t
                                                                                  \n\t
                                                                                  \n\t\t\n
                                                                                  \n\t\t\t\t\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \t\t\t\t\t
                                                                                  \n\t
                                                                                  \n
                                                                                  \n
                                                                                  \t\n\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\tЧто Вы ищете?\n\t\t\t\t
                                                                                  Закрыть
                                                                                  \n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\n\t\t
                                                                                  \n\t\t\t\n\t\t\t\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                    \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t\t\n\t
                                                                                  \n\t\t\n\t\t
                                                                                  \t\n\t
                                                                                  \n\n\n
                                                                                  \n\n\t
                                                                                  \n\t\t
                                                                                  \n\n\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t

                                                                                  Вся информация на сайте - справочная. Перед применением лекарственных препаратов проконсультируйтесь с врачом. Дистанционная продажа БАД и лекарственных средств не осуществляется.

                                                                                  \n\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
                                                                                  \n\n\t\t\t\t\t\t

                                                                                  © 2023 1bad.ru 18+. Все права защищены.

                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\n\t\t\t\t\t
                                                                                  \n\t\t\t\t\t\t

                                                                                  Адрес: г. Северск, ул. Курчатова, 11a

                                                                                  \n\t\t\t\t\t\t

                                                                                  Телефон: 8 800 752 18 22

                                                                                  \n\t\t\t\t\t\t

                                                                                  Почта: seversk@1bad.ru

                                                                                  \n\t\t\t\t\t
                                                                                  \n\t\t\t\t
                                                                                  \n\t\t\t
                                                                                  \n\t\t
                                                                                  \n\t
                                                                                  \n\n
                                                                                  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\n\t\t\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                    \r\n
                                                                                  • \r\n
                                                                                  • \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\t\tSelect the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
                                                                                    \r\n\t\t\t\t\t\t\t\t\t\t\t
                                                                                  • Image
                                                                                  • SKU
                                                                                  • Rating
                                                                                  • Price
                                                                                  • Stock
                                                                                  • Availability
                                                                                  • Add to cart
                                                                                  • Description
                                                                                  • Content
                                                                                  • Weight
                                                                                  • Dimensions
                                                                                  • Additional information
                                                                                  • Attributes
                                                                                  • Custom attributes
                                                                                  • Custom fields
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t
                                                                                  \r\n\t\t\t\t\t\t\t\t\t\tClick outside to hide the compare bar
                                                                                  \r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t\t\t\t\tCompare
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Compare\r\n \r\n × \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n Let's Compare!\r\n Continue shopping\r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n
                                                                                  \r\n\t\t\t\t\t
                                                                                  \n\n\n\n\n\t\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json b/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json deleted file mode 100644 index 95ee95be..00000000 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/assets/recognizer/table_to_content_list_simple_res.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "table", "raw_content": "<table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table>1234", "content": {"html": "
                                                                                  12
                                                                                  34
                                                                                  ", "is_complex": false}} \ No newline at end of file diff --git a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_table.py b/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_table.py deleted file mode 100644 index ab3712d0..00000000 --- a/tests/llm_web_kit/pipeline/extractor/html/recognizer/test_table.py +++ /dev/null @@ -1,164 +0,0 @@ -import json -import unittest -from pathlib import Path - -from llm_web_kit.libs.html_utils import html_to_element -from llm_web_kit.pipeline.extractor.html.recognizer.recognizer import CCTag -from llm_web_kit.pipeline.extractor.html.recognizer.table import \ - TableRecognizer - -TEST_CASES = [ - { - 'input': ( - 'assets/recognizer/table.html', - 'assets/recognizer/table_exclude.html', - 'assets/recognizer/only_table.html', - 'assets/recognizer/table_simple_compex.html', - 'assets/recognizer/table_to_content_list_simple.html', - 'assets/recognizer/table_to_content_list_complex.html', - 'assets/recognizer/table_include_image.html', - 'assets/recognizer/table_simple_cc.html', - 'assets/recognizer/table_include_rowspan_colspan.html', - 'assets/recognizer/table_involve_equation.html', - 'assets/recognizer/table_include_after_code.html' - - ), - 'expected': [ - ('assets/recognizer/table_to_content_list_simple_res.json'), - ('assets/recognizer/table_to_content_list_complex_res.json'), - ('assets/recognizer/table_include_image_expcet.json') - ], - } -] - -base_dir = Path(__file__).parent - - -class TestTableRecognizer(unittest.TestCase): - def setUp(self): - self.rec = TableRecognizer() - - def test_involve_cctale(self): - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][0]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text() - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - self.assertEqual(len(parts), 4) - - def test_not_involve_table(self): - """不包含表格.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][1]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - self.assertEqual(len(parts), 1) - - def test_only_involve_table(self): - """只包含表格的Html解析.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][2]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text() - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - self.assertEqual(len(parts), 2) - table_body = html_to_element(parts[1][0]).text_content() - assert table_body == r'
                                                                                  Mrs S Hindle
                                                                                  ShowCCRCC
                                                                                  Driffield 5th October 2006CH. Ricksbury Royal HeroCH. Keyingham Branwell
                                                                                  Manchester 16th January 2008CH. Lochbuie GeordieMerryoth Maeve
                                                                                  Darlington 20th September 2009CH. Maibee Make BelieveCH. Loranka Just Like Heaven JW
                                                                                  Blackpool 22nd June 2012CH. Loranka Sherrie BabyDear Magic Touch De La Fi Au Songeur
                                                                                  Welsh Kennel Club 2014Brymarden Carolina SunriseCh. Wandris Evan Elp Us
                                                                                  Welsh Kennel Club 2014Ch. Charnell Clematis of SalegreenCH. Byermoor Queens Maid
                                                                                  ' - - def test_table_include_img_label(self): - """table是否包含img标签.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][6]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text() - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - assert len(parts) == 3 - simple_table_tag = html_to_element(parts[1][0]).xpath(f'.//{CCTag.CC_TABLE}')[0] - simple_table_type = simple_table_tag.attrib - assert simple_table_type['table_type'] == 'simple' - - def test_cc_simple_table(self): - """cc中简单表格.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][7]) - base_url = test_case['input'][8] - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - assert len(parts) == 3 - content = html_to_element(parts[1][0]).text_content() - assert content == r'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
                                                                                  Рейтинг:Рейтинг<br>5.00<br>из 5 на основе опроса<br>3<br>пользователей
                                                                                  Тип товара:Препараты для омоложения
                                                                                  Форма:Крем
                                                                                  Объем:50 мл
                                                                                  Рецепт:Отпускается без рецепта
                                                                                  Способ хранения:Хранить при температуре 4-20°
                                                                                  Примечание:Беречь от детей
                                                                                  Оплата:Наличными/банковской картой
                                                                                  Доступность в Северске:В наличии
                                                                                  Доставка:2-7 Дней
                                                                                  Цена:84<br>₽
                                                                                  \n' - - def test_cc_complex_table(self): - """cc跨行跨列的表格.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][8]) - base_url = test_case['input'][8] - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - assert len(parts) == 3 - content = html_to_element(parts[1][0]).text_content() - assert content == r'
                                                                                  ফেব্রুয়ারি ২০২৪
                                                                                  সোমমঙ্গলবুধবৃহশুক্রশনিরবি
                                                                                  « জানুয়ারি
                                                                                  ১০১১
                                                                                  ১২১৩১৪১৫১৬১৭১৮
                                                                                  ১৯২০২১২২২৩২৪২৫
                                                                                  ২৬২৭২৮২৯
                                                                                  ' - table_type = html_to_element(parts[1][0]).xpath(f'.//{CCTag.CC_TABLE}')[0] - assert table_type.attrib['table_type'] == 'complex' - - def test_simple_complex_table(self): - """包含简单和复杂table.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][3]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - simple_table_tag = html_to_element(parts[1][0]).xpath(f'.//{CCTag.CC_TABLE}')[0] - simple_table_type = simple_table_tag.attrib - assert simple_table_type['table_type'] == 'simple' - assert simple_table_type == {'table_type': 'simple', 'html': '\n \n \n \n \n \n \n \n \n
                                                                                  12
                                                                                  34
                                                                                  \n\n'} - complex_table_tag = html_to_element(parts[2][0]).xpath(f'.//{CCTag.CC_TABLE}')[0] - complex_table_type = complex_table_tag.attrib - assert complex_table_type['table_type'] == 'complex' - assert complex_table_type == {'table_type': 'complex', 'html': '\n \n \n \n \n \n \n \n \n \n \n \n \n \n
                                                                                  123
                                                                                  4
                                                                                  567
                                                                                  \n '} - - def test_table_to_content_list_node_simple(self): - """测试table的 to content list node方法.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][4]) - base_url = test_case['input'][1] - raw_html = raw_html_path.read_text(encoding='utf-8') - parsed_content = raw_html - result = self.rec.to_content_list_node(base_url, parsed_content, raw_html) - expect = base_dir.joinpath(test_case['expected'][0]) - expect_json = expect.read_text(encoding='utf-8') - assert result['type'] == json.loads(expect_json)['type'] - assert result['content']['is_complex'] == json.loads(expect_json)['content']['is_complex'] - assert result['raw_content'] == json.loads(expect_json)['raw_content'] - self.assertTrue(result['content']['html'].startswith('')) - self.assertTrue(result['content']['html'].endswith('
                                                                                  ')) - - def test_table_to_content_list_node_complex(self): - """测试table的 complex table to content list node方法.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][5]) - expect_path = base_dir.joinpath(test_case['expected'][1]) - raw_html = raw_html_path.read_text(encoding='utf-8') - result = self.rec.to_content_list_node(expect_path, raw_html, raw_html) - fr = open(expect_path, 'r', encoding='utf-8') - expect_result = json.loads(fr.read()) - assert result == expect_result - - def test_table_involve_equation(self): - """involve equation table,待解决嵌套问题.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][9]) - base_url = 'https://en.m.wikipedia.org/wiki/Variance' - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - assert parts is not None - - def test_table_involve_after_code(self): - """test table involve code, code被提取出去了,过滤掉空的和坏的table.""" - for test_case in TEST_CASES: - raw_html_path = base_dir.joinpath(test_case['input'][10]) - base_url = 'https://en.m.wikipedia.org/wiki/Variance' - raw_html = raw_html_path.read_text(encoding='utf-8') - parts = self.rec.recognize(base_url, [(raw_html, raw_html)], raw_html) - assert html_to_element(parts[0][0]).xpath(f'.//{CCTag.CC_TABLE}')[0].text is None diff --git a/tests/llm_web_kit/pipeline/test_pipeline_suit_normal.py b/tests/llm_web_kit/pipeline/test_pipeline_suit_normal.py deleted file mode 100644 index 6965d864..00000000 --- a/tests/llm_web_kit/pipeline/test_pipeline_suit_normal.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -import unittest - -from llm_web_kit.input.datajson import DataJson -from llm_web_kit.pipeline.pipeline_suit import PipelineSuit - - -class TestPipelineSuite(unittest.TestCase): - """Test pipeline.""" - - def test_pipeline_init(self): - """Test pipeline init.""" - # html - pipesuit = PipelineSuit(f'{os.path.dirname(os.path.abspath(__file__))}/assets/html_pipe_normal.jsonc') - self.assertIsNotNone(pipesuit) - input_data = DataJson({'dataset_name': 'news', 'data_source_category': 'html', 'html': '

                                                                                  hello

                                                                                  ', 'url': 'http://www.baidu.com'}) - data: DataJson = pipesuit.format(input_data) - assert data.get_content_list().length() == 0 - assert data.get_dataset_name() == 'news' - assert data.get_file_format() == 'html' - data_e: DataJson = pipesuit.extract(input_data) - assert data_e.get_content_list().length() == 1 - assert data_e.get_dataset_name() == 'news' - assert data_e.get_file_format() == 'html' - - def test_pipeline_pdf(self): - """Test pipeline with PDF input.""" - pipesuit = PipelineSuit(f'{os.path.dirname(os.path.abspath(__file__))}/assets/pdf_pipe_normal.jsonc') - self.assertIsNotNone(pipesuit) - input_data = DataJson({'dataset_name': 'news', 'data_source_category': 'pdf'}) - - # Test format - data: DataJson = pipesuit.format(input_data) - assert data.get_content_list().length() == 0 - assert data.get_dataset_name() == 'news' - assert data.get_file_format() == 'pdf' - - # Test extract - data_e: DataJson = pipesuit.extract(data) - assert data_e.get_content_list().length() == 0 - assert data_e.get_dataset_name() == 'news' - assert data_e.get_file_format() == 'pdf' - - def test_pipeline_ebook(self): - """Test pipeline with ebook input.""" - pipesuit = PipelineSuit(f'{os.path.dirname(os.path.abspath(__file__))}/assets/ebook_pipe_normal.jsonc') - self.assertIsNotNone(pipesuit) - input_data = DataJson({'dataset_name': 'news', 'data_source_category': 'ebook', 'content_list': [[],[]]}) - - # Test format - data: DataJson = pipesuit.format(input_data) - assert data.get_content_list().length() == 2 - assert data.get_dataset_name() == 'news' - assert data.get_file_format() == 'ebook' - - # Test extract - data_e: DataJson = pipesuit.extract(input_data) - assert data_e.get_content_list().length() == 2 - assert data_e.get_dataset_name() == 'news' - assert data_e.get_file_format() == 'ebook' diff --git a/tests/llm_web_kit/test_simple.py b/tests/llm_web_kit/test_simple.py new file mode 100644 index 00000000..dc8ac8ab --- /dev/null +++ b/tests/llm_web_kit/test_simple.py @@ -0,0 +1,19 @@ +import unittest + +from llm_web_kit.simple import extract_html_to_md, extract_html_to_mm_md + + +class TestSimple(unittest.TestCase): + def setUp(self): + self.url = 'https://example.com' + self.html_content = '

                                                                                  Test Content

                                                                                  This is a test paragraph.

                                                                                  Test Image' + + def test_extractor_factory(self): + # Setup mocks + md = extract_html_to_md(self.url, self.html_content) + self.assertEqual(md, '# Test Content\n\nThis is a test paragraph.\n') + + def test_extract_html_to_mm_md(self): + # Setup mock + mm_md = extract_html_to_mm_md(self.url, self.html_content) + self.assertEqual(mm_md, '# Test Content\n\nThis is a test paragraph.\n\n![Test Image]( "")\n') diff --git a/tests/st/test_st.py b/tests/st/test_st.py index ae96dcb1..3a1c09ca 100644 --- a/tests/st/test_st.py +++ b/tests/st/test_st.py @@ -18,10 +18,42 @@ def setUp(self): if str(self.root) not in sys.path: sys.path.insert(0, str(self.root)) - self.sourcePath = os.path.join(self.root, 'bench/data/all.json') self.outputPath = os.path.join(self.root, 'bench/output') - self.pipelineConfigPath = os.path.join(self.root, 'bench/config/ours_config.jsonc') - self.pipeline_data_path = os.path.join(self.root, 'bench/config/ours_data_config.jsonl') + # self.pipelineConfigPath = os.path.join(self.root, 'bench/config/ours_config.jsonc') + self.pipeline_data_path = os.path.join(self.root, 'bench/config/data_config.jsonl') + self.chainConfig = { + 'extractor_pipe': { + 'enable': True, + 'validate_input_format': False, + 'pre_extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.pre_extractor.TestHTMLFileFormatFilterPreExtractor', + 'class_init_kwargs': { + 'html_parent_dir': 'bench/' + } + }, + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.pre_extractor.HTMLFileFormatCleanTagsPreExtractor', + 'class_init_kwargs': {} + } + ], + 'extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.extractor.HTMLFileFormatExtractor', + 'class_init_kwargs': {} + } + ], + 'post_extractor': [ + { + 'enable': True, + 'python_class': 'llm_web_kit.extractor.html.post_extractor.ContentListStaticsPostExtractor' + } + ] + }, + } def test_st_bench(self): """测试run.py.""" @@ -46,23 +78,27 @@ def test_st_bench(self): output_path=output_path, ) - with open(self.sourcePath, 'r') as f: - files = json.load(f) - # files结构是{"filename":{"url":"","filepath":""}},获取filepath - for fileName in files: - filepath = files[fileName]['origin_filepath'] - page_layout_type = files[fileName]['layout_type'] + with open(self.pipeline_data_path, 'r') as f: + for line in f: + data_json = json.loads(line.strip()) + # files结构是{'filename': {'url': '', 'filepath': ''}},获取filepath + fileName = data_json.get('track_id') + groundtruth_filepath = os.path.join(self.root, f'bench/data/groundtruth/{fileName}.jsonl') summary.total += 1 - print(f'开始抽取:{filepath}...') - # TODO: code_5.html当前因代码有bug,导致抽取失败,先跳过 - if 'code_5.html' in filepath: - continue + print(f'开始抽取:{fileName}...') try: - output, content_list, main_html, statics = eval_ours_extract_html(self.pipelineConfigPath, self.pipeline_data_path, f'{self.root}/bench/data/{filepath}', page_layout_type) + output, content_list, statics = eval_ours_extract_html(self.chainConfig, data_json) + # 断言statics中的元素数量和groundtruth_filepath中的元素数量一致 + with open(groundtruth_filepath, 'r') as f: + groundtruth = json.loads(f.readline().strip()) + # 断言equation-interline, paragraph.equation-inline和list.equation-inline元素数一致 + self.assertEqual(statics.get('equation-interline'), groundtruth.get('statics', {}).get('equation-interline'), msg=f'{fileName}抽取equation-interline数量和groundtruth:{groundtruth_filepath}不一致') + self.assertEqual(statics.get('paragraph.equation-inline'), groundtruth.get('statics', {}).get('paragraph.equation-inline'), msg=f'{fileName}抽取paragraph.equation-inline数量和groundtruth:{groundtruth_filepath}不一致') + self.assertEqual(statics.get('list.equation-inline'), groundtruth.get('statics', {}).get('list.equation-inline'), msg=f'{fileName}抽取list.equation-inline数量和groundtruth:{groundtruth_filepath}不一致') except Exception as e: summary.error_summary['count'] += 1 detail.result_detail['error_result'].append(Error_Item( - file_path=filepath, + file_path=fileName, error_detail=str(e) )) summary.finish()